module Selection_split:selection of split candidatessig..end
stores all split candidates (remainders),
and selects one for application.
typeconfig =Config.config
typechoice_point =State.choice_point
typebound =Bound.bound
typestatistic =Statistic.statistic
typeliteral =Term.literal
typestate =State.state
typeraw_context_unifier =Context_unifier.raw_context_unifier
typeproblem_literals =Problem_literals.problem_literals
typespace_registry =Context_unifier_space.space_registry
typeselected =Selection_types.selected
typecontext =Context.context
type candidates
val create : config ->
bound ->
statistic ->
state ->
context ->
problem_literals ->
space_registry -> candidatesval size : candidates -> intval add : candidates -> raw_context_unifier -> unitval select : candidates ->
Jumping.guiding_step option -> selected optionDoes not choose non-applicable candidates, i.e candidates subsumed by, contradictory with, or not productive with the current context.
Returns None, if no further split candidate exists.
val select_right_split : candidates -> selected option
upon backtracking a left split with Selection_split.backtrack
the corresponding right split is remembered as long as it is implied.
DEPENDENCY: these have to be applied exhaustively after backtracking before any split or assert to ensure completeness/soundness.
Returns None, if no further right split candidate exists.
raise CLOSE, if right split is inconsistent with context.
val check_exceeding : candidates -> unitBound.
to be called only when select returns None,
based on the semantics of Flags.opt_restart,
when a branch has to be checked for being exhausted.
val is_element_incomplete : candidates -> Context.element -> bool
val remainder_literals_to_string : config ->
context -> raw_context_unifier -> stringval backtrack : candidates ->
choice_point -> literal list -> unitbacktrack candidates retracted explanation
returns the candidate store to the one associated to the current active state.
retracted is the choice point corresponding to the retracted left split,
explanation are the choice points which implie this conflict.
that is, explanation is the explanation of the corresponding right split,
which is stored for further usage (Selection_split.select_right_split).
DEPENDENCY: State_backtrack must have been executed before.