40 namespace Gecode {
namespace Set {
namespace Element {
42 template<
class SView,
class RView>
53 template<
class SView,
class RView>
58 x1.update(home,share,p.
x1);
62 template<
class SView,
class RView>
76 template<
class SView,
class RView>
82 template<
class SView,
class RView>
91 template<
class SView,
class RView>
97 template<
class SView,
class RView>
104 bool fix_flag =
false;
111 for(
int i=0; vx1lb(); ++vx1lb) {
112 while (iv[
i].idx < vx1lb.
val())
i++;
124 if (iv[i].idx < vx1ub.
val()) {
136 for (
int k=i; k<
n; k++) {
151 while (iv[i].idx < vx1u.
val()) {
155 assert(iv[i].idx == vx1u.
val());
157 SView candidate = iv[
i].view;
158 int candidateInd = iv[
i].idx;
165 ModEvent me = x1.exclude(home,candidateInd);
182 for (
int k=i; k<
n; k++) {
190 if (x1.cardMax()==0) {
201 for (; vx1lb(); ++vx1lb) {
202 while (iv[i].idx < vx1lb.
val()) i++;
203 assert(iv[i].idx==vx1lb.
val());
206 for (
int j=0; vx1lb2(); ++vx1lb2) {
207 while (iv[j].idx < vx1lb2.
val()) j++;
208 assert(iv[j].idx==vx1lb2.
val());
209 if (iv[i].idx!=iv[j].idx) {
211 ModEvent me = iv[j].view.excludeI(home,xilb);
222 if (x1.cardMin()-x1.glbSize() > 1) {
228 for (; vx1u() && x1.cardMin()-x1.glbSize() > 1; ++vx1u) {
230 while (iv[i].idx < vx1u.
val()) i++;
231 assert(iv[i].idx == vx1u.
val());
236 for (; vx1u2(); ++vx1u2) {
238 while (iv[j].idx < vx1u2.
val()) j++;
239 assert(iv[j].idx == vx1u2.
val());
240 if (iv[i].idx!=iv[j].idx) {
253 ModEvent me = x1.exclude(home,iv[i].idx);
268 for (; x1.cardMin()-x1.glbSize() == 2 && vx1u(); ++vx1u) {
270 while (iv[i].idx < vx1u.
val()) i++;
271 assert (iv[i].idx == vx1u.
val());
276 for (; vx1u2(); ++vx1u2) {
278 while (iv[j].idx < vx1u2.
val()) j++;
279 assert (iv[j].idx == vx1u2.
val());
280 if (iv[i].idx!=iv[j].idx) {
283 for (; vx1u3(); ++vx1u3) {
285 while (iv[k].idx < vx1u3.
val()) k++;
286 assert (iv[k].idx == vx1u3.
val());
287 if (iv[j].idx!=iv[k].idx && iv[i].idx!=iv[k].idx) {
302 ModEvent me = x1.include(home,iv[i].idx);
309 bool allAssigned =
true;
310 for (
int i=iv.
size();
i--;)
311 if (!iv[
i].view.assigned()) {