Представление клауз Хорна на языке Пролог. Факты. Правила. Вопросы



Представление фактов в Пролог—программах.

 

В логическом программировании существует три вида утверждений: факты, правила и вопросы. Самая простая программа на Прологе является множеством фактов. Факт — это предикатная структура, заканчивающаяся точкой, которая записывается следующим образом:

<имя предиката>(<терм1>,<терм2>,…,<термn>).

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

Например,             student(‘Иванов’).

Этот факт означает то, что Иванов является студентом.

Другой пример —

student(‘Иванов’,’МГГУ’).

Этот факт определяет отношение между термами, первым из которых является фамилия студента, а вторым ¾место его учебы. 

Одноместные предикаты определяют свойства объектов, а n¾местные предикаты определяют отношения между объектами. Совокупность наборов значений переменных, при которых предикат p(x1,x2,…,xn) имеет значение “истина” называется n¾местным отношением. Реляционной схемой (схемой отношения) предиката называется описание роли каждого аргумента предиката.

Например, parent(<имя родителя>,<имя ребенка>) ¾ схема предиката parent; person(<имя>,<пол>,<возраст>) ¾ схема предиката person.

Совокупность фактов в Пролог¾программе является аналогом реляционной базы данных, а вопросы к программе подобны запросам к базе данных.

 

Синтаксические правила записи фактов в программе следующие:

1. Имя предиката в утверждении-факте есть символьный атом.

2. После имени предиката записывается список аргументов в круглых скобках. Между именем предиката и открывающей скобкой ‘(‘ не должно быть пробела.

3. Возможны нуль—местные предикаты в фактах, т.е. предикаты, не имеющие аргументов.

4. В качестве аргументов в списке могут быть как переменные, так и константы.

5. В конце факта обязательна точка.

Переменные в фактах неявно связываются квантором всеобщности. Это означает, что факт
p(T1,T2,…Tn).
где Ti –переменные следует понимать так
"(T1) "(T2)… "(Tn) p(T1,T2,…Tn) —истина.

Факты, содержащие переменные, называются универсальными. Примерами универсальных фактов являются следующие утверждения:

plus(X,0,X).
что означает, сумма любого числа Х с нулем равна X.

 proiz(X,0,0).
что означает, произведение любого числа Х с нулем равна 0.

 horizontal(p(X1,Y),p(X2,Y)).
что означает, отрезок прямой, начало и конец которого точки p(X1,Y) и p(X2,Y), соответственно, параллелен оси Х.

 

Вопросы.

Вопрос (целевое утверждение) ¾ это средство извлечения информации из логической программы. С помощью вопроса выясняется, истинно ли некоторое утверждение или нет. С точки зрения логики поиск ответа на вопрос состоит в определении того, является ли утверждение (вопрос) логическим следствием программы или нет.

Вопрос, включающий в себя конъюнкцию предикатов p1,p2,…,pn , называется конъюнктивным вопросом. Каждый предикат pi называется целью. Конъюнктивный вопрос ¾ это конъюнкция целей. Вопросы, состоящие из одной цели, называются простыми вопросами. Вопрос, не содержащий переменных, называется основным вопросом, а вопрос, включающий переменные, называется неосновным

Переменные в вопросах неявно связаны квантором существования. Это означает, что вопрос
?¾p(X1,X2,…Xn).
где X1,X2,…Xn¾переменные, предполагает утвердительный ответ, если существует такой набор термов t1,t2,…tn, что подстановка {X1=t1,X2=t2,…Xn=tn} в предикат p дает результат “истина”. Если существует, хотя бы одна такая подстановка, то вопрос
?¾p(X1,X2,…Xn).
выводим из логической программы, т.е. является логическим следствием программы.

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

 

 

Правила.

Кроме фактов, логические программы могут содержать правила, условные предложения языка Пролог. Правила ¾ это средство определения новых утверждений, используя уже существующие в Пролог¾программе утверждения (факты и правила).

С точки зрения синтаксиса языка Пролог правило ¾это утверждение вида
A:¾ B1,B2,…Bn. (n³0)
где A ¾ заголовок правила, а конъюнкция предикатов B1,B2,…Bn
называется телом правила.

В правилах, так же как и в фактах, переменные неявно связаны квантором всеобщности. Например, утверждение «Точка с координатами (X,Y) принадлежит окружности с радиусом, равным 2, и с центром в точке начала координат, если X2+Y2=4.» на Прологе будет записано следующим образом:

circle(X,Y):¾ X^2+X^2=4.
что означает для любых X и Y, таких что X^2+X^2=4, точка (X,Y) принадлежит окружности с радиусом, равным 2, и с центром в точке начала координат.

В Пролог¾программе может быть записано произвольное число фактов и правил. Набор правил, заголовки которых имеют одно и то же имя и арность, описывает одно и то же отношение и называется процедурой.

 

 


Дата добавления: 2018-04-04; просмотров: 242;