See the Chapter BacktrackKit: Constraints of the BacktrackKit manual.
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.
generated by GAPDoc2HTML