42 unsigned int n =
x.lubSize();
43 if (n !=
y.lubSize())
return false;
44 for (
unsigned int i = 0 ; i < n ; i++)
45 if (
x.lubMinN(i) !=
y.lubMinN(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
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
Post propagator for SetVar SetOpType SetVar y
Post propagator for SetVar x