Module Process.Solver
module A : Sidekick_core.TERM_PROOF with type Term.t = Sidekick_base_term.Term.t and type Term.state = Sidekick_base_term.Term.state and type Ty.t = Sidekick_base_term.Ty.tmodule CC_A : Sidekick_core.CC_ARG with module A = Amodule Solver_internal : Sidekick_core.SOLVER_INTERNAL with module A = A and module CC_A = CC_AInternal solver, available to theories.
module Lit = Solver_internal.Littype ttype solver= ttype term= A.Term.ttype ty= A.Ty.ttype lit= Solver_internal.Lit.ttype lemma= A.Proof.t
module type THEORY = sig ... end
type theory= (module THEORY)A theory that can be used for this particular solver.
val mk_theory : name:string -> create_and_setup:(Solver_internal.t -> 'th) -> ?push_level:('th -> unit) -> ?pop_levels:('th -> int -> unit) -> unit -> theoryHelper to create a theory
module Atom : sig ... end
module Value : sig ... end
module Model : sig ... endmodule Unknown : sig ... endmodule Proof : sig ... endtype proof= Proof.t
Main API
val stats : t -> Sidekick_util.Stat.tval tst : t -> A.Term.stateval create : ?stat:Sidekick_util.Stat.t -> ?size:[ `Big | `Tiny | `Small ] -> ?store_proof:bool -> theories:theory list -> A.Term.state -> unit -> tCreate a new solver.
- parameter theories
theories to load from the start.
val add_theory : t -> theory -> unitAdd a theory to the solver. This should be called before any call to
solveor toadd_clauseand the likes (otherwise the theory will have a partial view of the problem).
val mk_atom_lit : t -> lit -> Atom.tval mk_atom_t : t -> ?sign:bool -> term -> Atom.tval add_clause : t -> Atom.t Sidekick_util.IArray.t -> unitval add_clause_l : t -> Atom.t list -> unit
type res=|Sat of Model.t|Unsat of{proof : proof option;unsat_core : Atom.t list lazy_t;}|Unknown of Unknown.tResult of solving for the current set of clauses
val solve : ?on_exit:(unit -> unit) list -> ?check:bool -> assumptions:Atom.t list -> t -> ressolve schecks the satisfiability of the statement added so far tos- parameter check
if true, the model is checked before returning
- parameter assumptions
a set of atoms held to be true. The unsat core, if any, will be a subset of
assumptions.
- parameter on_exit
functions to be run before this returns