Module Polynomial.Monomial

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