На Прологе я могу написать
child(martha,charlotte).
child(charlotte,caroline).
child(caroline,laura).
child(laura,rose).
descend(X,Y) :-
child(X,Y).
descend(X,Y) :-
child(X,Z),
descend(Z,Y).
А потом напиши
?- findall(X,descend(martha,X),Z).
и получить четыре решения
Z = [charlotte,caroline,laura,rose]
Но если я потом добавлю универсальный факт
likes(X,pomegranate).
и попробуйте
?- findall(X,likes(X, pomegranate),Z).
Я получил:
Z = [_G17].
Что это _G17
? Что мне нужно изменить, чтобы получить практически все переменные? ( поскольку likes(X,pomegranate)
должно означать, что все любят гранат... правильно?):
Z = [martha,charlotte,caroline,laura,rose]