Вернемся к программе "Меню". Уточним вопрос, сохранив то же множество отношений: нас интересуют обеды с главным блюдом из рыбы. Этот вопрос имеет вид:
?-'обед'(X,Y,Z),'рыба'(Y).
и на естественном языке формулируется следующим образом: "Какие блюда X,Y,Z составляют обед и в этом обеде второе блюдо рыба?". Вопрос состоит из конъюнкции двух целевых утверждений (предикатов), истинность которых должна быть подтверждена в процессе выполнения. Сначала интерпретатор найдет такие значения переменных X,Y,Z, которые составляют обед, т.е. при которых первый предикат станет истинным. Такими первыми значениями являются:
X='артишоки_в_белом_соусе'
Y='говяжье_жаркое'
Z='грушевое_мороженое'
После сопоставления с базой знаний первой цели интерпретатор перейдет ко второму отношению 'рыба'(Y) со значением, которое, приняла переменная Y='говяжье_жаркое'. При этом будет проверяться предикат 'рыба'('говяжье_жаркое'). Поскольку база знаний не содержит такого утверждения, то предложенный выбор значений не удовлетворяет запросу - выбор неудачен, и нужно анализировать следующие варианты обедов.
Перейдите в интерпретатор и посмотрите, какие ответы будут получены на вопрос:
?-'обед'(X,Y,Z),'рыба'(Y).
|