class type bound =Here all candidates are checked for exceeding the iterative deepening bound. This includes determining if the current derivation branch is incomplete, i.e. if candidates have been dropped while constructing the branch, and (based onobject..end
Flags.opt_restart) backtracking to a choice point,
where the branch is not incomplete.
The actual bound criterion is handled internally according
to Flags.opt_iterative_deepening.
In the finite domain mode (Config.finite_domain)
the bound does not correspond to Flags.opt_iterative_deepening,
but to the current domain size.
As the input is BS then,
any the complexity of any literal will be within the bound.
method current_bound : complexitymethod dropped_choice_point : choice_point optionmethod get_complexity : literal -> complexitymethod get_complexity_subst : literal -> subst -> int -> complexityget_complexity_subst literal subst offset
returns the complexity of the literal assembled by applying
subst with offset to literal.method compare_complexity : complexity -> complexity -> intmethod exceeds : complexity -> boolmethod exceeds_current : complexity -> choice_point -> boolBound.bound.dropped_choice_point).
This is never the case if the candidate does not exceed the deepening bound.
Otherwise, the details depend on the restart strategy (Flags.opt_restart),
e.g. for eager restarting only the lowest dropped complexity is of relevance.
method register : complexity -> choice_point -> boolBound.bound.exceeds,
and additionally registers the candidate as dropped.method register_subst : literal -> subst -> int -> choice_point -> bool
method has_min_exceeding : boolmethod backtrack : unitState).method restart : keep_bound:bool -> unitkeep_bound is false, which is the default).
The new depth bound is the lowest complexity of the dropped candidates.method is_derivation_incomplete : boolmethod incomplete : unitmethod complexity_to_string : complexity -> stringmethod print_statistic : unitPrint.print_label).