
706 van Emden and Szeredi
? conj (m(X,Y',Z') , t2 (U, X) , t3 (1. V, 2. Y') , s (2. Ζ', U, V) )
Not only has a 2 appeared in the output channel of merge, but the equivalent
of pushing it into the empty input channel has also occurred.
The third clause should not be obtained by merely inserting the guard. In-
stead, it should be recognized that there is an implicit test for equality (the first
two occurrences of A) and that this test should come after a guard ensuring that
the input channels are nonempty, like this:
conj (m(A.X,B. Υ,Α.Ζ) ,T2,T3,S)
if not (var (A) ) , not (var (B) ) , eq (A, B) , conj (m (Χ, Υ, Ζ) ,
T2,T3,
S)
An
Alternative
Route ...