Программа содержит сведения о родственных связях. Предназначена для иллюстрации процессов сцепления, означивания, переозначивания, освобождения переменных. Предикат write - вывод на экран, nl - новая строка
predicates
ot(symbol,symbol)
m(symbol,symbol)
rod(symbol,symbol)
pred(symbol,symbol)
clauses
ot(a,b). /* a является отцом b */
ot(f,c).
m(b,c). /* b является матерью c */
m(c,d).
rod(X,Y):- ot(X,Y), /* X является родителем Y */ write("X=",X," Y=",Y),nl.
rod(X,Y):- m(X,Y),
write("X=",X," Y=",Y),nl.
pred(e,d). /* e является предком d */
pred(K,M):- rod(K,M),
write("K=",K," M=",M),nl.
pred(K,M):- rod(K,Z),write("K=",K," Z=",Z),nl,
pred(Z,M),write("Z=",Z," M=",M),nl.
|