This is very preliminary documentation. These functions are about matrices
which define term orderings. They expect and return matrices over RingZZ.
MakeTermOrd(ConstMatrixView M) -- produce a matrix (with non-neg
integer entries and having same number of columns as M) which
defines a term ordering refining the partial ordering defined by the
input matrix M; error if this cannot be done.
MakeTermOrd(ConstMatrixView M, MachineInt GrDim) --
Same as MakeTermOrd(M) except that the first GrDim rows of the
output matrix are equal to the first GrDim rows of M.
LexMat(MachineInt n) returns a ConstMatrix for "lex" ordering
StdDegLexMat(MachineInt n) returns a ConstMatrix for "DegLex" ordering
StdDegRevLexMat(MachineInt n) returns a ConstMatrix for "DegRevLex" orderig
XelMat(MachineInt n) returns a ConstMatrix for "Xel" ordering
RevLexMat(MachineInt n) returns a ConstMatrix for "RevLex" ordering (not a term order!)
ElimMat(IndetsToElim, NumIndets) -- returns a matrix defining
an elimination ordering for IndetsToElim.
ElimMat(IndetsToElim, GradingM) -- returns a matrix defining
an elimination ordering for IndetsToElim compatible with the grading in GradingM.
ElimHomogMat(IndetsToElim, GradingM) -- returns a matrix defining
an elimination ordering for IndetsToElim with the added knowledge
that it will be used with an ideal homogeneous wrt GradingM (non-trivial)
Let M be a matrix over RingZZ or RingQQ with integer entries.
IsTermOrdering(M) -- true iff matrix M defines a term ordering
IsPositiveGrading(M) -- true iff M defines a positive grading
(i.e. no null columns and first non-zero entry in each column is positive)
The impl for LexMat is trivial: it is just an IdentityMat.
Now that ConstMatrix is available, the impls for XelMatImpl,
RevLexImpl, StdDegLex and StdDegRevLex are quite
straightforward (but a bit lengthy).
Currently we use the "sparse" matrix for StdDevRevLex; we may later
change it to the non-neg matrix.
IsTermOrdering is essentially the same as testing IsPositiveGrading
on the whole matrix; this is what the impl does!
Doc is woefully incomplete.
2019
IsNonNegGrading(M) is now hidden in anonymous namespace
-
2016
HomogElimMat has been renamed ElimHomogMat
-
2015
LexMat, XelMat, RevLexMat, StdDegLexMat and StdDegRevLexMat (names are now coherent with their counterparts in CoCoA-5)
2009