predicates
likes(symbol, symbol)
tastes(symbol, symbol)
food(symbol)
clauses
likes(bill, X):-
food(X),
tastes(X, good).
tastes(pizza, good).
tastes(Brussels_sprouts, bad).
food(Brussels_sprouts).
food(pizza).
Поставим цель goal:likes(bill, What).
Таблица 3.1. Ручная трассировка программы
Стек активных целей | Предложения программы | Означивания переменных |
? likes(bill,What) | likes(bill,X):- food(X), tastes(X,good). likes(bill,What):- food(What), tastes(What,good) | X=What X и What становятся одной и той же неконкре-тизированной переменной |
? food(What) | *food(brussels_sprouts). food(pizza). | What= brussels_ sprouts |
? tastes(brussel_sprouts,good) | tastes(pizza,good). tastes(brus_sp,bad). | Отказ. Запускаем механизм возврата и ищем другое ре- шение W –освобождается, |
? food(What) | food(pizza). | What=pizza |
? tastes(pizza,good) | tastes(pizza,good). | Это факт. Согласование получено.Успех What=pizza 1Solution |
Рис.3.2.Иллюстрация прохождения процесса унификации и конкретизации переменных