43 if (n != y.
lubSize())
return false;
44 for (
unsigned int i = 0 ; i < n ; i++)
105 unsigned int seqNum = posIt /
seq_size;
106 unsigned int seqPos = posIt %
seq_size;
107 for (
unsigned int seq = 0 ; seq <
n_seqs ; seq++) {
111 if (x[
getVal(seq, seqPos)].assigned()) {
117 for (
unsigned int i = 0 ; i <
seq_size ; i++) {
146 unsigned int seqNum = location.first;
147 unsigned int seqPos = location.second;
148 for (
unsigned int seq = 0 ; seq <
n_seqs ; seq++) {
149 if (seq == seqNum)
continue;
Argument array for non-primitive types.
A Literal is a pair of variable index and value.
int _variable
Variable index. The ViewArray that the index is meant for is assumed to be known by context.
int _value
The value of the literal. For int and bool variables, this is the value itself; for set variables,...
Implementation of a value sequence symmetry.
unsigned int n_seqs
Number of sequences in symmetry.
int getVal(unsigned int sequence, unsigned int position) const
Get the value in the specified sequence at the specified position. (Both are zero-based....
int * values
Set of sequences.
unsigned int seq_size
Size of each sequence in symmetry.
Support::BitSet< Space > dead_sequences
Which sequences are dead.
unsigned int n_values
Total number of values (n_seqs * seq_size).
Implementation of a value symmetry.
Support::BitSetOffset< Space > values
Implementation of a variable sequence symmetry.
unsigned int * indices
Array of variable indices.
int getVal(unsigned int sequence, unsigned int position) const
Get the value in the specified sequence at the specified position. (Both are zero-based....
unsigned int seq_size
Size of each sequence in symmetry.
int * lookup
Map from variable's index to its sequence and position.
unsigned int lookup_size
Size of lookup.
unsigned int n_seqs
Number of sequences in symmetry.
Implementation of a variable symmetry.
Support::BitSetOffset< Space > indices
Symmetric variable indices.
Value iterator for values in an offset bitset.
Set view for set variables
unsigned int lubSize(void) const
Return the number of elements in the least upper bound.
int lubMinN(unsigned int n) const
Return n-th smallest element of the least upper bound.
Bitsets with index offset.
Stack with arbitrary number of elements.
void push(const T &x)
Push element x on top of stack.
bool assigned(void) const
Test whether view is assigned.
Symmetry breaking for integer variables.
std::pair< int, int > findVar(int *indices, unsigned int n_values, unsigned int seq_size, int index)
Find the location of an integer in a collection of sequences.
ArgArray< T > dynamicStackToArgArray(const Support::DynamicStack< T, A > &s)
Convert a DynamicStack<T,A> into an ArgArray<T>.
Symmetry breaking for set variables.
bool equalLUB(const Set::SetView &x, const Set::SetView &y)
Do two set variables have equal least-upper-bounds?
Gecode toplevel namespace