Goto Chapter: Top 1 2 3 4 5 6 7 8 Bib Ind
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 

6 Constraints
 6.1 Bounds associated with a constraint or refiner

6 Constraints

See the Chapter BacktrackKit: Constraints of the BacktrackKit manual.

6.1 Bounds associated with a constraint or refiner

In GAP, permutations are defined on the set of all positive integers (although each permutation may move only a finite set of points, and there is a system-dependent maximum point that is allowed to be moved).

Vole can only search within a concrete finite symmetric group. Therefore, when giving Vole a collection of constraints that define a search problem, the search space must be bounded. More specifically, Vole must be easily able to deduce a positive integer k such that the whole search can take place within Sym([1..k]). This guarantees that Vole will terminate (given sufficient resources).

To help Vole make such a deduction, each constraint and refiner is associated with the following values: a largest moved point, and a largest required point.

Any call to VoleFind.Group (5.2-2) or VoleFind.Coset (5.2-3) requires at least one constraint that defines a finite largest moved point, and any call to VoleFind.Representative (5.2-1) requires at least one constraint that defines a finite largest required point or a finite largest moved point.

Largest moved point

The largest moved point of a constraint is either infinity, or a positive integer k for which it is known a priori that any permutation satisfying the constraint fixes all points strictly greater than k.

For example, the largest moved point of the constraint Constraint.InGroup(G) is LargestMovedPoint(G), see LargestMovedPoint (Ref 42.3-2). On the other hand, any permutation stabilises the empty set, so there is not largest moved point of the constraint Constraint.Stabilise([],OnSets); therefore the value in this case must be infinity.

Largest required point

The largest required point of a constraint is either infinity, or a positive integer k such that there exists a permutation satisfying the constraint if and only if there exists a permutation in Sym([1..k]) satisfying the constraint.

For example, if set is a set of positive integers, then the largest required point of the constraint Constraint.Stabilise(set,OnSets) is Maximum(set).

The largest moved point of a constraint can serve as an upper bound for the largest required point of a constraint.

 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 
Goto Chapter: Top 1 2 3 4 5 6 7 8 Bib Ind

generated by GAPDoc2HTML