Module type Ccx.S

type t
val empty : t
val empty_facts : unit -> r Sig_rel.facts
val add_fact : r Sig_rel.facts -> r Sig_rel.fact -> unit
val add_term : t -> r Sig_rel.facts -> Expr.t -> Explanation.t -> t * r Sig_rel.facts
val case_split : t -> for_model:bool -> Th_util.case_split list * t
val optimizing_objective : t -> Objective.Function.t -> Th_util.optimized_split option
val query : t -> Expr.t -> Th_util.answer
val new_terms : t -> AltErgoLib.Expr.Set.t
val class_of : t -> Expr.t -> AltErgoLib.Expr.Set.t
val are_equal : t -> Expr.t -> Expr.t -> init_terms:bool -> Th_util.answer
val are_distinct : t -> Expr.t -> Expr.t -> Th_util.answer
val cl_extract : t -> AltErgoLib.Expr.Set.t list
val term_repr : t -> Expr.t -> init_term:bool -> Expr.t
val get_union_find : t -> Uf.t
val assume_th_elt : t -> Expr.th_elt -> Explanation.t -> t
val theories_instances : do_syntactic_matching:bool -> (Matching_types.info AltErgoLib.Expr.Map.t * Expr.t list AltErgoLib.Expr.Map.t AltErgoLib.Symbols.Map.t) -> t -> (Expr.t -> Expr.t -> bool) -> t * Sig_rel.instances
val extract_concrete_model : prop_model:AltErgoLib.Expr.Set.t -> declared_ids:Id.typed list -> t -> Models.t