sig
module Coeff : Scalar.S
type t
val of_list : (Monomial.t * Coeff.t) list -> Polynomial.S.t
val to_list : Polynomial.S.t -> (Monomial.t * Coeff.t) list
val zero : Polynomial.S.t
val one : Polynomial.S.t
val var : ?c:Coeff.t -> ?d:int -> int -> Polynomial.S.t
val const : Coeff.t -> Polynomial.S.t
val monomial : Monomial.t -> Polynomial.S.t
val mult_scalar : Coeff.t -> Polynomial.S.t -> Polynomial.S.t
val add : Polynomial.S.t -> Polynomial.S.t -> Polynomial.S.t
val sub : Polynomial.S.t -> Polynomial.S.t -> Polynomial.S.t
val mult : Polynomial.S.t -> Polynomial.S.t -> Polynomial.S.t
val power : Polynomial.S.t -> int -> Polynomial.S.t
exception Dimension_error
val compose : Polynomial.S.t -> Polynomial.S.t list -> Polynomial.S.t
val derive : Polynomial.S.t -> int -> Polynomial.S.t
val eval : Polynomial.S.t -> Coeff.t list -> Coeff.t
val compare : Polynomial.S.t -> Polynomial.S.t -> int
val nb_vars : Polynomial.S.t -> int
val degree : Polynomial.S.t -> int
val degree_list : Polynomial.S.t -> int list
val is_homogeneous : Polynomial.S.t -> bool
val is_var : Polynomial.S.t -> (Coeff.t * int * int) option
val is_const : Polynomial.S.t -> Coeff.t option
val is_monomial : Polynomial.S.t -> Monomial.t option
val ( ?? ) : int -> Polynomial.S.t
val ( ! ) : Coeff.t -> Polynomial.S.t
val ( *. ) : Coeff.t -> Polynomial.S.t -> Polynomial.S.t
val ( ~- ) : Polynomial.S.t -> Polynomial.S.t
val ( + ) : Polynomial.S.t -> Polynomial.S.t -> Polynomial.S.t
val ( - ) : Polynomial.S.t -> Polynomial.S.t -> Polynomial.S.t
val ( * ) : Polynomial.S.t -> Polynomial.S.t -> Polynomial.S.t
val ( / ) : Polynomial.S.t -> Coeff.t -> Polynomial.S.t
val ( /. ) : Coeff.t -> Coeff.t -> Polynomial.S.t
val ( ** ) : Polynomial.S.t -> int -> Polynomial.S.t
val pp : Stdlib.Format.formatter -> Polynomial.S.t -> unit
val pp_names :
string list -> Stdlib.Format.formatter -> Polynomial.S.t -> unit
val merge :
(Monomial.t -> Coeff.t option -> Coeff.t option -> Coeff.t option) ->
Polynomial.S.t -> Polynomial.S.t -> Polynomial.S.t
val fold :
(Monomial.t -> Coeff.t -> 'a -> 'a) -> Polynomial.S.t -> 'a -> 'a
end