The Logical Model | Introduction | Unification | Backtracking | Programming |
Example: From
Ghezzi p 385
The transitive closure of rel.
Try -> trace. in prolog to view the execution steps.
- relation(a,b).
- relation(a,c).
- relation(b,f).
- relation(f,g).
- closure(A,B) :- relation(A,B).
- closure(A,B) :- relation(A,Z), closure(Z,B).
See Brassard&Bratley problem 8.18
The code below will abreviate relation to rel and closure to clos.
This is very similar to code presented page 631, Scott.
?- rel(a,X).
X = b;
X = c;
false.
?- rel(a,X), rel(X,f).
X = b;
false.
?- clos(b,X).
X = f ;
X = g ;
false.
?- clos(a,f).
true .