Package edu.jas.poly

Class TermOrder

  • All Implemented Interfaces:
    java.io.Serializable

    public final class TermOrder
    extends java.lang.Object
    implements java.io.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:
    Serialized Form
    • Constructor Detail

      • 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 Detail

      • 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.
      • equals

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

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

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

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

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

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

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

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

        public java.lang.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​(java.util.List<java.lang.Integer> P,
                                                  long[] a)
        Permutation of a long array.
        Parameters:
        a - array of long.
        P - permutation.
        Returns:
        P(a).
      • permutation

        public TermOrder permutation​(java.util.List<java.lang.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