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 -> candidates
val size : candidates -> int
val add : candidates -> raw_context_unifier -> unit
val select : candidates ->
Jumping.guiding_step option -> selected option
Does 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 -> unit
Bound
.
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 -> string
val backtrack : candidates ->
choice_point -> literal list -> unit
backtrack 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.