module Monomial: sig
.. end
Monomials
type
t
type
dim = int
val pp : (Format.formatter -> int -> unit) ->
Format.formatter -> t -> unit
val mul : t -> t -> t
val one : t
val mul_term : dim ->
int -> t -> t
val singleton : dim -> int -> t
val power : dim -> t -> int
val enum : t -> (dim * int) BatEnum.t
val of_enum : (dim * int) BatEnum.t -> t
val equal : t -> t -> bool
val compare : t -> t -> int
val pivot : dim ->
t -> int * t
val div : t ->
t -> t option
val lcm : t -> t -> t
Least common multiple
Monomial orderings
val lex : t -> t -> [ `Eq | `Gt | `Lt ]
Lexicographic order
val deglex : t -> t -> [ `Eq | `Gt | `Lt ]
Compare by total degree, then lexicographic order
val degrevlex : t -> t -> [ `Eq | `Gt | `Lt ]
Compare by total degree, then reverse lexicographic order
val block : (dim -> bool) list ->
(t -> t -> [ `Eq | `Gt | `Lt ]) ->
t -> t -> [ `Eq | `Gt | `Lt ]
Given a list of *subsets* of dimensions p1, ..., pn
, a monomial m
can be considered as a list of monomials ("blocks") m1, ..., mn, m0
,
where each mi
contains the dimensions that belong to pi
(and not to
any lower i
), and m0 contains the dimensions not belonging to any pi.
Given a monomial ordering for comparing blocks, the block ordering is
the lexicographic ordering on monomials viewed as lists of blocks.
val term_of : 'a Syntax.context ->
(dim -> 'a Syntax.term) ->
t -> 'a Syntax.term