
sbdd_initialise(+Array, ++VarDimNames, ++ValueDimSpec, +SymSpecs, +Options)

   Initialises the data structures required by the SBDD algorithm

Arguments
   Array               Array of (integer) decision variables
   VarDimNames         Names for the dimensions of Array
   ValueDimSpec        Name of the value dimension and its range
   SymSpecs            List of symmetry specifiers
   Options             List of extra options

Type
   library(ic_gap_sbdd)

Description
   Sets up the data structures required to perform an SBDD search.  Array is
   an array containing the (integer) search variables, SymSpecs defines the
   symmetries of the problem, with VarDimNames and ValueDimSpec providing
   some extra required information; these four arguments are the same as the
   first four arguments of construct_group/8: please see the documentation
   for that predicate for a complete description of these arguments and
   details of the supported symmetry specifiers.

   Options is a list of options which modify the way the search progresses.
   Currently only one option is supported: throttle(ThrottlePred).  This
   option can be used to control whether or not the SBDD dominance check is
   invoked at any given node.  At each node, before performing the dominance
   check, ThrottlePred is called with an extra argument appended, and if the
   call fails, the dominance check is skipped.  The extra argument is the
   sbdd_shared data structure, which holds the current state of the SBDD
   search; its fields can be examined (e.g. the current search depth) in
   order to decide whether to proceed with the dominance check or not.

   During search, use sbdd_try/2 or sbdd_try/3 on variables from Array when
   making search decisions.


Modules
   This predicate is sensitive to its module context (tool predicate, see @/2).

See Also
   sbdd_initialise_set / 5, sym_expr : construct_group / 8, struct(sbdd_shared), sbdd_try / 2, sbdd_try / 3
