type ty = T.Ty.ttype term = T.Term.ttype term_store = T.Term.storetype ty_store = T.Ty.storetype proof = prooftype dproof = proof -> unit
type t = Sidekick_smt_solver.Make(Solver_arg).Solver_internal.ttype solver = t
val tst : t -> term_storeval ty_st : t -> ty_storeval stats : t -> Sidekick_util.Stat.tval with_proof : t -> (proof -> unit) -> unit
type theory_actions = Sidekick_smt_solver.Make(Solver_arg).Solver_internal.theory_actionstype lit = Lit.t
val define_const : t -> const:term -> rhs:term -> unit
val cc : t -> CC.t
type simplify_hook = Simplify.hook
val add_simplifier : t -> Simplify.hook -> unitval simplifier : t -> Simplify.tval simplify_t : t -> term -> term optionval simp_t : t -> term -> term
type preprocess_actions = (module PREPROCESS_ACTS)type preprocess_hook = t -> preprocess_actions -> term -> term option
val on_preprocess : t -> preprocess_hook -> unitval preprocess_acts_of_acts : t -> theory_actions -> preprocess_actionsval raise_conflict : t -> theory_actions -> lit list -> dproof -> 'aval push_decision : t -> theory_actions -> lit -> unitval propagate : t -> theory_actions -> lit -> reason:(unit -> lit list * dproof) -> unitval propagate_l : t -> theory_actions -> lit -> lit list -> dproof -> unitval add_clause_temp : t -> theory_actions -> lit list -> dproof -> unitval add_clause_permanent : t -> theory_actions -> lit list -> dproof -> unitval mk_lit : t -> theory_actions -> ?sign:bool -> term -> litval preprocess_term : t -> preprocess_actions -> term -> termval add_lit : t -> theory_actions -> ?default_pol:bool -> lit -> unitval add_lit_t : t -> theory_actions -> ?sign:bool -> term -> unitval cc_raise_conflict_expl : t -> theory_actions -> CC.Expl.t -> 'aval cc_find : t -> CC.N.t -> CC.N.tval cc_are_equal : t -> term -> term -> boolval cc_merge : t -> theory_actions -> CC.N.t -> CC.N.t -> CC.Expl.t -> unitval cc_merge_t : t -> theory_actions -> term -> term -> CC.Expl.t -> unitval cc_add_term : t -> term -> CC.N.tval cc_mem_term : t -> term -> boolval on_cc_pre_merge : t -> (CC.t -> theory_actions -> CC.N.t -> CC.N.t -> CC.Expl.t -> unit) -> unitval on_cc_post_merge : t -> (CC.t -> theory_actions -> CC.N.t -> CC.N.t -> unit) -> unitval on_cc_new_term : t -> (CC.t -> CC.N.t -> term -> unit) -> unitval on_cc_is_subterm : t -> (CC.N.t -> term -> unit) -> unitval on_cc_conflict : t -> (CC.t -> th:bool -> lit list -> unit) -> unitval on_cc_propagate : t -> (CC.t -> lit -> (unit -> lit list * dproof) -> unit) -> unitval on_partial_check : t -> (t -> theory_actions -> lit Iter.t -> unit) -> unitval on_final_check : t -> (t -> theory_actions -> lit Iter.t -> unit) -> unit
type model_hook = recurse:(t -> CC.N.t -> term) -> t -> CC.N.t -> term option
val on_model_gen : t -> model_hook -> unit