Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Prolog.doc
Скачиваний:
31
Добавлен:
12.03.2015
Размер:
929.28 Кб
Скачать

Утверждения

Программа на Прологе есть совокупность утверждений. Утверж­дения состоят из целей и хранятся в базе данных Пролога. Таким образом, база данных Пролога может рассматриваться как программа на Прологе. В конце утверждения ставится точка «.». Иногда утверж­дение называется предложением.

Основная операция Пролога - доказательство целей, входящих в утверждение.

Существуют два типа утверждений:

факт: это одиночная цель, которая, безусловно, истинна;

правило: состоит из одной головной цели и одной или более хво­стовых целей, которые истинны при некоторых условиях.

Правило обычно имеет несколько хвостовых целей в форме конъ­юнкции целей.

Конъюнкцию можно рассматривать как логическую функцию И. Таким образом, правило согласовано, если согласованы все его хво­стовые цели.

Примеры фактов:

собака(рекс).

родитель(голди,рекс).

Примеры правил:

собака(Х) :- родитель(Х,У),собака (Y).

человек(Х) :- мужчина(Х).

Разница между правилами и фактами чисто семантическая. Хотя для правил мы используем синтаксис операторов (см. гл. 6), нет ни­какого синтаксического различия между правилом и фактом.

Так , правило

собака(Х) :- родитель (X,Y), собака (Y).

может быть задано как

:-собака(Х) ',' родитель(Х,Y),собака (Y).

Запись верна, поскольку :- является оператором «при условии, что», а ',' - это оператор конъюнкции.

Однако удобнее записывать это как

собака(Х) :- родитель(Х,Y),собака (Y).

и читать следующим образом: « Х - собака при условии, что родите­лем Х является Y и Y - собака».

Структуру иногда изображают в виде дерева, число ветвей кото­рого равно арности структуры.

Запросы

После записи утверждений в базу данных вычисления могут быть инициированы вводом запроса.

Запрос выгладит так же, как и целевое утверждение, образуется и обрабатывается по тем же правилам, но он не входит в базу данных (программу). В Прологе вычислительная часть программы и данные имеют одинаковый синтаксис. Программа обладает как декларатив­ной, так и процедурной семантикой. Мы отложим обсуждение этого вопроса до последующих глав. Запрос обозначается в Прологе утвер­ждением ?-, имеющим арность 1. Обычно запрос записывается в опе­раторной форме: за знаком ?- следует ряд хвостовых целевых утвер­ждений (чаще всего в виде конъюнкции).

Приведем примеры запросов:

?-собака(X).

?- родитель(Х,Y),собака (Y).

или, иначе,

'?-'(собака(Х))

('?-') ',' (родитель(Х, Y),собака (Y)).

Последняя запись неудобна тем, что разделитель аргументов в структуре совпадает с символом конъюнкции. Программисту нужно помнить о различных значениях символа ','.

Запрос иногда называют управляющей командой (директивой), так как он требует от Пролог-системы выполнения некоторых дейст­вий. Во многих реализациях Пролога для управляющей команды ис­пользуется альтернативный символ, а символ ?- обозначает приглашение верхнего уровня интерпретатора Пролога. Альтернативным символом является :-. Таким образом,

:-write (собака).

- это управляющая команда, в результате выполнения которой печа­тается атом собака. Управляющие команды будут рассмотрены ниже при описании ввода программ.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]