module Selection:selection of a split or assert literalsig..end
manages the computation of candidates for Assert and Split
after each change of the context
with Selection_assert, Selection_split.
manages the original problem clause set,
plus derived lemmas.
typeconfig =Config.config
typebound =Bound.bound
typestatistic =Statistic.statistic
typeliteral =Term.literal
typeclause =Term.clause
typechoice_point =State.choice_point
typestate =State.state
typeselected =Selection_types.selected
typecontext =Context.context
typeguiding_path =Jumping.guiding_path
type selection
exception SATISFIABLE
val create : config ->
bound ->
statistic ->
state ->
context ->
clause list ->
clause list ->
literal list -> guiding_path -> selectioncreate ... input_clauses lemmas initial_interpretation guiding_path creates a new selection
over the given input clauses and lemmas.
if a guiding_path is given,
only the search space specified by it is searched.
that is, first the candidate literals are selected
so that the guiding_path is recreated,
then the search continues as usual.
lemmas are lemmas kept over a restart.
initial_interpretation is a set of literals
which is asserted to the initial context.
val add_lemma : selection -> clause -> unit
this does not compute any context unifiers,
so Context_unifier.CLOSE may not be raised.
also ok to store local lemmas,
i.e. lemmas learnt after an incomplete branch has been discovered.
val add : selection -> Context.element -> unitContext_unifier.CLOSE.val select : selection -> selectedSelection.SATISFIABLE if no applicable candidate literal exists.val get_lemmas : selection -> clause listval in_replay : selection -> boolval backtrack : selection ->
choice_point -> literal list -> unitbacktrack selection retracted_split explanation
removes candidates based on invalid states.
takes the retracted left split and its explanation.
DEPENDENCY: State_backtrack must have been executed before.