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

UptoLike

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

20
дет пытаться сопоставить второй объект цели с соответствующим объектом
в правиле, даже если они и сопоставимы. Затем Турбо-Пролог осуществляет
поиск следующей точки входа и находит правило
likes(beth,X) if likes(mary,X).
Первая часть этого правила likes(beth,X) называется головой правила.
Пролог пытается сопоставить цель с головой правила точно также
, как он со-
поставляет цель с фактом. Если Турбо-Пролог сможет сопоставить предикат
и все его объекты, то он попытается выполнить часть правила, которая сле-
дует за условием if (эта часть называется телом правила).
Сейчас Турбо-Пролог пытается сопоставить цель likes(beth, apples) и
голову правила likes(beth, X) :
likes(beth, apples).
likes(beth
, X).
Цель и голова правила имеют сопоставимые предикатные термы и
первые объекты. Строго говоря, apples и X не сопоставимы. Но прежде чем
заключить, что сопоставление опять неуспешно, вспомните, что X работает
как местоимение "это". Являясь переменной, X, может быть сопоставлен с
чем угодно.
В русском языке значение для "это" определяется
контекстом. Всякий
раз, когда Турбо-Пролог встречает переменную, пытаясь сопоставить объ-
екты, он присваивает переменной значение, полученное из контекста для
этой переменной. Так как позиция объекта X в голове правила точно такая
же, как позиция apples в цели, то Турбо-Пролог присваивает значение apples
переменной X. Теперь X и apples означают
для Турбо-Пролога одно и то же.
Это связывание используется до тех пор, пока либо цель не будет вычислена,
либо нельзя будет выполнить никакого другого сопоставления с учетом этого
связывания.
Так как теперь X имеет значение apples, то предикат likes(beth, X)
имеет "значение" likes(beth, apples). Турбо-Пролог успешно сопоставил голо
-
ву правила и цель, присвоив значение apples переменной X.
Теперь Турбо-Пролог пытается выполнить условие if likes(mary,
X). Так как переменной X присвоено значение aplles, то Турбо-Пролог дол-
жен доказать или опровергнуть условие "если Мэри любит яблоки" для то-
го, чтобы доказать действительно ли истинна голова правила "Бет
любит яб-
локи". Таким образом, новая задача состоит в том, что бы проверить, что Мэ-
ри любит яблоки. Эта "подзадача", или подцель, была создана самим Турбо-
Прологом как шаг, направленный на решение задачи, содержащейся в цели.
Подцелью теперь является
likes(mary, aplles).
Турбо-Пролог пытается выполнить эту подцель для
того, чтобы дока-
зать или опровергнуть условие головы правила likes(beth, apples).
Анализируя факты и правила программы, Турбо-Пролог находит факт
likes(mary, apples).
и пытается сопоставить его слева направо с целью likes(mary,apples).
дет пытаться сопоставить второй объект цели с соответствующим объектом
в правиле, даже если они и сопоставимы. Затем Турбо-Пролог осуществляет
поиск следующей точки входа и находит правило
      likes(beth,X) if likes(mary,X).
      Первая часть этого правила likes(beth,X) называется головой правила.
Пролог пытается сопоставить цель с головой правила точно также, как он со-
поставляет цель с фактом. Если Турбо-Пролог сможет сопоставить предикат
и все его объекты, то он попытается выполнить часть правила, которая сле-
дует за условием if (эта часть называется телом правила).
      Сейчас Турбо-Пролог пытается сопоставить цель likes(beth, apples) и
голову правила likes(beth, X) :
      likes(beth, apples).
      likes(beth, X).
      Цель и голова правила имеют сопоставимые предикатные термы и
первые объекты. Строго говоря, apples и X не сопоставимы. Но прежде чем
заключить, что сопоставление опять неуспешно, вспомните, что X работает
как местоимение "это". Являясь переменной, X, может быть сопоставлен с
чем угодно.
      В русском языке значение для "это" определяется контекстом. Всякий
раз, когда Турбо-Пролог встречает переменную, пытаясь сопоставить объ-
екты, он присваивает переменной значение, полученное из контекста для
этой переменной. Так как позиция объекта X в голове правила точно такая
же, как позиция apples в цели, то Турбо-Пролог присваивает значение apples
переменной X. Теперь X и apples означают для Турбо-Пролога одно и то же.
Это связывание используется до тех пор, пока либо цель не будет вычислена,
либо нельзя будет выполнить никакого другого сопоставления с учетом этого
связывания.
      Так как теперь X имеет значение apples, то предикат likes(beth, X)
имеет "значение" likes(beth, apples). Турбо-Пролог успешно сопоставил голо-
ву правила и цель, присвоив значение apples переменной X.
      Теперь Турбо-Пролог пытается выполнить условие if likes(mary,
X). Так как переменной X присвоено значение aplles, то Турбо-Пролог дол-
жен доказать или опровергнуть условие "если Мэри любит яблоки" для то-
го, чтобы доказать действительно ли истинна голова правила "Бет любит яб-
локи". Таким образом, новая задача состоит в том, что бы проверить, что Мэ-
ри любит яблоки. Эта "подзадача", или подцель, была создана самим Турбо-
Прологом как шаг, направленный на решение задачи, содержащейся в цели.
Подцелью теперь является
      likes(mary, aplles).
      Турбо-Пролог пытается выполнить эту подцель для того, чтобы дока-
зать или опровергнуть условие головы правила likes(beth, apples).
      Анализируя факты и правила программы, Турбо-Пролог находит факт
      likes(mary, apples).
и пытается сопоставить его слева направо с целью likes(mary,apples).



                                                                         20