sig
  type polynomial =
      FConst of float
    | Const of Numbers.num
    | Poly of string * (OrderedPoly.polynomial * int) list
  type t = OrderedPoly.polynomial
  exception Unmatched_variables
  val const : int -> OrderedPoly.polynomial
  val str : OrderedPoly.polynomial -> string
  val is_zero : OrderedPoly.polynomial -> bool
  val equal : OrderedPoly.polynomial -> OrderedPoly.polynomial -> bool
  val compare : OrderedPoly.polynomial -> OrderedPoly.polynomial -> int
  val var : OrderedPoly.polynomial -> string
  val lower : OrderedPoly.polynomial -> OrderedPoly.polynomial
  val constant_value : OrderedPoly.polynomial -> Numbers.num option
  val deg : OrderedPoly.polynomial -> int
  val leading_coeff : int -> OrderedPoly.polynomial -> OrderedPoly.polynomial
  val const_coeff : OrderedPoly.polynomial -> OrderedPoly.polynomial option
  val omit_leading : OrderedPoly.polynomial -> OrderedPoly.polynomial
  val multiple : int -> OrderedPoly.polynomial -> OrderedPoly.polynomial
  val multiple_num :
    Numbers.num -> OrderedPoly.polynomial -> OrderedPoly.polynomial
  val constant_factors :
    OrderedPoly.polynomial ->
    OrderedPoly.polynomial -> (Numbers.num * Numbers.num) option
  val add :
    OrderedPoly.polynomial ->
    OrderedPoly.polynomial -> OrderedPoly.polynomial
  val neg : OrderedPoly.polynomial -> OrderedPoly.polynomial
  val sub :
    OrderedPoly.polynomial ->
    OrderedPoly.polynomial -> OrderedPoly.polynomial
  val mul :
    OrderedPoly.polynomial ->
    OrderedPoly.polynomial -> OrderedPoly.polynomial
  val pow : OrderedPoly.polynomial -> int -> OrderedPoly.polynomial
  val div :
    ?allow_frac:bool ->
    OrderedPoly.polynomial ->
    OrderedPoly.polynomial -> OrderedPoly.polynomial
  val div_rest :
    ?allow_frac:bool ->
    OrderedPoly.polynomial ->
    OrderedPoly.polynomial -> OrderedPoly.polynomial * OrderedPoly.polynomial
  val diff : OrderedPoly.polynomial -> OrderedPoly.polynomial
  val modified_remainder :
    OrderedPoly.polynomial ->
    OrderedPoly.polynomial -> OrderedPoly.polynomial
end