Package edu.jas.poly
Class TermOrder
- java.lang.Object
-
- edu.jas.poly.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
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
TermOrder.EVComparator
Comparator for ExpVectors.
-
Field Summary
Fields Modifier and Type Field Description static int
DEFAULT_EVORD
static int
GRLEX
static int
IGRLEX
static int
INVLEX
static int
ITDEGLEX
static int
LEX
static int
MAX_EVORD
static int
MIN_EVORD
static int
REVILEX
static int
REVITDEG
static int
REVITDG
static int
REVLEX
static int
REVTDEG
boolean
TOP
Termorders for modules: TOP or POT.
-
Constructor Summary
Constructors Constructor Description TermOrder()
Constructor for default term order.TermOrder(int evord)
Constructor for given term order.TermOrder(int ev1, int ev2, int r, int split)
Constructor for given split order.TermOrder(int ev1, int ev2, int r, int split, boolean top)
Constructor for given split order.TermOrder(long[] w)
Constructor for given exponent weights.TermOrder(long[][] w)
Constructor for given exponent weights.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description TermOrder
blockOrder(int s)
Create block term order at split index.TermOrder
blockOrder(int s, int len)
Create block term order at split index.TermOrder
blockOrder(int s, TermOrder t)
Create block term order at split index.TermOrder
blockOrder(int s, TermOrder t, int len)
Create block term order at split index.TermOrder
contract(int k, int len)
Contract variables.boolean
equals(java.lang.Object B)
Comparison with any other object.TermOrder
extend(int r, int k)
Extend variables.TermOrder
extend(int r, int k, boolean top)
Extend variables.TermOrder
extendLower(int r, int k)
Extend lower variables.TermOrder
extendLower(int r, int k, boolean top)
Extend lower variables.TermOrder.EVComparator
getAscendComparator()
Get the ascending order comparator.TermOrder.EVComparator
getDescendComparator()
Get the descending order comparator.int
getEvord()
Get the first defined order indicator.int
getEvord2()
Get the second defined order indicator.int
getSize()
Get the exponent vector size.int
getSplit()
Get the split index.TermOrder.EVComparator
getSugarComparator()
Get the sugar order comparator.long[][]
getWeight()
Get the weight array.int
hashCode()
Hash code.boolean
isSplit()
Test if this term order is a split order.static long[]
longArrayPermutation(java.util.List<java.lang.Integer> P, long[] a)
Permutation of a long array.TermOrder
permutation(java.util.List<java.lang.Integer> P)
Permutation of the termorder.TermOrder
reverse()
Reverse variables.TermOrder
reverse(boolean partial)
Reverse variables.static TermOrder
reverseWeight(long[][] w)
Weight TermOrder with reversed weight vectors.static int
revert(int evord)
Revert exponent order.java.lang.String
toScript()
String representation of TermOrder.java.lang.String
toScriptOrder(int ev)
Script and String representation of TermOrder name.java.lang.String
toScriptPlain()
Script representation of TermOrder without prefix and weight matrix.java.lang.String
toString()
String representation of TermOrder.java.lang.String
toStringPlain()
String representation of TermOrder without prefix and weight matrix.java.lang.String
weightToScript()
Script representation of weight matrix.java.lang.String
weightToString()
String representation of weight matrix.
-
-
-
Field Detail
-
LEX
public static final int LEX
- See Also:
- Constant Field Values
-
MIN_EVORD
public static final int MIN_EVORD
- See Also:
- Constant Field Values
-
INVLEX
public static final int INVLEX
- See Also:
- Constant Field Values
-
GRLEX
public static final int GRLEX
- See Also:
- Constant Field Values
-
IGRLEX
public static final int IGRLEX
- See Also:
- Constant Field Values
-
REVLEX
public static final int REVLEX
- See Also:
- Constant Field Values
-
REVILEX
public static final int REVILEX
- See Also:
- Constant Field Values
-
REVTDEG
public static final int REVTDEG
- See Also:
- Constant Field Values
-
REVITDG
public static final int REVITDG
- See Also:
- Constant Field Values
-
ITDEGLEX
public static final int ITDEGLEX
- See Also:
- Constant Field Values
-
REVITDEG
public static final int REVITDEG
- See Also:
- Constant Field Values
-
MAX_EVORD
public static final int MAX_EVORD
- See Also:
- Constant Field Values
-
DEFAULT_EVORD
public static final int DEFAULT_EVORD
- See Also:
- Constant Field Values
-
TOP
public final boolean TOP
Termorders for modules: TOP or POT. POT: position over term (default) TOP: term over position (new)
-
-
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.
-
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(java.lang.Object B)
Comparison with any other object.- Overrides:
equals
in classjava.lang.Object
- See Also:
Object.equals(java.lang.Object)
-
hashCode
public int hashCode()
Hash code.- Overrides:
hashCode
in classjava.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 classjava.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
-
-