package msat
Install
dune-project
Dependency
Authors
Maintainers
Sources
md5=ba623630b0b8e0edc016079dd214c80b
sha512=51c133cefe8550125e7b1db18549e893bac15663fdd7a9fac87235c07de755f39eab9fc3cfdf6571612fd79b3d5b22f49f459581b480c7349bacddf2618c8a99
doc/msat.sat/Msat_sat/index.html
Module Msat_sat
Sat solver
This modules instanciates a pure sat solver using integers to represent atomic propositions.
module Int_lit : sig ... endA functor that can generate as many solvers as needed.
include Msat.S
with type Formula.t = Int_lit.t
and type theory = unit
and type lemma = unit
Internal modules
These are the internal modules used, you should probably not use them if you're not familiar with the internals of mSAT.
include Msat.Solver_intf.EXPR with type Formula.t = Int_lit.t
module Term : sig ... endmodule Value : sig ... endmodule Formula : Msat.Solver_intf.FORMULA with type t = Int_lit.tformulas
type term = Term.tuser terms
type formula = Formula.tuser formulas
The type of atoms given by the module argument for formulas. An atom is a user-defined atomic formula whose truth value is picked by Msat.
module Atom : sig ... endmodule Clause : sig ... endmodule Proof :
Msat.Solver_intf.PROOF
with type clause = clause
and type atom = atom
and type formula = formula
and type lemma = lemma
and type t = proofA module to manipulate proofs.
type t = solverMain solver type, containing all state for solving.
Types
type res = | Sat of (term, formula, Value.t) Msat.Solver_intf.sat_state(*Returned when the solver reaches SAT, with a model
*)| Unsat of (atom, clause, Proof.t) Msat.Solver_intf.unsat_state(*Returned when the solver reaches UNSAT, with a proof
*)
Result type for the solver
Exception raised by the evaluating functions when a literal has not yet been assigned a value.
Base operations
Add the list of clauses to the current set of assumptions. Modifies the sat solver state in place.
Try and solves the current set of clauses.
Add a new term (i.e. decision variable) to the solver. This term will be decided on at some point during solving, wether it appears in clauses or not.
Add a new atom (i.e propositional formula) to the solver. This formula will be decided on at some point during solving, wether it appears in clauses or not.
true_at_level0 a returns true if a was proved at level0, i.e. it must hold in all models
val eval_atom : t -> atom -> Msat.Solver_intf.lboolEvaluate atom in current state
val export : t -> clause Msat.Solver_intf.export