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 : complexity
method dropped_choice_point : choice_point option
method get_complexity : literal -> complexity
method get_complexity_subst : literal -> subst -> int -> complexity
get_complexity_subst literal subst offset
returns the complexity of the literal assembled by applying
subst
with offset
to literal
.method compare_complexity : complexity -> complexity -> int
method exceeds : complexity -> bool
method exceeds_current : complexity -> choice_point -> bool
Bound.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 -> bool
Bound.bound.exceeds
,
and additionally registers the candidate as dropped.method register_subst : literal -> subst -> int -> choice_point -> bool
method has_min_exceeding : bool
method backtrack : unit
State
).method restart : keep_bound:bool -> unit
keep_bound
is false, which is the default).
The new depth bound is the lowest complexity of the dropped candidates.method is_derivation_incomplete : bool
method incomplete : unit
method complexity_to_string : complexity -> string
method print_statistic : unit
Print.print_label
).