% Example given by D. Plaisted.
% 
predicates([p0,p1,p2,p3,p4,p5]).

p0(X),X=d0 -> [].
p0(X) -> f(d0) = d0.

p1(X),X=d1 -> [].
p1(X) -> f(d0) = d1.
p1(X) -> f(d1) = d1.

p2(X),X=d2 -> [].
p2(X) -> f(d0) = d1.
p2(X) -> f(d1) = d2.
p2(X) -> f(d2) = d2.

p3(X),X=d3 -> [].
p3(X) -> f(d0) = d1.
p3(X) -> f(d1) = d2.
p3(X) -> f(d2) = d3.
p3(X) -> f(d3) = d3.

p4(X),X=d4 -> [].
p4(X) -> f(d0) = d1.
p4(X) -> f(d1) = d2.
p4(X) -> f(d2) = d3.
p4(X) -> f(d3) = d4.
p4(X) -> f(d4) = d4.

p5(X),X=d5 -> [].
p5(X) -> f(d0) = d1.
p5(X) -> f(d1) = d2.
p5(X) -> f(d2) = d3.
p5(X) -> f(d3) = d4.
p5(X) -> f(d4) = d5.
p5(X) -> f(d5) = d5.

p0(X) , p1(X) , p2(X) , p3(X) , p4(X), p5(X).

precedence([f,d0,d1,d2,d3,d4,d5,p0,p1,p2,p3,p4,p5]).
:-sama([2]).  % positive strategy
