45 namespace Test {
namespace Int {
48 namespace Extensional {
62 return (((
x[0] == 0) || (
x[0] == 2)) &&
63 ((
x[1] == -1) || (
x[1] == 1)) &&
64 ((
x[2] == 0) || (
x[2] == 1)) &&
65 ((
x[3] == 0) || (
x[3] == 1)));
85 return (
x[0]<
x[1]) && (
x[1]<
x[2]) && (
x[2]<
x[3]);
110 if (
pos + 4 > s)
return false;
112 for (
int i = 0;
i < 2; ++
i, ++
pos)
113 if (
x[
pos] != 1)
return false;
114 if (
pos + 2 > s)
return false;
116 for (
int i = 0;
i < 1; ++
i, ++
pos)
117 if (
x[
pos] != 0)
return false;
119 if (
pos + 1 > s)
return false;
121 for (
int i = 0;
i < 1; ++
i, ++
pos)
122 if (
x[
pos] != 1)
return false;
123 while (
pos < s)
if (
x[
pos++] != 0)
return false;
142 for (
int i=0;
i<
x.size();
i++) {
143 if ((
x[
i] < 0) || (
x[
i] > 3))
145 for (
int j=
i+1; j<
x.size(); j++)
187 :
Test(
"Extensional::Reg::Roland::"+
str(
n),
n,0,1) {}
192 ((
n > 1) && (
x[
n-2] == 0)) ||
193 ((
n > 0) && (
x[
n-1] == 0));
211 return (((
x[0] == 0) || (
x[0] == 2)) &&
212 ((
x[1] == -1) || (
x[1] == 1)) &&
213 ((
x[2] == 0) || (
x[2] == 1)) &&
214 ((
x[3] == 0) || (
x[3] == 1)));
220 for (
int i=0;
i<4;
i++)
238 return (((
x[0] == 0) || (
x[0] == 2)) &&
239 ((
x[1] == -1) || (
x[1] == 1)) &&
240 ((
x[2] == 0) || (
x[2] == 1)) &&
241 ((
x[3] == 0) || (
x[3] == 1)));
247 for (
int i=0;
i<4;
i++)
265 return (
x[1]==1) && (
x[2]==0) && (
x[3]==1);
271 for (
int i=0;
i<4;
i++)
286 return (
x[1]==1) && (
x[2]==0) && (
x[3]==1);
292 for (
int i=0;
i<4;
i++)
346 :
Test(
"Extensional::Reg::Opt::"+
str(n0),1,0,15),
n(n0) {}
349 return (
x[0] <
n) && ((
x[0] & 1) == 0);
356 int*
f =
new int[
n+1];
358 for (
int i=0;
i<
n;
i++) {
382 :
Test(
"Extensional::TupleSet::A::"+
str(ipl0),
386 return ((
x[0] == 1 &&
x[1] == 3 &&
x[2] == 2 &&
x[3] == 3) ||
387 (
x[0] == 2 &&
x[1] == 1 &&
x[2] == 2 &&
x[3] == 4) ||
388 (
x[0] == 2 &&
x[1] == 2 &&
x[2] == 1 &&
x[3] == 4) ||
389 (
x[0] == 3 &&
x[1] == 3 &&
x[2] == 3 &&
x[3] == 2) ||
390 (
x[0] == 4 &&
x[1] == 3 &&
x[2] == 4 &&
x[3] == 1)
430 :
Test(
"Extensional::TupleSet::B::"+
str(ipl0),
458 for (
int i = 0;
i <
t.tuples(); ++
i) {
461 for (
int j = 0; j <
t.arity() &&
same; ++j)
462 if (
l[j] !=
x[j])
same =
false;
463 if (
same)
return true;
482 :
Test(
"Extensional::TupleSet::Bool::"+
str(ipl0),
490 for (
int i = 5;
i--; ) tuple[
i] = ass[
i];
500 for (
int i = 0;
i <
t.tuples(); ++
i) {
503 for (
int j = 0; j <
t.arity() &&
same; ++j)
504 if (
l[j] !=
x[j])
same =
false;
505 if (
same)
return true;
513 for (
int i =
x.size();
i--; )
541 RegOpt ro2(static_cast<int>(UCHAR_MAX-1));
545 RegOpt ro6(static_cast<int>(USHRT_MAX-1));
RegRoland(int n)
Create and register test.
virtual void post(Gecode::Space &home, Gecode::IntVarArray &x)
Post constraint on x.
Test with simple regular expression and shared variables (uses unsharing)
static std::string str(Gecode::IntPropLevel ipl)
Map integer propagation level to string.
virtual bool solution(const Assignment &x) const
Test whether x is solution
RegEmptyREG(void)
Create and register test.
virtual bool solution(const Assignment &x) const
Test whether x is solution
void channel(Home home, FloatVar x0, IntVar x1)
Post propagator for channeling a float and an integer variable .
virtual void post(Gecode::Space &home, Gecode::IntVarArray &x)
Post constraint on x.
TupleSetA tsas(Gecode::IPL_SPEED)
Test with regular expression for distinct constraint
static Gecode::Support::RandomGenerator rand
Random number generator.
Regular expressions over integer values.
RegOpt ro3(static_cast< int >(UCHAR_MAX))
virtual void post(Gecode::Space &home, Gecode::IntVarArray &x)
Post constraint on x.
RegDistinct(void)
Create and register test.
virtual void post(Gecode::Space &home, Gecode::IntVarArray &x)
Post constraint on x.
bool pos(const View &x)
Test whether x is postive.
Test with simple regular expression
int * Tuple
Type of a tuple.
virtual void post(Gecode::Space &home, Gecode::IntVarArray &x)
Post constraint on x.
virtual bool solution(const Assignment &x) const
Test whether x is solution
Test with simple regular expression and shared variables (uses unsharing)
virtual bool solution(const Assignment &x) const
Test whether x is solution
Test with simple regular expression
virtual bool solution(const Assignment &x) const
Test whether x is solution
TupleSetB tsbs(Gecode::IPL_SPEED)
TupleSetBool(Gecode::IntPropLevel ipl0, double prob)
Create and register test.
virtual bool solution(const Assignment &x) const
Test whether x is solution
virtual bool solution(const Assignment &x) const
Test whether x is solution
Deterministic finite automaton (DFA)
TupleSetBool tsbools(Gecode::IPL_SPEED, 0.3)
Gecode::IntArgs i(4, 1, 2, 3, 4)
virtual void post(Gecode::Space &home, Gecode::IntVarArray &x)
Post constraint on x.
int n
Number of negative literals for node type.
virtual void post(Gecode::Space &home, Gecode::IntVarArray &x)
Post constraint on x.
virtual void post(Gecode::Space &home, Gecode::IntVarArray &x)
Post constraint on x.
virtual void post(Gecode::Space &home, Gecode::IntVarArray &x)
Post constraint on x.
virtual bool solution(const Assignment &x) const
Test whether x is solution
TupleSetBool tsboolm(Gecode::IPL_MEMORY, 0.3)
void extensional(Home home, const IntVarArgs &x, DFA dfa, IntPropLevel)
Post domain consistent propagator for extensional constraint described by a DFA.
TupleSetB(Gecode::IntPropLevel ipl0)
Create and register test.
Specification of a DFA transition.
RegSharedB(void)
Create and register test.
RegOpt ro7(static_cast< int >(USHRT_MAX))
virtual void post(Gecode::Space &home, Gecode::IntVarArray &x)
Post constraint on x.
RegEmptyDFA(void)
Create and register test.
int o_state
output state Default constructor
TupleSetB tsbm(Gecode::IPL_MEMORY)
virtual void post(Gecode::Space &home, Gecode::IntVarArray &x)
Post constraint on x.
virtual bool solution(const Assignment &x) const
Test whether x is solution
Gecode::IntPropLevel ipl
Propagation level.
Passing integer variables.
Passing integer arguments.
Passing Boolean variables.
Prefer to save memory Options: basic versus advanced propagation.
Class represeting a set of tuples.
virtual void post(Gecode::Space &home, Gecode::IntVarArray &x)
Post constraint on x.
RegSharedD(void)
Create and register test.
IntPropLevel
Propagation levels for integer propagators.
Post propagator for f(x \diamond_{\mathit{op}} y) \sim_r z \f$ void rel(Home home
Post propagator for SetVar SetOpType SetVar y
virtual bool solution(const Assignment &x) const
Test whether x is solution
Node * x
Pointer to corresponding Boolean expression node.
virtual bool solution(const Assignment &x) const
Test whether x is solution
bool testsearch
Whether to perform search test.
Base class for assignments
void extensional(Home home, const BoolVarArgs &x, const TupleSet &t, IntPropLevel ipl)
Post propagator for .
bool same(const Item &i, const Item &j)
Whether two items are the same.
Test with simple regular expression and shared variables (uses unsharing)
virtual bool solution(const Assignment &x) const
Test whether x is solution
RegOpt(int n0)
Create and register test.
Test with simple regular expression from Roland Yap
int n
DFA size characteristic.
RegSimpleC(void)
Create and register test.
virtual bool solution(const Assignment &x) const
Test whether x is solution
virtual void post(Gecode::Space &home, Gecode::IntVarArray &x)
Post constraint on x.
ExecStatus unshare(Home home, VarArgArray< Var > &x, IntPropLevel ipl)
Replace unassigned shared variables by fresh, yet equal variables.
Gecode toplevel namespace
virtual bool solution(const Assignment &x) const
Test whether x is solution
Test for empty regular expression
virtual void post(Gecode::Space &home, Gecode::IntVarArray &x)
Post constraint on x.
RegOpt ro6(static_cast< int >(USHRT_MAX-1))
RegOpt ro2(static_cast< int >(UCHAR_MAX-1))
RegSharedA(void)
Create and register test.
virtual void post(Gecode::Space &home, Gecode::IntVarArray &x)
Post constraint on x.
RegSharedC(void)
Create and register test.
TupleSetA tsam(Gecode::IPL_MEMORY)
Test with simple regular expression and shared variables (uses unsharing)
TupleSetA(Gecode::IntPropLevel ipl0)
Create and register test.
Generate all assignments.
virtual bool solution(const Assignment &x) const
Test whether x is solution
RegSimpleA(void)
Create and register test.
RegSimpleB(void)
Create and register test.
Test with simple regular expression