declare
N=6
fun {Tail _|L} L end
proc {GenerateAndTest L}
L={MakeList N}
L ::: 1#N
{FD.distribute naive L}
for
X in L
Y in {Tail L}
do
(X<Y)=true
end
end
proc {TestAndGenerate L}
L={MakeList N}
L ::: 1#N
for
X in L
Y in {Tail L}
do
thread (X<Y)=true end
end
{FD.distribute naive L}
end
proc {PropagateAndDistribute L}
L={MakeList N}
L ::: 1#N
for
X in L
Y in {Tail L}
do
X<:Y
end
{FD.distribute naive L}
end
{ExploreAll GenerateAndTest}
{ExploreAll TestAndGenerate}
{ExploreAll PropagateAndDistribute}
declare
proc {Equations Sol}
X Y Z U V W
in
Sol = solution(x:X y:Y z:Z u:U v:V w:W)
[X Y Z U V W] ::: 1#7
X + Y =: 3*Z
X - Y =: Z
U + W =: 2*Z
V + W =: U+V
{FD.distribute naive [X Y Z U V W]}
end
{Explorer.all Equations}
declare
proc {Equations Sol}
X Y Z U V W
in
Sol = solution(x:X y:Y z:Z u:U v:V w:W)
[X Y Z U V W] ::: 1#7
thread X + Y = 3*Z end
thread X - Y = Z end
thread U + W = 2*Z end
thread V + W = U+V end
{FD.distribute naive [X Y Z U V W]}
end
{Explorer.all Equations}
declare
proc {Equations Sol}
X Y Z U V W
in
Sol = solution(x:X y:Y z:Z u:U v:V w:W)
[X Y Z U V W] ::: 1#7
{FD.distribute naive [X Y Z U V W]}
X + Y = 3*Z
X - Y = Z
U + W = 2*Z
V + W = U+V
end
{Explorer.all Equations}