Package edu.jas.poly

Class Word

java.lang.Object
edu.jas.poly.Word
All Implemented Interfaces:
Element<Word>, MonoidElem<Word>, Serializable, Comparable<Word>

public final class Word extends Object implements MonoidElem<Word>
Word implements strings of letters for polynomials.
See Also:
  • Field Details

    • mono

      public final WordFactory mono
      Defining alphabet in WordFactory.
    • val

      final String val
      The data structure is a String of characters.
    • hash

      protected int hash
      Stored hash code.
  • Constructor Details

    • Word

      public Word(WordFactory m)
      Constructor for Word.
      Parameters:
      m - factory for words.
    • Word

      public Word(WordFactory m, String s)
      Constructor for Word.
      Parameters:
      m - factory for words.
      s - String
    • Word

      public Word(WordFactory m, String s, boolean translate)
      Constructor for Word.
      Parameters:
      m - factory for words.
      s - String
      translate - indicator if s needs translation
  • Method Details

    • factory

      public MonoidFactory<Word> factory()
      Get the corresponding element factory.
      Specified by:
      factory in interface Element<Word>
      Returns:
      factory for this Element.
      See Also:
    • copy

      public Word copy()
      Copy this.
      Specified by:
      copy in interface Element<Word>
      Returns:
      copy of this.
    • getVal

      String getVal()
      Get the word String.
      Returns:
      val.
    • getVal

      public char getVal(int i)
      Get the letter at position i.
      Parameters:
      i - position.
      Returns:
      val[i].
    • length

      public int length()
      Get the length of this word.
      Returns:
      val.length.
    • toString

      public String toString()
      Get the string representation.
      Overrides:
      toString in class Object
      See Also:
    • toScript

      public String toScript()
      Get a scripting compatible string representation.
      Specified by:
      toScript in interface Element<Word>
      Returns:
      script compatible representation for this Element.
      See Also:
    • toScriptFactory

      public String toScriptFactory()
      Get a scripting compatible string representation of the factory.
      Specified by:
      toScriptFactory in interface Element<Word>
      Returns:
      script compatible representation for this ElemFactory.
      See Also:
    • equals

      public boolean equals(Object B)
      Comparison with any other object.
      Specified by:
      equals in interface Element<Word>
      Overrides:
      equals in class Object
      Parameters:
      B -
      Returns:
      true if this is equal to b, else false.
      See Also:
    • hashCode

      public int hashCode()
      hashCode.
      Specified by:
      hashCode in interface Element<Word>
      Overrides:
      hashCode in class Object
      Returns:
      the hashCode.
      See Also:
    • isONE

      public boolean isONE()
      Is Word one.
      Specified by:
      isONE in interface MonoidElem<Word>
      Returns:
      If this is the empty word then true is returned, else false.
    • isUnit

      public boolean isUnit()
      Is Word unit.
      Specified by:
      isUnit in interface MonoidElem<Word>
      Returns:
      If this is a unit then true is returned, else false.
    • multiply

      public Word multiply(Word V)
      Word multiplication.
      Specified by:
      multiply in interface MonoidElem<Word>
      Parameters:
      V - other word.
      Returns:
      this * V.
    • divide

      public Word divide(Word V)
      Word divide.
      Specified by:
      divide in interface MonoidElem<Word>
      Parameters:
      V - other word.
      Returns:
      this / V.
    • divideLeft

      public Word divideLeft(Word V)
      Word divide left.
      Parameters:
      V - other word.
      Returns:
      this / V = left, with left * V = this.
    • divideRight

      public Word divideRight(Word V)
      Word divide right.
      Parameters:
      V - other word.
      Returns:
      this / V = right, with V * right = this.
    • divideWord

      public Word[] divideWord(Word V)
      Word divide with prefix and suffix.
      Parameters:
      V - other word.
      Returns:
      [left,right] with left * V * right = this.
    • divideWord

      public Word[] divideWord(Word V, boolean first)
      Word divide with prefix and suffix.
      Parameters:
      V - other word.
      first - is true for first index, false for last index.
      Returns:
      [left,right] with left * V * right = this.
    • remainder

      public Word remainder(Word V)
      Word remainder.
      Specified by:
      remainder in interface MonoidElem<Word>
      Parameters:
      V - other word.
      Returns:
      this - (this/V). Note: not useful.
    • quotientRemainder

      public Word[] quotientRemainder(Word S)
      Quotient and remainder by division of this by S.
      Specified by:
      quotientRemainder in interface MonoidElem<Word>
      Parameters:
      S - a Word
      Returns:
      [this/S, this - (this/S)*S]. Note: not useful.
    • inverse

      public Word inverse()
      Word inverse.
      Specified by:
      inverse in interface MonoidElem<Word>
      Returns:
      1 / this.
    • signum

      public int signum()
      Word signum.
      Returns:
      0 if this is one, 1 if it is non empty.
    • degree

      public long degree()
      Word degree.
      Returns:
      total degree of all letters.
    • dependencyOnVariables

      public SortedMap<String,Integer> dependencyOnVariables()
      Word dependency on letters.
      Returns:
      sorted map of letters and the number of its occurrences.
    • histogram

      public static SortedMap<String,Integer> histogram(String v)
      String dependency on letters.
      Parameters:
      v - string.
      Returns:
      sorted map of letters and the number of its occurrences.
    • leadingExpVector

      public ExpVector leadingExpVector()
      Word leading exponent vector.
      Returns:
      an ExpVector for the first power of a letter.
    • reductum

      public Word reductum()
      Word without leading exponent vector.
      Returns:
      an Word without the first power of a letter.
    • multipleOf

      public boolean multipleOf(Word V)
      Word multiple test.
      Parameters:
      V - other word.
      Returns:
      true if this is a multiple of V, else false.
    • divides

      public boolean divides(Word V)
      Word divides test.
      Parameters:
      V - other word.
      Returns:
      true if this divides V, else false.
    • compareTo

      public int compareTo(Word V)
      Word compareTo. Uses String.compareTo.
      Specified by:
      compareTo in interface Comparable<Word>
      Specified by:
      compareTo in interface Element<Word>
      Parameters:
      V - other word.
      Returns:
      0 if U == V, -1 if U < V, 1 if U > V.
    • gradCompareTo

      public int gradCompareTo(Word V)
      Word graded comparison. Compares first be degree, then lexicographical.
      Parameters:
      V - other word.
      Returns:
      0 if U == V, -1 if U < V, 1 if U > V.
    • gradInvlexCompareTo

      public int gradInvlexCompareTo(Word V)
      Word graded comparison. Compares first be degree, then inverse lexicographical.
      Parameters:
      V - other word.
      Returns:
      0 if U == V, -1 if U < V, 1 if U > V.
    • isOverlap

      public boolean isOverlap(Overlap ol, Word V)
      Is word overlap.
      Parameters:
      ol - = [l1,r1,l2,r2] an Overlap container of four words
      V - word
      Returns:
      true if l1 * this * r1 = l2 * V * r2, else false.
    • overlap

      public OverlapList overlap(Word V)
      Word overlap list.
      Parameters:
      V - other word.
      Returns:
      list of overlaps [l1,r1,l2,r2] with l1 * this * r1 = l2 * V * r2. If no such overlaps exist the empty overlap list is returned.
    • lcm

      public Word lcm(Word V)
      Word pseudo least common multiple.
      Parameters:
      V - other word.
      Returns:
      w = l1*this*r1, with l1*this*r1 == l2*V*r2, if l1, r1, l2, r2 exist, else null is returned.