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 firstGrDimrows of the output matrix are equal to the firstGrDimrows ofM.LexMat(MachineInt n)returns aConstMatrixfor "lex" orderingStdDegLexMat(MachineInt n)returns aConstMatrixfor "DegLex" orderingStdDegRevLexMat(MachineInt n)returns aConstMatrixfor "DegRevLex" orderigXelMat(MachineInt n)returns aConstMatrixfor "Xel" orderingRevLexMat(MachineInt n)returns aConstMatrixfor "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 forIndetsToElimcompatible with the grading inGradingM.ElimHomogMat(IndetsToElim, GradingM)-- returns a matrix defining an elimination ordering forIndetsToElimwith 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 matrixMdefines a term orderingIsPositiveGrading(M)-- true iffMdefines 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):
MakeTermOrdhas been renamedMakeTermOrdMat- 2019
- Sep (v0.99602):
IsNonNegGrading(M)is now hidden in anonymous namespace - 2016
- Sep (v0.9944):
- old
HomogElimMathas been renamedElimHomogMat- 2015
- old
- Nov (v0.9940):
- new impls for
LexMat,XelMat,RevLexMat,StdDegLexMatandStdDegRevLexMat(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")