Class type Solver_api.theory


class type theory = object .. end
Term level interface to all theory solvers. A newly created theory solver has the following initial properties:



Problem Setup and Solution

method owns_constant : Term.term -> bool
owns_constant t holds when the solver responsible for reasoning about the constant t.


method proxy : Term.term -> Term.term
A proxy for a pure term.
method add_interface_variable : Term.term -> unit
add_interface_variable v treats the variable v and its negation as an interface literal.


Solver Status

method variables : Term.Term_set.t
Set of all variables known to this solver.


method decision_level : int
Decision level of the solver.


method inference_possible : bool
Might an inference be made?
method get_literal_possible : bool
Is there a literal that has been inferred, but not dispatched by Solver_api.theory.get_literal?
method get_lemma_possible : bool
Is there a lemma that has been inferred, but not dispatched by Solver_api.theory.get_lemma?
method conflict_detected : bool
Has a conflict been detected in the current solver state?

Literal Status

method is_interface_literal : Term.term -> bool
Is the literal l an interface literal for the solver.


method is_true : Term.term -> bool
Is the literal l assigned true in the solver state?


Inference

method infer : unit
Attempt to make inferences from currently assigned literals.


method set_literal : Term.term -> unit
set_literal l attempts to make a variable assignment inferred by an external agent.


method get_literal : Term.term
Choose an inferred literal that has not been dispatched before.


method get_lemma : Term.term list
Choose an inferred lemma that has not been dispatched before.


method final_check : unit
Check consistency before the solver confirms satisfiability.
method increment_level : unit
Increment decision_level.


Conflict Resolution

method backjump : int -> unit
Backjumps to the given level.

For backjump level:


method restart : unit
Backjumps to level 0 if not already there.


method conflict_clause : Term.term list
An explanation for a conflict. The explanation clause consists of interface literals that have been set in the solver.


method literal_explanation : Term.term -> Term.term list
An explanation clause for a literal. The explanation clause consists of literals that were given to Solver_api.theory.set_literal.

let cls = literal_explanation l



Hosted by the SourceForge.net Logo* web site.
*Other names and brands may be claimed as the property of others.