Foundations of Logic Programming
Foundations of Logic Programming
Introduction
direct(frankfurt,san_francisco).
direct(frankfurt,chicago). Facts
direct(san_francisco,honolulu).
direct(honolulu,maui).
direct(frankfurt,san_francisco).
direct(frankfurt,chicago).
direct(san_francisco,honolulu).
direct(honolulu,maui).
| ?- connection(frankfurt, maui).
yes
direct(frankfurt,san_francisco).
direct(frankfurt,chicago).
direct(san_francisco,honolulu).
direct(honolulu,maui).
| ?- connection(san_francisco, X).
X = honolulu ;
X = maui ;
no
direct(frankfurt,san_francisco).
direct(frankfurt,chicago).
direct(san_francisco,honolulu).
direct(honolulu,maui).
| ?- connection(maui, X).
no
member(X, [X | List]).
member(X, [Y | List]) :- member(X, List).
member(X, [X | List]).
member(X, [Y | List]) :- member(X, List).
| ?- member_both(pears,[apples,pears,plums],[peaches,plums,pears]).
yes
| ?- member_both(apples,[apples,pears,plums],[peaches,X]).
X = apples
| ?- connection(san_francisco, X).
X = honolulu ;
X = san_francisco ;
X = maui ;
X = honolulu ;
...
| ?- connection(san_francisco, X).
X = san_francisco ;
X = honolulu ;
X = san_francisco ;
X = honolulu ;
...
| ?- connection(san_francisco, X).
X = maui ;
X = maui ;
X = maui ;
...
| ?- connection(san_francisco, X).
| ?- mystery.
yes
This rule can only be “called” if all three arguments are numbers:
irz601:~> sicstus
SICStus 3 #5: Fri Nov 1 15:49:55 MET 1996
| ?- [add].
{consulting/usr/users/ith/ak15/add.pl...}
{/usr/users/ith/ak15/add.pl consulted, 0 msec 352 bytes}
yes
| ?- add(X,Y,s(s(0))).
X = s(s(0)),
Y = 0 ? ;
X = s(0),
Y = s(0) ? ;
X = 0,
Y = s(s(0)) ? ;
no
| ?- halt.