sig
type t
type dim = Monomial.t
type scalar = QQ.t
val equal : t -> t -> bool
val add : t -> t -> t
val scalar_mul : scalar -> t -> t
val negate : t -> t
val dot : t -> t -> scalar
val zero : t
val is_zero : t -> bool
val add_term : scalar -> dim -> t -> t
val of_term : scalar -> dim -> t
val enum : t -> (scalar * dim) BatEnum.t
val of_enum : (scalar * dim) BatEnum.t -> t
val of_list : (scalar * dim) list -> t
val coeff : dim -> t -> scalar
val pivot : dim -> t -> scalar * t
val pp : (Format.formatter -> int -> unit) -> Format.formatter -> t -> unit
val compare : t -> t -> int
val mul : t -> t -> t
val sub : t -> t -> t
val one : t
val scalar : QQ.t -> t
val of_dim : Polynomial.Monomial.dim -> t
val of_vec : ?const:int -> Linear.QQVector.t -> t
val split_linear : ?const:int -> t -> Linear.QQVector.t * t
val vec_of : ?const:int -> t -> Linear.QQVector.t option
val term_of :
'a Syntax.context ->
(Polynomial.Monomial.dim -> 'a Syntax.term) -> t -> 'a Syntax.term
val exp : t -> int -> t
val substitute : (Polynomial.Monomial.dim -> t) -> t -> t
val div_monomial : t -> Polynomial.Monomial.t -> t option
val dimensions : t -> int BatEnum.t
end