Module Polynomial.Rewrite

module Rewrite: sig .. end
Rewrite systems for multi-variate polynomials. A polynomial rewrite system consists of a set of polynomial rewrite rules m1 -> p1, ..., mn -> pn where each mi is a monomial, each pi is a polynomial, and such that mi is greater than any monomial in pi in some admissible order. An admissible order is a total order on monomial such that for all m, n, p, we have: 1. m <= n implies mp <= np 2. m <= mp

type t 
val pp : (Format.formatter -> int -> unit) ->
Format.formatter -> t -> unit
val mk_rewrite : (Polynomial.Monomial.t -> Polynomial.Monomial.t -> [ `Eq | `Gt | `Lt ]) ->
Polynomial.Mvp.t list -> t
Given an admissible order and a list of zero polynomials, orient the polynomials into a rewrite system. This generalizes Gauss-Jordan elimination, but (unlike Groebner basis computation) does not saturate the rewrite system with implied equations. Thus, it can only be used as a semi-test for membership in the ideal generated by the input polynomials.
val reduce_rewrite : t -> t
val grobner_basis : t -> t
Saturate a polynomial rewrite system with implied equalities
val reduce : t -> Polynomial.Mvp.t -> Polynomial.Mvp.t
Reduce a multi-variate polynomial using the given rewrite rules until no more rewrite rules apply
val preduce : t ->
Polynomial.Mvp.t -> Polynomial.Mvp.t * Polynomial.Mvp.t list
Reduce a multi-variate polynomial using the given rewrite rules until no more rewrite rules apply. Return both the reduced polynomial and the polynomials used during reduction.
val add_saturate : t -> Polynomial.Mvp.t -> t
Add a new zero-polynomial to a rewrite system and saturate
val generators : t -> Polynomial.Mvp.t list