Module Internal.Make_pure_sat
Parameters
Signature
module Term : sig ... endmodule Formula : sig ... endmodule Value : sig ... endtype term= Term.ttype formula= Formula.ttype theory= unittype lemma= Plugin.prooftype value= Value.ttype lit={lid : int;term : term;mutable l_level : int;mutable l_idx : int;mutable l_weight : float;mutable assigned : value option;}type var={vid : int;pa : atom;na : atom;mutable v_fields : int;mutable v_level : int;mutable v_idx : int;position in heap
mutable v_weight : float;Weight (for the heap), tracking activity
mutable v_assignable : lit list option;mutable reason : reason option;}and atom={aid : int;var : var;neg : atom;lit : formula;mutable is_true : bool;watched : clause Msat.Vec.t;}and clause={cid : int;atoms : atom array;mutable cpremise : premise;mutable activity : float;mutable flags : int;}and reason=|Decision|Bcp of clause|Bcp_lazy of clause lazy_t|Semanticand premise=|Hyp of lemma|Local|Lemma of lemma|History of clause list|Empty_premisetype elt=|E_lit of lit|E_var of vartype trail_elt=|Lit of lit|Atom of atom
module MF : sig ... endmodule MT : sig ... endtype st={t_map : lit MT.t;f_map : var MF.t;vars : elt Msat.Vec.t;mutable cpt_mk_var : int;mutable cpt_mk_clause : int;}
val create_st : ?size:[< `Big | `Small | `Tiny Big ] -> unit -> stval nb_elt : st -> intval get_elt : st -> int -> eltval iter_elt : st -> (elt -> unit) -> unitval name_of_clause : clause -> string
module Lit : sig ... endmodule Var : sig ... endmodule Atom : sig ... endmodule Elt : sig ... endmodule Trail_elt : sig ... endmodule Clause : sig ... endmodule Proof : sig ... endtype proof= Proof.t
module H : sig ... endexceptionE_satexceptionE_unsat of unsat_causeexceptionUndecidedLitexceptionRestartexceptionConflict of clause
val error : intval warn : intval info : intval debug : intval var_decay : floatval clause_decay : floatval restart_inc : floatval learntsize_inc : float
type t={st : st;th : theory;store_proof : bool;clauses_hyps : clause Msat.Vec.t;clauses_learnt : clause Msat.Vec.t;clauses_to_add : clause Msat.Vec.t;mutable unsat_at_0 : clause option;mutable next_decision : atom option;trail : trail_elt Msat.Vec.t;elt_levels : int Msat.Vec.t;mutable assumptions : atom Msat.Vec.t;mutable th_head : int;mutable elt_head : int;order : H.t;to_clear : var Msat.Vec.t;mutable var_incr : float;mutable clause_incr : float;}type solver= t
val restart_first : intval learntsize_factor : floatval create_ : st:st -> store_proof:bool -> theory -> tval create : ?store_proof:bool -> ?size:[< `Big | `Small | `Tiny Big ] -> theory -> tval st : t -> stval nb_clauses : t -> intval decision_level : t -> intval check_unsat_ : t -> unitval iter_sub : (lit -> unit) -> var -> unitval mk_atom_mcsat_ : t -> atom -> unitval mk_atom : t -> formula -> atomval insert_elt_order : t -> elt -> unitval insert_var_order : t -> var -> unitval insert_subterms_order : t -> var -> unitval make_term : t -> term -> unitval make_atom : t -> formula -> atomval var_decay_activity : t -> unitval clause_decay_activity : t -> unitval var_bump_activity_aux : t -> var -> unitval lit_bump_activity_aux : t -> lit -> unitval var_bump_activity : t -> var -> unitval clause_bump_activity : t -> clause -> unit
val arr_to_list : 'a array -> int -> 'a listval eliminate_duplicates : clause -> clauseval partition : atom array -> atom list * clause listval new_decision_level : t -> unitval attach_clause : clause -> unitval cancel_until : t -> int -> unitval pp_unsat_cause : Format.formatter -> unsat_cause -> unitval report_unsat : t -> unsat_cause -> 'aval simpl_reason : reason -> reasonval enqueue_bool : t -> atom -> level:int -> reason -> unitval enqueue_semantic : t -> atom -> term list -> unitval enqueue_assign : t -> lit -> value -> int -> unitval swap_arr : 'a array -> int -> int -> unitval put_high_level_atoms_first : atom array -> unitval th_eval : t -> atom -> bool optionval backtrack_lvl : 'a -> atom array -> int * bool
type conflict_res={cr_backtrack_lvl : int;cr_learnt : atom array;cr_history : clause list;cr_is_uip : bool;}
val get_atom : t -> int -> atomval analyze : t -> clause -> conflict_resval record_learnt_clause : t -> clause -> conflict_res -> unitval add_boolean_conflict : t -> clause -> unitval add_clause_to_vec : t -> clause -> unitval add_clause_ : t -> clause -> unitval flush_clauses_ : t -> unitval flush_clauses : t -> unit
val propagate_in_clause : t -> atom -> clause -> int -> watch_resval propagate_atom : t -> atom -> unitval create_atom : t -> formula -> atom
exceptionTh_conflict of Clause.t
val slice_get : t -> int -> (term, formula, value) Msat.Solver_intf.assumptionval acts_add_clause : t -> ?keep:bool -> formula list -> lemma -> unitval acts_raise : t -> formula list -> lemma -> 'aval check_consequence_lits_false_ : atom list -> unitval acts_propagate : t -> formula -> (term, formula, lemma) Msat.Solver_intf.reason -> unitval acts_iter : t -> full:bool -> int -> ((term, formula, value) Msat.Solver_intf.assumption -> unit) -> unitval eval_atom_ : atom -> Msat.Solver_intf.lboolval acts_eval_lit : t -> formula -> Msat.Solver_intf.lboolval acts_mk_lit : t -> formula -> unitval acts_mk_term : t -> term -> unitval current_slice : t -> (term, formula, value, lemma) Msat.Solver_intf.actsval full_slice : t -> (term, formula, value, lemma) Msat.Solver_intf.actsval check_is_conflict_ : Clause.t -> unitval theory_propagate : t -> clause optionval propagate : t -> clause optionval analyze_final : t -> atom -> atom listval reduce_db : t -> int -> unitval pick_branch_aux : t -> atom -> unitval pick_branch_lit : t -> unitval search : t -> int -> int -> unitval eval_level : t -> atom -> bool * intval eval : t -> atom -> boolval unsat_conflict : t -> clause optionval model : t -> (term * value) listval solve_ : t -> unitval assume : t -> formula list list -> lemma -> unitval check_clause : clause -> boolval check_vec : clause Msat.Vec.t -> boolval check : t -> boolval theory : t -> theoryval hyps : t -> clause Msat.Vec.tval history : t -> clause Msat.Vec.tval trail : t -> trail_elt Msat.Vec.t
type res=|Sat of (term, Formula.t, value) Msat.Solver_intf.sat_state|Unsat of (atom, clause, Proof.t) Msat.Solver_intf.unsat_state
val pp_all : t -> int -> string -> unitval mk_sat : t -> (Term.t, Formula.t, value) Msat.Solver_intf.sat_stateval mk_unsat : t -> unsat_cause -> (atom, clause, clause) Msat.Solver_intf.unsat_stateval add_clause_a : t -> atom array -> lemma -> unitval add_clause : t -> atom list -> lemma -> unitval solve : ?assumptions:atom list -> t -> resval true_at_level0 : t -> atom -> boolval eval_atom : 'a -> atom -> Msat.Solver_intf.lboolval export : t -> clause Msat.Solver_intf.export