36namespace Gecode {
namespace Set {
namespace LDSB {
44 for (
unsigned int i = 0 ; i <
n ; i++)
45 if (
x.lubMinN(i) !=
y.lubMinN(i))
53namespace Gecode {
namespace Int {
namespace LDSB {
56 VariableSymmetryImp<Set::SetView>
59 if (indices.valid(
l._variable) && indices.get(
l._variable)) {
66 lits[j++] =
Literal(i.val(),
l._value);
86 lits[j++] =
Literal(
l._variable, i.val());
100 if (
l._variable < (
int)lookup_size) {
101 int posIt = lookup[
l._variable];
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()) {
115 const unsigned int *firstSeq = &indices[seqNum*seq_size];
116 const unsigned int *secondSeq = &indices[seq*seq_size];
117 for (
unsigned int i = 0 ; i < seq_size ; i++) {
144 std::pair<int,int> location =
findVar(
values, n_values, seq_size,
l._value);
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;
150 if (dead_sequences.get(seq))
continue;
int n
Number of negative literals for node type.
Argument array for non-primitive types.
A Literal is a pair of variable index and value.
Implementation of a value sequence symmetry.
Implementation of a value symmetry.
Implementation of a variable sequence symmetry.
Value iterator for values in an offset bitset.
unsigned int lubSize(void) const
Return number of elements in the least upper bound.
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.
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>
bool equalLUB(const Set::SetView &x, const Set::SetView &y)
Do two set variables have equal least-upper-bounds?
Gecode toplevel namespace
void values(Home home, const IntVarArgs &x, IntSet y, IntPropLevel ipl=IPL_DEF)
Post constraint .
Post propagator for SetVar SetOpType SetVar y
Post propagator for SetVar x