Учебное пособие: Язык логического программирования Visual Prolog
I . Основы языка VisualProlog
1. Введение в логическое программирование
В Прологе мы получаем решение задачи логическим выводом из ранее известных положений. Обычно программа на Прологе не является последовательностью действий, — она представляет собой набор фактов с правилами, обеспечивающими получение заключений на основе этих фактов. Поэтому Пролог известен как декларативный язык.
Пролог включает механизм вывода, который основан на сопоставлении образцов. С помощью подбора ответов на запросы он извлекает хранящуюся (известную) информацию. Пролог пытается проверить истинность гипотезы (другими словами, ответить на вопрос), запрашивая для этого информацию, о которой уже известно, что она истинна. Прологовское знание о мире — это ограниченный набор фактов (и правил), заданных в программе.
Одной из важнейших особенностей Пролога является то, что, в дополнение к логическому поиску ответов на поставленные вами вопросы, он может иметь дело с альтернативами и находить все возможные решения. Вместо обычной работы от начала программы до ее конца, Пролог может возвращаться назад и просматривать более одного "пути" при решении всех составляющих задачу частей.
Логика предикатов была разработана для наиболее простого преобразования принципов логического мышления в записываемую форму. Пролог использует преимущества синтаксиса логики для разработки программного языка. В логике предикатов вы, прежде всего, исключаете из своих предложений все несущественные слова. Затем вы преобразуете эти предложения, ставя в них на первое место отношение, а после него — сгруппированные объекты. В дальнейшем объекты становятся аргументами, между которыми устанавливается это отношение. В качестве примера в табл. представлены предложения, преобразованные в соответствии с синтаксисом логики предикатов.
Таблица 1. Синтаксис логики предикатов
Предложения на естественном языке | Синтаксис логики предикатов |
Машина красивая | fun (car) |
Роза красная | red (rose) |
Билл любит машину, если машина красивая | likes (bill, Car) if fun (Car) |
2. Факты
На Прологе описываются объекты (objects ) и отношения (relations ), а затем описывает правила (rules ), при которых эти отношения являются истинными. Например, предложение
Билл любит собак. (Billlikesdogs.)
устанавливает отношение между объектами Bill и dogs (Билл и собаки); этим отношением является likes (любит). Ниже представлено правило, определяющее, когда предложение "Билл любит собак" является истинным:
Билл любит собак, если собаки хорошие. (Bill likes dogs if the dogs are nice.)
В Прологе отношение между объектами называется фактом (fact). В естественном языке отношение устанавливается в предложении. В логике предикатов, используемой Прологом, отношение соответствует простой фразе (факту), состоящей из имени отношения и объекта или объектов, заключенных в круглые скобки. Как и предложение, факт завершается точкой (.) .
Ниже представлено несколько предложений на естественном языке с отношением "любит" (likes):
Билл любит Синди. (Bill likes Cindy)
Синди любит Билла. (Cindy likes Bill)
Билл любит собак. (Bill likes dogs)
А теперь перепишем эти же факты, используя синтаксис Пролога:
likes(bill, cindy).
likes(cindy, bill).
likes (bill, dogs).
Факты, помимо отношений, могут выражать и свойства. Так, например, предложения естественного языка "Kermitisgreen" (Кермит зеленый) и "Caitlinisgirl" (Кейтлин — девочка) на Прологе, выражая те же свойства, выглядят следующим образом:
green (kermit).
girl(caitlin).
3. Предикаты
Отношение в Прологе называется предикатом. Аргументы — это объекты, которые связываются этим отношением; в факте
likes (bill, cindy).
отношение likes — это предикат, а объекты bill и cindy — аргументы.
Примеры предикатов с различным числом аргументов:
pred(integer, symbol)
person (last, first, gender)
run()
--> ЧИТАТЬ ПОЛНОСТЬЮ <--