TURBO PROLOG. Терёхин В.В. - 32 стр.

UptoLike

Составители: 

32
Все попытки вычислить эту подцель неуспешны, так как программа не
содержит утверждения color(pears,red). Подцель вычислена неуспешно.
Внутренние унификационные подпрограммы выполняют откат к по-
следнему указателю, который установлен на fruit(pears). Это сопоставление
неуспешно, так что механизм отката повторяет откат к ближайшему преды-
дущему указателю, который установлен на likes(mary,popcorn).
Переменная X опять становится свободной из-за неуспешного вычис-
ления подцели во время попытки сопоставления с pears. В точке, опреде-
ляемой указателем отката, Турбо-Пролог находит факт likes(mary,popcorn).
Указатель отката, отмеченный цифрой 4, устанавливается на следующее
утверждение для likes. Переменная X имеет значение popcorn, так что теперь
подцели эквивалентны
"Мэри любит кукурузные зерна и кукурузные зерна
фрукт красного цвета".
Подцель fruit(popcorn) не может быть доказана при помощи фактов и
правил, имеющихся в программе, так что подцель likes(mary,X) неус-
пешна. Переменная X освобождается, и подцель likes(mary,X) в правиле
likes(beth,X) имеет еще один шанс на
успех, так как был отмечен для отка-
та еще один факт, о том что любит Мэри. Внутренние унификационные под-
программы выполняют откат в точку 4.
Теперь подцель сопоставляется с likes(mary, apples), и X получает
значение apples. Выполняется попытка для следующей подцели ruit(apples).
Первое утверждение для fruit имеет объект pears. Объекты
не сопоставимы,
так что внутренние унификационные подпрограммы переходят к сле-
дующему факту fruit(apples), который сопоставим с подцелью.
Наконец, последняя подцель первого правила проверена. Снова дела-
ется попытка сопоставить ее с фактом для color. В этот момент подцель есть
color(apples, red). Начав с вершины списка фактов для color, внутренние
унификационные подпрограммы пытаются сопоставить эту подцель с фак-
тами color(pears, yellow), color(oranges, orange) и color(apples, red). Во вре-
мя этой последней попытки объект apples (присвоенный переменной X) со-
поставляется с объектом apples в факте, но последние объекты red и yellow
не сопоставимы, так что попытка неудачна. Последний факт, связанный
с
цветом это color(apples, red), который сопоставим с подцелью color(apples,
red).
С успешным сопоставлением последней подцели правило доказано.
Переменная X, получив значение apples, тем самым доказывает правую
часть. Все правило с переменной X, означенной объектом apples, c точки
зрения внутренних унификационных подпрограмм выглядит как
likes(beth, apples) :-
likes(
mary, apples),
fruit(apples),
color(apples, red).
Выдав сообщение X=apples, Турбо-Пролог показывает, что для цели
найдено по крайней мере одно решение.
Снова используется последняя подцель. Теперь co значением
       Все попытки вычислить эту подцель неуспешны, так как программа не
содержит утверждения color(pears,red). Подцель вычислена неуспешно.
       Внутренние унификационные подпрограммы выполняют откат к по-
следнему указателю, который установлен на fruit(pears). Это сопоставление
неуспешно, так что механизм отката повторяет откат к ближайшему преды-
дущему указателю, который установлен на likes(mary,popcorn).
       Переменная X опять становится свободной из-за неуспешного вычис-
ления подцели во время попытки сопоставления с pears. В точке, опреде-
ляемой указателем отката, Турбо-Пролог находит факт likes(mary,popcorn).
Указатель отката, отмеченный цифрой 4, устанавливается на следующее
утверждение для likes. Переменная X имеет значение popcorn, так что теперь
подцели эквивалентны "Мэри любит кукурузные зерна и кукурузные зерна
фрукт красного цвета".
       Подцель fruit(popcorn) не может быть доказана при помощи фактов и
правил, имеющихся в программе, так что подцель likes(mary,X) неус-
пешна. Переменная X освобождается, и подцель likes(mary,X) в правиле
likes(beth,X) имеет еще один шанс на успех, так как был отмечен для отка-
та еще один факт, о том что любит Мэри. Внутренние унификационные под-
программы выполняют откат в точку 4.
       Теперь подцель сопоставляется с likes(mary, apples), и X получает
значение apples. Выполняется попытка для следующей подцели ruit(apples).
Первое утверждение для fruit имеет объект pears. Объекты не сопоставимы,
так что внутренние унификационные подпрограммы переходят к сле-
дующему факту fruit(apples), который сопоставим с подцелью.
       Наконец, последняя подцель первого правила проверена. Снова дела-
ется попытка сопоставить ее с фактом для color. В этот момент подцель есть
color(apples, red). Начав с вершины списка фактов для color, внутренние
унификационные подпрограммы пытаются сопоставить эту подцель с фак-
тами color(pears, yellow), color(oranges, orange) и color(apples, red). Во вре-
мя этой последней попытки объект apples (присвоенный переменной X) со-
поставляется с объектом apples в факте, но последние объекты red и yellow
не сопоставимы, так что попытка неудачна. Последний факт, связанный с
цветом это color(apples, red), который сопоставим с подцелью color(apples,
red).
       С успешным сопоставлением последней подцели правило доказано.
Переменная X, получив значение apples, тем самым доказывает правую
часть. Все правило с переменной X, означенной объектом apples, c точки
зрения внутренних унификационных подпрограмм выглядит как
       likes(beth, apples) :-
              likes(mary, apples),
              fruit(apples),
              color(apples, red).
       Выдав сообщение X=apples, Турбо-Пролог показывает, что для цели
найдено по крайней мере одно решение.
       Снова используется последняя подцель. Теперь co значением


                                                                            32