====== Predecessor ====== {{tag>family recursion}} ===== Description ===== Four versions of the predecessor program. **Source**: PROLOG programming for artificial intelligence, 3rd Edition, Harlow, 2001, ISBN 0-201-40375-7. ===== Download ===== Program source code: {{predecessor.pl}} ===== Listing ===== % Figure 2.16 Four versions of the predecessor program. % Four versions of the predecessor program % The original version pred1( X, Z) :- parent( X, Z). pred1( X, Z) :- parent( X, Y), pred1( Y, Z). % Variation a: swap clauses of the original version pred2( X, Z) :- parent( X, Y), pred2( Y, Z). pred2( X, Z) :- parent( X, Z). % Variation b: swap goals in second clause of the original version pred3( X, Z) :- parent( X, Z). pred3( X, Z) :- pred3( X, Y), parent( Y, Z). % Variation c: swap goals and clauses of the original version pred4( X, Z) :- pred4( X, Y), parent( Y, Z). pred4( X, Z) :- parent( X, Z). ===== Comments =====