User Documentation
This is very preliminary documentation. These functions are about matrices
which define term orderings. They expect and return matrices over RingZZ
.
Examples
PseudoConstructors
MakeTermOrdMat(ConstMatrixView M)
-- produce a matrix (with non-neg integer entries and having same number of columns asM
) which defines a term ordering refining the partial ordering defined by the input matrixM
; error if this cannot be done.MakeTermOrdMat(ConstMatrixView M, MachineInt GrDim)
-- Same asMakeTermOrdMat(M)
except that the firstGrDim
rows of the output matrix are equal to the firstGrDim
rows ofM
.LexMat(MachineInt n)
returns aConstMatrix
for "lex" orderingStdDegLexMat(MachineInt n)
returns aConstMatrix
for "DegLex" orderingStdDegRevLexMat(MachineInt n)
returns aConstMatrix
for "DegRevLex" orderigXelMat(MachineInt n)
returns aConstMatrix
for "Xel" orderingRevLexMat(MachineInt n)
returns aConstMatrix
for "RevLex" ordering (not a term order!)ElimMat(IndetsToElim, NumIndets)
-- returns a matrix defining an elimination ordering forIndetsToElim
.ElimMat(IndetsToElim, GradingM)
-- returns a matrix defining an elimination ordering forIndetsToElim
compatible with the grading inGradingM
.ElimHomogMat(IndetsToElim, GradingM)
-- returns a matrix defining an elimination ordering forIndetsToElim
with the added knowledge that it will be used with an ideal homogeneous wrtGradingM
(non-trivial)
Queries
Let M
be a matrix over RingZZ
or RingQQ
with integer entries.
IsTermOrdering(M)
-- true iff matrixM
defines a term orderingIsPositiveGrading(M)
-- true iffM
defines a positive grading (i.e. no null columns and first non-zero entry in each column is positive)
Maintainer Documentation
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!
Bugs, Shortcomings, and other ideas
Doc is woefully incomplete.
Main changes
2022
- Feb (v0.99720):
MakeTermOrd
has been renamedMakeTermOrdMat
- 2019
- Sep (v0.99602):
IsNonNegGrading(M)
is now hidden in anonymous namespace - 2016
- Sep (v0.9944):
- old
HomogElimMat
has been renamedElimHomogMat
- 2015
- old
- Nov (v0.9940):
- new impls for
LexMat
,XelMat
,RevLexMat
,StdDegLexMat
andStdDegRevLexMat
(names are now coherent with their counterparts in CoCoA-5) - replaced several "complete-to-order" fns by a single fn. - 2009
- new impls for
- Sept: Naming convention noq respected ("Matrix" should have been "Mat")