module Selection_assert:selection of assert candidatessig
..end
stores all assert candidates,
and selects one for application.
typeconfig =
Config.config
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
typeselected =
Selection_types.selected
typecontext =
Context.context
type
candidates
val create : config ->
bound ->
statistic ->
state ->
context ->
problem_literals -> candidates
val has_closing_candidate : candidates -> bool
Selection_lookahead
).
imperfect, might return false although the candidate leads to a Close.val size : candidates -> int
val add : candidates -> raw_context_unifier -> bool
Selection_assert.has_closing_candidate
).val select : candidates -> selected option
Does not choose candidates subsumed by the context.
Returns None, if no further assert candidate exists.
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
is_element_incomplete candidates context_element
returns true if applicable exceeding candidates
computed by this context_element
have been dropped
when the restart mode Config.restart
is Flags.opt_restart
.RS_Delayed
.
Then, when a branch has been found that is saturated
wrt. to the candidates within the current depth bound,
all candidates for incomplete context elements are recomputed
and checked if they are satisfied in the branch,
and registered in Bound
otherwise.
val backtrack : candidates -> unit
DEPENDENCY: State_backtrack
must have been executed before.