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 -> selection
create ... 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 -> unit
Context_unifier.CLOSE
.val select : selection -> selected
Selection.SATISFIABLE
if no applicable candidate literal exists.val get_lemmas : selection -> clause list
val in_replay : selection -> bool
val backtrack : selection ->
choice_point -> literal list -> unit
backtrack 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.