Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2013_1 / ОТС / promet.pdf
Скачиваний:
95
Добавлен:
23.02.2015
Размер:
683.47 Кб
Скачать

3.Замена переменных с повторяющимися именами на уникаль­

ные.

4.Исключение кванторов существования заменой вида:

"x($yP(x,y)) = "xP(x, f(x)). Функция f(x) называется сколемовской функцией и позволяет обозначить существующий элемент y = f(x).

5. Вынесение кванторов и запись формул в приведенной форме вида "x1..."xk Q .

6. Приведение Q к конъюнктивной нормальной форме вида

q

m

Q= ¿

¿ Pij .

i=1

j=1

7.Исключение кванторов общности.

8.Запись списков Гi = Pi1, Pi2, ... , Pim; i=1, ... , q.

К полученным из аксиом спискам Г1; ... ; Гq следует добавить списки Г0, полученные из отрицания формулы Т, которую следует доказать как теорему. Если исходный набор дизъюнктов Г1; ... ; Гq был непротиворечив и Т – теорема, то объединенный набор Г0; Г1;... ; Гn будет противоречивым или невыполнимым. Поэтому в ис­ числении R(Г0; Г1; ... ; Гn) доказуем пустой список дизъюнктов.

Логической основой языка Пролог является исчисление резоль­ вент для хорновских дизъюнктов. Хорновские дизъюнкты имеют единственный предикатный литерал без символа отрицания, то есть имеют вид P0, ~P1, ... , ~Pm. Подобное ограничение позволяет упро­ стить механизм работы интерпретатора Пролог-машины и придать Пролог-программам процедурную интерпретацию. Последнее суще­ ственно облегчает эффективную реализацию систем программиро­ вания.

3. МЕХАНИЗМ РАБОТЫ ИНТЕРПРЕТАТОРА ПРОЛОГ-МАШИНЫ

Программа на Прологе является набором аксиом вида А(x1, ..., xk) :– А1(x1, ..., xk) , ... , Аn(x1, ... , xk),

соответствующих высказываниям вида

"x1 ... "xk (A1(...) &...& An(...) É A(...)),

и теоремы A1(...), ... , Aq(...), соответствующей высказыванию $x1 ... $xk(A1(...) & ... & Aq(...)).

После преобразования формул в список получим для аксиом

~(A1 & ... & An) A = A ~A1 ... ~An ;

для теоремы

~( x1 ... xk(A1 &...& Aq) = x1 ... xk (~A1 ... ~Aq) ~A1 ... ~Aq. Списки литералов А1, ... , Am в аксиомах и теореме, учитывая на­ личие отрицаний, будем называть "минус-частью" предложения. Предложение, не содержащее "минус-части", описывает безуслов­

ное высказывание или факт.

Условием применения правила резолюции для двух предложе­ ний является полное текстуальное совпадение литералов в Ai(...) и ~Ai(...). Для достижения этого (если это возможно) выполняется уни­ фицирующая подстановка (x1,...,xk / t1, ... ,tk ) в оба литерала. Замена переменных xj на термы tj называется совмещением или унификаци­ ей. Из всех возможных подстановок механизм унификации выбира­ ет минимальный по числу присваиваний вариант. Примерами могут служить следующие подстановки (x, y, z – переменные; a – терм ) :

{P(x), P(a)}(x / a) P(a)

{P(f(x), y, g(y)), P(f(x), z, g(x))}(y, z / x, x) P(f(x), x, g(x)) {P(a), P(f(x))} – неунифицируемые литералы.

Следует напомнить, что заменять в подстановке можно только переменные на термы, но не наоборот, что следует из смысла кван­ тора всеобщности: для любого x, в том числе и для t, имеет место истинность предиката P. Механизм унификации является единственным средством в Прологе для присваивания значений переменным литералов. Отсюда же следует и важное свойство: в пределах программы переменная не может быть означена более одного раза.

При доказательстве теоремы интерпретатор Пролог-машины реализует следующий алгоритм.

1.Обработка теоремы производится применением правила ре­ золюции к литералам "минус-хвоста" последовательно слева напра­ во.

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

3.Если не удалось найти такой аксиомы, то управление переда­ ется механизму возвратов (backtracking) к п.6.

4.Все вхождения переменных, означенных при совмещении, за­ меняются на термы-значения. Замена производится как в литералах "минус-хвоста" теоремы, так и в "минус-части" аксиомы.

5.Модифицированная "минус-часть" аксиомы подставляется на место удаляемого литерала "минус-хвоста" теоремы, что соответ­ ствует получению резольвенты двух предложений : "минус-хвоста" и найденной аксиомы. Процесс продолжается с шага 2.

6.Обработка очередного литерала считается неудачной и осу­ ществляется возврат к обработке "минус-литерала", непосредствен­ но предшествующему данному.

7.Производится очистка всех переменных, означенных при по­ следнем совмещении. Переменные становятся вновь свободными.

8.Отыскивается очередная аксиома (начиная с непосредствен­ но следующей за только что использованной), совместимая с рассматриваемым литералом. Иди к п. 3.

При доказательстве теоремы Пролог-машина реализует страте­ гию поиска "в глубину" при обходе дерева вывода. Результат дока­ зательства теоремы – значения переменных, удовлетворяющие тре­ бованиям, и дерево доказательства – существенно зависит от по­ рядка аксиом в программе. Это объясняется неединственностью ре­

шения поставленной задачи xQ .

Приведем пример программы на Прологе:

смертен(Х) :– человек(Х).

(1)

человек("Тьюринг").

(2)

человек("Сократ").

(3)

грек("Сократ").

(4)

Доказательство теоремы

 

смертен(Х), грек(Х), write(X).

(5)

сведено в табл. 1.

 

 

 

 

Таблица 1

 

Трассировка доказательства теоремы

 

 

 

 

Номер

Присваивания при сов­

 

Минус-хвост

клоза

мещении

 

 

5

 

смертен(Х), грек(Х), write(X)

Соседние файлы в папке ОТС