- •1. ИСПОЛЬЗОВАНИЕ ЯЗЫКА ПРОЛОГ
- •2. ЛОГИЧЕСКИЕ ОСНОВЫ ЯЗЫКА ПРОЛОГ
- •2.1. Представление знаний и фактов
- •2.2. Исчисления логического типа
- •2.3. Исчисление резольвент
- •3. МЕХАНИЗМ РАБОТЫ ИНТЕРПРЕТАТОРА ПРОЛОГ-МАШИНЫ
- •Трассировка доказательства теоремы
- •4. ЯЗЫК ПРОЛОГ
- •4.1. Объявления
- •4.2. Данные и константы
- •Типы данных в Прологе
- •4.3. Управление возвратом
- •5. ВСТРОЕННЫЕ ПРЕДИКАТЫ И ФУНКЦИИ
- •5.1. Арифметические вычисления
- •5.2. Ввод и вывод
- •5.3. Текстовые окна и управление экраном
- •5.4. Обработка строк и преобразование типов
- •5.5. Базы данных
- •5.6. Вспомогательные средства
- •6. МОДУЛЬНОЕ ПРОГРАММИРОВАНИЕ
- •БИБЛИОГРАФИЧЕСКИЙ СПИСОК
- •ОСНОВНЫЕ КОНСТРУКЦИИ ЯЗЫКА ПРОЛОГ
компактны за счет более сложной семантики конструкций языка, в частности, из-за неявного использования унификации переменных и более сложного механизма управления. Программы на Прологе имеют хорошо структурированную модульную структуру, легко мо дифицируемы, допускают параллельную разработку независимыми программистами.
Данная работа содержит основные сведения об исчислении ре зольвент, необходимые для понимания работы интерпретатора язы ка Пролог, и описание версии языка для персональных ЭВМ типа IBM PC, близкой к системам Turbo-Prolog и SWI-Prolog. Turbo-Prolog работает под управлением MS DOS, SWI-Prolog – под управлением Windows 95/NT. Языки отличаются набором встроенных предикатов и организацией выполнения программ. SWI-Prolog поддерживает версию языка, описанную в [2].
2. ЛОГИЧЕСКИЕ ОСНОВЫ ЯЗЫКА ПРОЛОГ
2.1. Представление знаний и фактов
Системы искусственного интеллекта (СИИ) относятся к классу систем, основанных на знаниях. Знания используются СИИ для по иска решения поставленных задач с привлечением данных о кон кретных объектах предметной области. Под данным или фактом бу дем понимать высказывание о свойствах или отношениях некоторых конкретных объектов предметной области. Ссылка на предметную область необходима для интерпретации записей высказываний. За писи высказываний должны удовлетворять грамматике языка коди рования, который образует знаковую систему, состоящую из множе ства S правильных цепочек символов. Для задания семантики сооб щений языка S необходимо указать отображение I : S → A , называ емое интерпретацией языка S, в A – множество явлений предмет ной области. В связи с этим факт соответствует коду s S, однознач но отображаемому в I(s) A .
Альтернативой фактам являются знания – высказывания о не котором подмножестве фактов предметной области. Знания могут касаться либо свойств, либо связей между свойствами группы объектов. Например, утверждения ЧЕТНОЕ(2), ЧЕТНОЕ(6), ЧЕТ
НОЕ(378) и т.д. позволяют задать свойства указанных целых чисел и являются фактами. В то же время утверждение { x : x mod 2 = 0 } задает свойство четности всех чисел, для которых остаток от деле ния на 2 равен нулю, что является знанием.
Следует отметить то, что кодирование фактов принципиально позволяет представить лишь конечное их число, знания же приме нимы к произвольному даже потенциально бесконечному числу фак тов, что делает их качественно различными по своей роли в СИИ.
Под представлением фактов и знаний будем понимать способ или язык кодирования соответствующих высказываний. Различают два класса представлений: декларативные и процедуральные. Де кларативное представление предполагает явное задание фактов или их связей, процедуральное предполагает задание алгоритма вычисления фактов. Примерами декларативных представлений фактов являются иерархические, сетевые и реляционные модели данных, широко используемые в СУБД. Для получения новых фак тов из хранимых в БД используются процедуральные представле ния знаний, погружаемые в программы для ЭВМ. Другими примера ми декларативных представлений для данных являются фреймы, семантические сети и их процедуральные компоненты в виде си стем продукций вида
если <условие> то <действие>, где <условие> задает применимость продукции к текущему состоя
нию базы данных; <действие> задает необходимые изменения в базе данных путем
добавления новых фактов, удаления или модифика ции существующих.
Следует отметить различия в форме и содержании представле ний декларативных и процедуральных знаний в приведенных приме рах, что требует разработки соответствующих инструментальных средств для манипулирования ими при решении задач. В связи с этим обстоятельством более предпочтительными являются логиче ские представления на основе исчислений предикатов первого по рядка, обладающие полнотой и универсальностью для задания как фактов, так и правил вывода.
2.2. Исчисления логического типа
При описании предметной области часто ограничиваются сле дующими моделями. Пусть имеется некоторое количество исходных высказываний и некоторое число правил построения новых выска зываний из исходных или уже построенных. Такие системы называ ются дедуктивными или исчислениями [3]. Среди всех возможных исчислений важное место занимают исчисление предикатов, обла дающее универсальной моделирующей силой для любых формаль ных систем.
В основе исчисления предикатов лежат язык записи правильно построенных формул (ППФ), совокупность правил вывода из истин ных посылок истинных следствий и соглашения об условиях приме нимости правил. Для построения какой-либо теории некоторая сово купность ППФ объявляется аксиомами, на основе которых выводят ся теоремы теории. Если система аксиом непротиворечива, то тео рия не пуста, в противном случае теория пуста и не содержит истин ных высказываний.
Язык исчисления предикатов первого порядка задается набо ром из четырех множеств, называемых сигнатурой языка:
Я = < Srt, Cnst, Fn, Pr >,
где Srt – определяют множества предметных переменных фикси рованных сортов;
Cnst – множество предметных констант разных сортов;
Fn – множество функциональных символов языка, задающих отображение объектов различных сортов вида f(П1,...,Пn) в некоторый сорт П ;
Pr – множество предикатных символов, имеющих вид P(П1,...,Пn), где n – арность или местность предиката.
Выражениями исчисления предикатов являются термы и форму лы. Термами являются переменные x и константы некоторого сорта П, функциональные термы сорта П вида f(t1, ..., tn) , где t1, ..., tn – тер мы соответствующих сортов. Формулами языка являются выраже ния вида P(t1,...,tn) – атомарные формулы и их композиции с исполь зованием логических связок : & – "И", v – "ИЛИ", É – "влечет", ~ – "НЕ". Переменные, входящие в термы t1, ..., tn, могут быть свободны
ми и связанными кванторами " – "для всех" и $ – "существует". Для указания области действия кванторов и структуры формул исполь зуются круглые скобки. Примером формулы является выражение "x $z (( P(f(x, y)) & $u (Q(u, z)) v Q(u, y))). При переименовании связан ной переменной смысл формулы не меняется, если после пере именования переменная не совпадает со свободными, в противном случае имеет место коллизия переменных. Замену свободных пере менных x1, ..., xk на термы t1, ..., tk называют подстановкой W = x1, ..., xk/t1, ..., tk, где W(xj) = tj . Подстановка W в формулу T обозначается T(x1, ..., xk/t1, ..., tk) или T(W) . Примерами подстановок являются :
($y P(x, y, z))(x/f(x, b)) |
= |
($y P(f(x, b), y, z)); |
($z "y P(x, y)ÉQ(x))(x/f(z, y)) |
= |
($z "q P(f(z, y),q) ÉQ(f(z, y))); |
("y P(y, z) v $y R(x, y))(x, y/f(x, y), z) = ("y P(y, z) v $z R(f(x, y), z)) В двух последних примерах для исключения коллизий произве
дены замены связанных переменных y. Для задания истинности формул необходимо задать соответствие сортам П некоторые мно жества объектов предметного мира – носители сорта Dп . Подста новка в выражение предметных констант вместо констант и пере менных языка позволяет оценить истинность выражения. Задание носителей и способа оценивания выражений языка вводит модель М или интерпретацию языка.
Замкнутые формулы в модели М задают истинные или ложные высказывания. Если формула содержит свободные переменные, то истинность или ложность зависит от оценки ее параметров, то есть она задает предикат от своих параметров. Для проверки истинности замкнутых формул можно использовать перебор всех объектов Dп . В частности, для установления истинности в М выражения "x A(x) следует убедиться , что имеет место A(x/b) для всех b из Dп. Анало гично для выражения $x A(x) следует найти такое b из Dп, что истин но A(x/b). Очевидно, что такой способ проверки истинности формул не конструктивен, так как Dп может быть бесконечным. Поэтому для установления истинности формул используются синтаксические ме тоды, основанные на выводе этих формул из некоторой совокупно сти аксиом применением правил вывода исчисления предикатов. Каждое правило исчисления предикатов обладает свойством сохра
нения истинности: если истинны посылки правила, то истинно за ключение.
Известно несколько эквивалентных вариантов формализации дедуктивных рассуждений, отличающихся составом схем аксиом и правил вывода. Эквивалентность вариантов исчислений заключает ся в том, что, если некоторое утверждение Т выводимо в одном, то оно выводимо (является теоремой) и в другом варианте при одних и тех же аксиомах теории. Наиболее употребительными вариантами исчислений предикатов первого порядка являются секвенциальный, гильбертовский и резолютивный.
Формализация секвенциального варианта включает понятие се квенции следующих видов:
Ф1 , ... ,Фn Ф ; Ф1 ,... ,Фn ; Ф ; ,
где Ô1 , ... , Ôn , Ô – формулы исчисления предикатов (ИП). Аксиомами ИП являются секвенции:
Ф Ф ; x = x , x =y; Ф z/x Ф z/y ,
где Ф – формула ИП, x, y, z – переменные. Правилами вывода ИП являются следующие:
1. Г Ф; Г Ц – правило введения конъюнкции.
Г Ф Ц
2. |
Г Ф & Ц |
– |
правило |
исключения |
дополни |
||||
|
Г Ф |
|
|
|
|
|
тельных условий. |
|
|
|
Г Ф & Ц |
|
|
||||||
3. |
– |
правило |
исключения |
дополни |
|||||
|
Г Ц |
|
|
|
|
|
тельных условий. |
|
|
|
Г Ф |
|
|
||||||
4. |
– правило введения дизъюнкции. |
||||||||
|
Г Ф Ц |
|
|
|
|
|
|
||
5. |
Г Ц |
– правило введения дизъюнкции. |
|||||||
|
Г Ф Ц |
|
|
|
|
|
|
||
6. |
Г,Ц Х; Г,Ц Х; Г Ф Ц |
– |
правило |
разбора возможных |
|||||
|
|
|
Г Х |
|
случаев. |
|
|
||
|
Г,Ф Ц |
|
|
|
|||||
7. |
– правило переформулировки те |
||||||||
|
Г Ф Ц |
|
|
|
оремы. |
|
|
||
|
Г Ф; Г Ф Ц |
|
|
|
|||||
8. |
– правило modus ponens, отделе |
||||||||
|
Г Ц |
|
|
ния посылки от заключения. |
|||||
|
|
|
|
|
|
|
|||
