This is very preliminary documentation. These functions are about matrices
which define term orderings. They expect and return matrices over RingZZ
.
MakeTermOrdMat(ConstMatrixView M)
 produce a matrix (with nonneg
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.
MakeTermOrdMat(ConstMatrixView M, MachineInt GrDim)

Same as MakeTermOrdMat(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
(nontrivial)
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 nonzero 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 nonneg matrix.
IsTermOrdering
is essentially the same as testing IsPositiveGrading
on the whole matrix; this is what the impl does!
Doc is woefully incomplete.
2022
MakeTermOrd
has been renamed MakeTermOrdMat

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 CoCoA5)