(** Main API *) module Solver_intf = Solver_intf module type S = Solver_intf.S module type FORMULA = Solver_intf.FORMULA module type PLUGIN_CDCL_T = Solver_intf.PLUGIN_CDCL_T module type PROOF = Solver_intf.PROOF type lbool = Solver_intf.lbool = L_true | L_false | L_undefined module type SAT_STATE = Solver_intf.SAT_STATE type 'form sat_state = 'form Solver_intf.sat_state type ('formula, 'proof) reason = ('formula, 'proof) Solver_intf.reason = | Consequence of (unit -> 'formula list * 'proof) [@@unboxed] module type ACTS = Solver_intf.ACTS type ('formula, 'proof) acts = ('formula, 'proof) Solver_intf.acts type negated = Solver_intf.negated = Negated | Same_sign (** Print {!negated} values *) let pp_negated out = function | Negated -> Format.fprintf out "negated" | Same_sign -> Format.fprintf out "same-sign" (** Print {!lbool} values *) let pp_lbool out = function | L_true -> Format.fprintf out "true" | L_false -> Format.fprintf out "false" | L_undefined -> Format.fprintf out "undefined" exception No_proof = Solver_intf.No_proof module Solver = Solver module Make_cdcl_t = Solver.Make_cdcl_t module Make_pure_sat = Solver.Make_pure_sat