sig
  module TermPolynomial :
    sig
      type 'a polynomial_context
      type 'a t
      val mk_context :
        'Syntax.context -> 'SrkSimplify.TermPolynomial.polynomial_context
      val of_term :
        'SrkSimplify.TermPolynomial.polynomial_context ->
        'Syntax.term -> 'SrkSimplify.TermPolynomial.t
      val term_of :
        'SrkSimplify.TermPolynomial.polynomial_context ->
        'SrkSimplify.TermPolynomial.t -> 'Syntax.term
    end
  val simplify_terms_rewriter : 'Syntax.context -> 'Syntax.rewriter
  val simplify_terms :
    'Syntax.context -> ('a, 'b) Syntax.expr -> ('a, 'b) Syntax.expr
  val purify :
    'Syntax.context ->
    'Syntax.formula ->
    'Syntax.formula * ('a, Syntax.typ_fo) Syntax.expr Syntax.Symbol.Map.t
  val partition_implicant :
    'Syntax.formula list -> 'Syntax.formula list list
end