Class TermOrder

java.lang.Object
edu.jas.poly.TermOrder
All Implemented Interfaces:
Serializable

public final class TermOrder extends Object implements Serializable
Term order class for ordered polynomials. Implements the most used term orders: graded, lexicographical, weight array and block orders. For the definitions see for example the articles Kredel "Admissible term orderings used in computer algebra systems" and Sit, "Some comments on term-ordering in Gröbner basis computations". Note: the naming is not quite easy to understand: in case of doubt use the term orders with "I" in the name, like IGRLEX (the default) or INVLEX. Not all algorithms may work with all term orders since not all are well-founded, so watch your step. This class does not implement orders by linear forms over Q[t]. Objects of this class are immutable.
Author:
Heinz Kredel
See Also:
  • Field Details

  • Constructor Details

    • TermOrder

      public TermOrder()
      Constructor for default term order.
    • TermOrder

      public TermOrder(int evord)
      Constructor for given term order.
      Parameters:
      evord - requested term order indicator / enumerator.
    • TermOrder

      public TermOrder(long[] w)
      Constructor for given exponent weights.
      Parameters:
      w - weight vector of longs.
    • TermOrder

      public TermOrder(long[][] w)
      Constructor for given exponent weights.
      Parameters:
      w - weight array of longs.
    • TermOrder

      public TermOrder(int ev1, int ev2, int r, int split)
      Constructor for given split order.
      Parameters:
      ev1 - requested term order indicator for first block.
      ev2 - requested term order indicator for second block.
      r - max number of exponents to compare.
      split - index.
    • TermOrder

      public TermOrder(int ev1, int ev2, int r, int split, boolean top)
      Constructor for given split order.
      Parameters:
      ev1 - requested term order indicator for first block.
      ev2 - requested term order indicator for second block.
      r - max number of exponents to compare.
      split - index.
      top - module termorder, if true, default false.
  • Method Details

    • isSplit

      public boolean isSplit()
      Test if this term order is a split order.
      Returns:
      true if this is a split term order, else false.
    • blockOrder

      public TermOrder blockOrder(int s)
      Create block term order at split index.
      Parameters:
      s - split index.
      Returns:
      block TermOrder with split index.
    • blockOrder

      public TermOrder blockOrder(int s, int len)
      Create block term order at split index.
      Parameters:
      s - split index.
      len - length of ExpVectors to compare
      Returns:
      block TermOrder with split index.
    • blockOrder

      public TermOrder blockOrder(int s, TermOrder t)
      Create block term order at split index.
      Parameters:
      s - split index.
      t - second term order.
      Returns:
      block TermOrder with split index.
    • blockOrder

      public TermOrder blockOrder(int s, TermOrder t, int len)
      Create block term order at split index.
      Parameters:
      s - split index.
      t - second term order.
      len - length of ExpVectors to compare
      Returns:
      block TermOrder with split index.
    • getEvord

      public int getEvord()
      Get the first defined order indicator.
      Returns:
      evord.
    • getEvord2

      public int getEvord2()
      Get the second defined order indicator.
      Returns:
      evord2.
    • getSplit

      public int getSplit()
      Get the split index.
      Returns:
      split.
    • getSize

      public int getSize()
      Get the exponent vector size. Note: can be INTEGER.MAX_VALUE.
      Returns:
      size.
    • getWeight

      public long[][] getWeight()
      Get the weight array.
      Returns:
      weight.
    • getDescendComparator

      public TermOrder.EVComparator getDescendComparator()
      Get the descending order comparator. Sorts the highest terms first.
      Returns:
      horder.
    • getAscendComparator

      public TermOrder.EVComparator getAscendComparator()
      Get the ascending order comparator. Sorts the lowest terms first.
      Returns:
      lorder.
    • getSugarComparator

      public TermOrder.EVComparator getSugarComparator()
      Get the sugar order comparator. Sorts the graded lowest terms first.
      Returns:
      sugar.
    • equals

      public boolean equals(Object B)
      Comparison with any other object.
      Overrides:
      equals in class Object
      See Also:
    • hashCode

      public int hashCode()
      Hash code.
      Overrides:
      hashCode in class Object
      See Also:
    • weightToString

      public String weightToString()
      String representation of weight matrix.
      Returns:
      string representation of weight matrix.
    • weightToScript

      public String weightToScript()
      Script representation of weight matrix.
      Returns:
      script representation of weight matrix.
    • toScript

      public String toScript()
      String representation of TermOrder.
      Returns:
      script representation of TermOrder.
    • toString

      public String toString()
      String representation of TermOrder.
      Overrides:
      toString in class Object
      See Also:
    • toStringPlain

      public String toStringPlain()
      String representation of TermOrder without prefix and weight matrix.
    • toScriptPlain

      public String toScriptPlain()
      Script representation of TermOrder without prefix and weight matrix.
    • toScriptOrder

      public String toScriptOrder(int ev)
      Script and String representation of TermOrder name.
    • extend

      public TermOrder extend(int r, int k)
      Extend variables. Used e.g. in module embedding. Extend TermOrder by k elements. Note: Use POT module term order.
      Parameters:
      r - current number of variables.
      k - number of variables to extend.
      Returns:
      extended TermOrder.
    • extend

      public TermOrder extend(int r, int k, boolean top)
      Extend variables. Used e.g. in module embedding. Extend TermOrder by k elements. Note: Now TOP and POT orders are distinguished.
      Parameters:
      r - current number of variables.
      k - number of variables to extend.
      top - true for TOP term order, false for POT term order.
      Returns:
      extended TermOrder.
    • extendLower

      public TermOrder extendLower(int r, int k)
      Extend lower variables. Extend TermOrder by k elements. Note: Use POT module term order.
      Parameters:
      r - current number of variables.
      k - number of variables to extend.
      Returns:
      extended TermOrder.
    • extendLower

      public TermOrder extendLower(int r, int k, boolean top)
      Extend lower variables. Extend TermOrder by k elements. Note: Now TOP and POT orders are distinguished.
      Parameters:
      r - current number of variables.
      k - number of variables to extend.
      top - true for TOP term order, false for POT term order.
      Returns:
      extended TermOrder.
    • contract

      public TermOrder contract(int k, int len)
      Contract variables. Used e.g. in module embedding. Contract TermOrder to non split status.
      Parameters:
      k - position of first element to be copied.
      len - new length.
      Returns:
      contracted TermOrder.
    • reverse

      public TermOrder reverse()
      Reverse variables. Used e.g. in opposite rings.
      Returns:
      TermOrder for reversed variables.
    • reverse

      public TermOrder reverse(boolean partial)
      Reverse variables. Used e.g. in opposite rings.
      Parameters:
      partial - true for partially reversed term orders.
      Returns:
      TermOrder for reversed variables.
    • revert

      public static int revert(int evord)
      Revert exponent order. Used e.g. in opposite rings.
      Parameters:
      evord - exponent order to be reverted.
      Returns:
      reverted exponent order.
    • longArrayPermutation

      public static long[] longArrayPermutation(List<Integer> P, long[] a)
      Permutation of a long array.
      Parameters:
      P - permutation.
      a - array of long.
      Returns:
      P(a).
    • permutation

      public TermOrder permutation(List<Integer> P)
      Permutation of the termorder.
      Parameters:
      P - permutation.
      Returns:
      P(a).
    • reverseWeight

      public static TermOrder reverseWeight(long[][] w)
      Weight TermOrder with reversed weight vectors.
      Parameters:
      w - weight matrix
      Returns:
      TermOrder with reversed weight vectors