Составители:
Рубрика:
23
В реальной ситуации, вероятно, потребовалось бы подтверждение во-
проса, такого как "Любит ли Мэри красные яблоки?". Эта цель отличается от
предыдущей. Ранее требовалось, только проверит факты, что Мэри любит
яблоки и что эти яблоки красные. Сейчас необходимо знать, любит ли Мэри
яблоки, если они красные. Яблоки могут быть и красные,
и зеленые, и жел-
тые. Но Мэри может вообще не любить яблоки, либо же она их любит, но
они не красные. В таком случае ответ False.
Для того, что бы ввести эти факты в программу, необходимо убрать
утверждение
likes(mary, apples).
и добавить правило
likes(mary, apples) :-
color(apples, red).
По-русски это правило читается как "Мэри любит яблоки, если они
красные". Если вы хотите узнать "Любит ли Мэри яблоки?", то введите
цель
likes(mary,apples).
Турбо-Пролог сопоставляет цель с головой правила
likes(mary,apples). Но это правило имеет условие color(apples, red).
Поэтому это условие должно быть доказано для того
, чтобы цель могла быть
успешной.
Даже если цель сама по себе не имеет подцелей, то Турбо-Пролог все
равно должен сопоставить правило с условием с соответствующим утвер-
ждением. Фактически Турбо-Пролог создает подцель. Для доказательства
головы правила, должны быть доказаны условия тела правила точно так же,
как если бы целевое
утверждение состояло из связки этих подцелей. Турбо-
Пролог успешно доказывает эту подцель, обнаружив среди утверждений
факт color(apples, red). Доказав эту подцель, Турбо-Пролог доказал, что го-
лова правила истинна. Так как голова правила сопоставима с целью, то цель
является успешной.
Для того, чтобы понять как Турбо-Пролог генерирует внутренние
подцели, можно
считать, что условия справа от if (или символа :-) стано-
вятся подцелями исходной цели, когда, пытаясь доказать эту цель, Турбо-
Пролог сопоставляет ее с головой правила.
Для простоты в этом разделе были приведены ясные несложные при-
меры процесса сопоставления. Эти примеры были упрощены так, чтобы
можно было легко увидеть логику управления
программой в Турбо-
Прологе. Теперь вы должны понимать, что сопоставление является очень
важным элементом Турбо-Пролога.
2.4 Внутренние подпрограммы унификации Турбо-Пролога
Турбо-Пролог (как и другие реализации Пролога) имеет внутренние
подпрограммы для выполнения сопоставления и связанных с ним процессов.
Эти неотъемлемые части языка называются внутренними подпрограммами
унификации. Эти подпрограммы
выполняют сопоставление целей и подцелей
В реальной ситуации, вероятно, потребовалось бы подтверждение во- проса, такого как "Любит ли Мэри красные яблоки?". Эта цель отличается от предыдущей. Ранее требовалось, только проверит факты, что Мэри любит яблоки и что эти яблоки красные. Сейчас необходимо знать, любит ли Мэри яблоки, если они красные. Яблоки могут быть и красные, и зеленые, и жел- тые. Но Мэри может вообще не любить яблоки, либо же она их любит, но они не красные. В таком случае ответ False. Для того, что бы ввести эти факты в программу, необходимо убрать утверждение likes(mary, apples). и добавить правило likes(mary, apples) :- color(apples, red). По-русски это правило читается как "Мэри любит яблоки, если они красные". Если вы хотите узнать "Любит ли Мэри яблоки?", то введите цель likes(mary,apples). Турбо-Пролог сопоставляет цель с головой правила likes(mary,apples). Но это правило имеет условие color(apples, red). Поэтому это условие должно быть доказано для того, чтобы цель могла быть успешной. Даже если цель сама по себе не имеет подцелей, то Турбо-Пролог все равно должен сопоставить правило с условием с соответствующим утвер- ждением. Фактически Турбо-Пролог создает подцель. Для доказательства головы правила, должны быть доказаны условия тела правила точно так же, как если бы целевое утверждение состояло из связки этих подцелей. Турбо- Пролог успешно доказывает эту подцель, обнаружив среди утверждений факт color(apples, red). Доказав эту подцель, Турбо-Пролог доказал, что го- лова правила истинна. Так как голова правила сопоставима с целью, то цель является успешной. Для того, чтобы понять как Турбо-Пролог генерирует внутренние подцели, можно считать, что условия справа от if (или символа :-) стано- вятся подцелями исходной цели, когда, пытаясь доказать эту цель, Турбо- Пролог сопоставляет ее с головой правила. Для простоты в этом разделе были приведены ясные несложные при- меры процесса сопоставления. Эти примеры были упрощены так, чтобы можно было легко увидеть логику управления программой в Турбо- Прологе. Теперь вы должны понимать, что сопоставление является очень важным элементом Турбо-Пролога. 2.4 Внутренние подпрограммы унификации Турбо-Пролога Турбо-Пролог (как и другие реализации Пролога) имеет внутренние подпрограммы для выполнения сопоставления и связанных с ним процессов. Эти неотъемлемые части языка называются внутренними подпрограммами унификации. Эти подпрограммы выполняют сопоставление целей и подцелей 23
Страницы
- « первая
- ‹ предыдущая
- …
- 21
- 22
- 23
- 24
- 25
- …
- следующая ›
- последняя »