sig
  val init : (Smt_sig.S.Symbol.t * Smt_sig.S.Type.t) list -> unit
  val close : unit -> unit
  val assign_constr : Smt_sig.S.Symbol.t -> Hstring.t -> unit
  val assign_var : Smt_sig.S.Symbol.t -> Smt_sig.S.Symbol.t -> unit
  val print : unit -> unit
  val get_variants : Smt_sig.S.Symbol.t -> Hstring.HSet.t
end