#include <split_strategy.hpp>
|
CUDA | SplitStrategy (AType atype, AType var_aty, abstract_ptr< A > a, const allocator_type &alloc=allocator_type()) |
|
template<class A2 , class Alloc2 , class... Allocators> |
CUDA | SplitStrategy (const SplitStrategy< A2, Alloc2 > &other, AbstractDeps< Allocators... > &deps) |
|
CUDA AType | aty () const |
|
CUDA allocator_type | get_allocator () const |
|
template<class Alloc2 = allocator_type> |
CUDA snapshot_type< Alloc2 > | snapshot (const Alloc2 &alloc=Alloc2()) const |
|
template<class Alloc2 = allocator_type> |
CUDA void | restore (const snapshot_type< Alloc2 > &snap) |
|
CUDA void | reset () |
|
template<bool diagnose = false, class F , class Env , class Alloc2 > |
CUDA NI bool | interpret_tell (const F &f, Env &env, tell_type< Alloc2 > &tell, IDiagnostics &diagnostics) const |
|
template<IKind kind, bool diagnose = false, class F , class Env , class I > |
CUDA bool | interpret (const F &f, Env &env, I &intermediate, IDiagnostics &diagnostics) const |
|
template<class Alloc2 > |
CUDA local::B | deduce (const tell_type< Alloc2 > &t) |
|
CUDA NI branch_type | split () |
|
CUDA size_t | num_strategies () const |
|
CUDA void | push_eps_strategy (VariableOrder var_order, ValueOrder val_order) |
|
CUDA void | skip_eps_strategy () |
|
CUDA const auto & | strategies_ () const |
|
◆ allocator_type
◆ sub_type
◆ sub_allocator_type
◆ sub_tell_type
◆ branch_type
◆ this_type
◆ tell_type
◆ SplitStrategy() [1/2]
◆ SplitStrategy() [2/2]
◆ aty()
◆ get_allocator()
template<class A , class Allocator = typename A::allocator_type>
◆ snapshot()
◆ restore()
◆ reset()
Restart the search from the first variable.
◆ interpret_tell()
This interpretation function expects f
to be a predicate of the form search(VariableOrder, ValueOrder, x_1, x_2, ..., x_n)
.
◆ interpret()
◆ deduce()
This deduce method adds new strategies, and therefore do not satisfy the PCCP model. Calling this function multiple times will create multiple strategies, that will be called in sequence along a branch of the search tree. @sequential
◆ split()
Split the next unassigned variable according to the current strategy. If all variables of the current strategy are assigned, use the next strategy. If no strategy remains, returns an empty set of branches.
If the next unassigned variable cannot be split, for instance because the value ordering strategy maps to bot
or top
, an empty set of branches is returned. This also means that you cannot suppose split(a) = {}
to mean a
is at bot
.
◆ num_strategies()
◆ push_eps_strategy()
◆ skip_eps_strategy()
◆ strategies_()
◆ SplitStrategy
◆ is_abstract_universe
◆ sequential
◆ is_totally_ordered
◆ preserve_bot
◆ preserve_top
◆ preserve_join
◆ preserve_meet
◆ injective_concretization
◆ preserve_concrete_covers
◆ name
The documentation for this class was generated from the following file: