УДК 004.832.38
А.А. Ларионов, Е.А. Черкашин, И.Н. Терехин
СИСТЕМНЫЕ ПРЕДИКАТЫ ДЛЯ УПРАВЛЕНИЯ ЛОГИЧЕСКИМ ВЫВОДОМ В СИСТЕМЕ АВТОМАТИЧЕСКОГО ДОКАЗАТЕЛЬСТВА ТЕОРЕМ ДЛЯ ИСЧИСЛЕНИЯ ПОЗИТИВНООБРАЗОВАННЫХ ФОРМУЛ1
В статье предлагается подход к реализации процесса управления поиском автоматического доказательства теорем в исчислении позитивно-образованных формул. Управление выводом представляется в виде комбинации системных предикатов в оригинальном логическом языке представления формул. Предложены рекомендации по использованию подхода.
Ключевые слова: исчисление позитивно-образованных формул, автоматическое доказательство теорем, логический вывод.
А.А. Larionov, Е.А. Cherkashin, I.N. Terehin
SYSTEM PREDICATES FOR CONTROL OF LOGICAL INFERENCE IN AUTOMATED THEOREM PROVING SYSTEMS BASED ON CALCULI OF POSITIVELY CONSTRUCTED FORMULAE
An approach for a control process implementation of search for automated theorem proof in the calculi of positively constructed formulae is described in the paper. The search process is represented as system predicates and their combinations in the original logical language for formulae definition. Application recommendations of the approach are proposed.
Keywords: calculi of positively constructed formulae, automated theorem proving, logical inference.
Введение
В работах [2, 3] введено исчисление позитивно-образованных формул (ПО-формул), являющееся логическим формализмом первого порядка. Основным свойством данного формализма является хорошая совместимость с дополнительными стратегиями управления - логическим выводом (ЛВ). Для гибкого использования системы автоматического доказательства теорем (АДТ), для исчисления ПО-формул необходимо разрабатывать специальные средства настройки стратегий ЛВ, чтобы избежать необходимости трудоемкой реализации стратегий на языке программирования, используемого для разработки системы АДТ.
В логических языках программирования, например Прологе [1], введены так называемые системные предикаты (встроенные предикаты, built-in predicates), особенность которых заключается в том, что они или выполняют некоторое побочное действие, например, вывод на экран, чтение файла и другое, или их истинность вычисляется из значений параметров, например var(X) в Прологе определяет, является ли терм X переменной.
В данной работе рассматривается использование системных предикатов для управления логическим выводом в процессе построения автоматического доказательства теорем в исчислении ПО-формул, то есть как способ задания дополнительных знаний о задаче в виде модификаторов стратегии, используемой по умолчанию. Для этого в начале представим формальные определения языка и исчисления ПО-формул, затем введем системные предикаты и покажем способы их использования для управления ЛВ. Кроме того, опишем архитектуру разработанной программной системы и примеры использования ее варианта, включающего реализацию системных предикатов.
1. Исчисление позитивно-образованных формул и его свойства
Пусть Con - множество всех конъюнктов. Будем предполагать, что конъюнкт есть либо конечное множество обычных атомарных формул (атомов) языка логики предикатов первого порядка, либо F, где F удовлетворяет свойству: A с F для каждого A е Con . Пустой конъюнкт будем обозначать T . Атомы любого конъюнкта, за исключением T и F, могут содержать термы, построенные по общим правилам языка исчисления предикатов первого порядка на основе индивидных переменных, индивидных констант функциональных символов.
Язык LF позитивно-образованных формул определяется следующим образом:
1) если A е Con , то KX:A есть K -формула, где K е {V, 3) , X - множество индивидных переменных, элементы X будем называть K -переменными, либо, соответственно, универсальными и эк-
1 Работа выполнена при финансовой поддержке РФФИ, грант 10-07-00051-а.
зистенциальными переменными;
2) B е Con , Ф - множество K -формул, то МУ:БФ есть M-формула, где M е {V, 3] , M Ф K , Y -множество индивидных переменных;
3) каждая ПО-формула есть либо V -формула, либо 3 -формула.
Таким образом, ПО-формула имеет древовидную структуру. Поэтому в дальнейшем иногда удобнее будет представлять ПО-формулы именно в виде дерева, а также пользоваться соответствующей терминологией: узел (позитивный квантор), ветвление, корень, лист.
Без потери общности будем считать, что корень ПО-формулы (узел 0-го уровня) есть V:T, а каждый лист есть 3 -формула (узел).
Любой узел вида 3X:A , непосредственно следующий за корнем (узел 1-го уровня), называется базой данной ПО-формулы. Конъюнкт A будем называть базой фактов. Подформула, корень которой есть база, называется базовой подформулой. Любой непосредственный потомок VY:B базы 3X:A (узел 2-го уровня) называется вопросом к базе 3X:A .
Семантика ПО-формулы Р вводится на основе обычной семантики соответствующей формулы (Р)™1 в исчислении предикатов первого порядка:
1) если Aе Con,A¿{F,T} , то A& = &{а:ае A] , F& = False , T& = True (пропозициональные константы);
2) пусть X ={x...,xm] , тогда (ЗХ^Ф)®7 =3x1 ...3xm(A& &(Ф)ИП),
(VX:A^)™ = Vx1 ...Vxm(A& ^(^)ИП), где (ФИП) = &{(аИП):ае Ф], (^ИП) = v{(a™):ае .
Общие понятия логической выполнимости, общезначимости, противоречивости, эквивалентности, свободного и связного вхождений переменных и т.д. для ПО-формул понимаются так же, как и для соответствующей формулы исчисления предикатов.
В процессе доказательства некоторого утверждения Р часто доказывают противоречивость его отрицания. Мы будет действовать также.
Будем говорить, что вопрос VY:B к базе 3X:A имеет ответ в тогда и только тогда, когда в - отображение (подстановка) Y ^ H” и Вв с A, где H” - эрбрановский универсум, основанный на переменных из X (заметим, что это только экзистенциальные переменные), константах и функциональных символах, встречающихся в A и В . Если X = 0 и в A и В нет констант и функциональных символов,
то H ” ={a] , где а - некоторая новая константа.
Теперь определим единственное правило вывода исчисления JF. Если ПО-формула Р имеет структуру V: T{Г,3X : AФ} , где Г - список других базовых подформул (поддеревьев) формулы Р, а Ф содержит подформулу VY : B{3Z. : Ct];=i¿, тогда результатом оР применения унарного правила вывода
О к вопросу VY:B с ответом в является следующая формула:
оР = V:T{r,{3X и Zi: A и С,вФ и ¥,.в].^ ].
После последующего переименования некоторых связанных переменных внутри каждой подформулы выражение оР будет удовлетворять всем требованиям к ПО-формулам. Будем подразумевать это переименование каждый раз при применении правила О. То же самое относится и к следующим упрощающим заменам: 3X : FФ заменяется на 3: F , V: T {Г, 3: F] заменяется на V: TГ, если Г Ф 0.
Любая конечная последовательность ПО-формул Р,оР,...,олР, где й/Р = V:T3:F , называется выводом Р в исчислении JF=( LF, V: T3: F ,р (с аксиомой V: T3: F ).
2. Системные предикаты и способы управления логическим выводом
Будем называть системным предикатом такой предикат, атомы которого входят в конъюнкты дерева ПО-формулы, но не участвуют непосредственно в ЛВ. Системные предикаты не имеют прямого отношения к формализации задачи, однако влияют на процесс ЛВ некоторыми побочными действиям, их истинностные значения вычисляются, выводят некоторую системную информацию. В языках логического программирования, например Прологе, системные предикаты служат в основном для исполнения некоторых интерактивных действий: вывод информации на экран, чтение и запись файла, добавление и удаление фактов и др.
Введем следующие системные предикаты:
Next (L). Переход к вопросу, помеченному идентификатором L. Предикат помещается в коньюнкт корневой вершины консенквента вопроса. Если на данный вопрос будет произведен ответ, то следующим вопросом, для которого будет производится выбор ответа, будет вопрос (множество вопросов), помеченный идентификатором L. Таким образом, при помощи данного предиката задаются варианты порядка ответа на вопрос.
OffQuestion(L)/OnQuestion(L). Отключение/включение вопроса с идентификатором L. Отключенный вопрос объявляется неактивным, то есть не принимает участие в логическом выводе, при этом в любой момент может быть заново включен.
RemQuestion (L). Удаление вопроса с идентификатором L.
RemFaot (L) и RemPatternFaot (L). Удаление факта помеченного идентификатором L, а также удаление всех основных примеров L, в случае если L - терм.
OffFact (L) /OnFact (L). Отключение и включение факта с именем L. Поведение подобно включению и отключению вопросов.
Write(T). Печать терма T.
Save (L). Пометить состояние процесса поиска ЛВ в данной базовой подформуле идентификатором
L.
Rollback (L). Откатить (backtrack) состояние вывода в базовой подформуле до состояния L с утерей более поздних по отношению к L маркировок.
Commit (L). Фиксировать состояние базы L как неоткатываемое, при этом фиксируются все состояния, помеченные ранее, чем L. Предикаты Commit и Rollback без параметров фиксируют или откатывают последнюю метку.
Для пометки выражений используется следующий синтаксис E’(L), где E - выражение, L - метка.
Кроме того, вводятся арифметические операции, используемые в конъюнкте вопроса и вычисляющие свои аргументы. Если арифметическая операция выполняется над полученными в подстановке аргументами, то подстановка используется в шаге вывода, иначе данная подстановка отвергается.
Рассмотрим некоторые ситуации, при которых перечисленные выше предикаты можно использовать и получать новые свойства процесса поиска ЛВ.
Ключевые точки в доказательстве. Нередко бывает так, что заранее известна некоторая точка, через которую должно пройти доказательство. Достаточно простым примером может служить задача поиска пути в городе между двумя точками, находящимися на разных берегах реки, при наличии одного моста. Понятно, что любой путь будет проходить через мост, однако заранее неизвестно как именно строится этот путь. Предположим, что первая группа вопросов отвечает за правила движения в первой половине города, а вторая за движение во второй половине. Очевидно, что нет смысла пытаться отвечать на вопросы второй группы, пока не преодолен мост, а после его преодоления нет смысла отвечать на вопросы первой группы. Таким образом, перед началом доказательства вопросы второй группы объявляются неактивными, а после ответа на специальный вопрос, описывающий факт перехода через мост неактивными объявляются вопросы первой группы, а вопросы второй группы включаются.
Очищение формулы. Другим типом задач являются задачи с некоторой дискретизацией шагов. Например, если моделируется переход системы из одного состояния в другое во времени, шаг такого перехода может быть эквивалентен нескольким шагам правила вывода о. Часть выведенной информации, отвечающая за сам процесс перехода, может быть удалена, а другая часть, отвечающая за описание нового состояния, сохраняется. Примером может служить задача планирования движения робота в дискретном пространстве. Часть информации устаревает и ее необходимо регулярно удалять из базы. Кроме того, устаревать могут и вопросы, отвечающие за конструктивные средства описания перехода из одного состояния в другое (движение ноги, кабины лифта и др.). Например, в базе должна оставаться история пройденного пути или решения поставленных роботу задач (обслужить все вызовы и т.п.).
Улучшение эффективности вывода. Рассмотрим простую задачу вычисления n-го элемента ряда Фибоначчи. На языке ПО-формул данная задача вычисления 10-го элемента ряда формализуется следующим образом:
[Vn,x,y:f(n,x),f(n + 1,y) - 3:f(n + 2,x + y)
V:T-3:f(1,1),f(2,1)-\
[ Vx :f(10,x)-3:F,
где в процессе поиска подстановки 0 операция «+» из значений ее аргументов вычисляется в константу (целое число), данная константа используется в 0 вместо операции «+»; в консеквенте вопроса операция «+» заменяется на вычисленную константу во время применения подстановки.
В ходе ЛВ база постепенно наполнится фактами и станет возможным ответ на целевой вопрос. При обычном выводе с каждым ответом на первый вопрос в базу помещаются ответы, некоторые из которых будут дублироваться и как следствие могут производиться излишние вычисления. Вычисления ряда Фибоначчи подразумевают, что для вычисления последующего элемента достаточно использовать лишь два предыдущих элемента ряда. Это значит, что базу можно ограничить двумя последними добавленными элементами. Поскольку ответ на первый вопрос приводит к добавлению базы только одного нового факта, базу можно ограничить с помощью ввода системного предиката, удаляющего один самый старый элемент базы. Первый вопрос ПО-формулы с системным предикатом будет выглядеть так:
Vn, x,y:f(n,x),f(n + 1,y) - 3:f(n + 2,x + y)'(n + 2),remFact(n), при этом запись '(L) означает «пометить терм меткой L». Соответственно база данной ПО-формулы выглядит так:
3:f(1,1)'(1),f(2,2)'(2).
Удаление элементов из базы можно организовать без использования меток атомов, если использовать RemPatternFact:
Vn, x,y:f(n,x),f(n + 1,y) - 3:f(n + 2,x + y)'(n + 2),remPatternFact(f(n,_)).
Символ подчеркивания интерпретируется, как и в Прологе, в качестве анонимной переменной. Из базы будут удалены все факты, являющиеся основными примерами f(n,_). Нетрудно заметить, что такой подход эквивалентен предыдущему, однако не требует дополнительных меток атомов.
Косвенное управление. Вывод (в смысле, ввод/вывод данных) некоторой системной информации косвенно можно отнести к управлению логическим выводом, поскольку данная информация может интерпретироваться пользователем или, возможно, иной программой управления ЛВ как некоторые входные данные для принятия решения. Среди выводимой информации отметим следующее: текущий шаг вывода, имя базы, имя вопроса, ответная подстановка, количество фактов в базе, время ЛВ и печать некоторых термов.
3. Программная система
Реализация системных предикатов в программной системе АДТ обладает следующими особенностями. Во-первых, теперь имеется несколько типов предикатов: простой предикат, вычислимый предикат, предикат с побочным действием, соответственно появляется необходимость различать их, например, либо помечать каждый предикат его типом, либо хранить специальную таблицу символов, в которой для каждого имени предиката задан его тип и способ обработки. Во-вторых, необходимо учитывать, что вычислимый предикат не участвует в процедуре унификации, а его истинность влияет на всю истинность конъюнкта. В-третьих, предикаты с побочным действием могут глобально влиять на систему логического вывода, а значит, необходимо предусмотреть соответствующие средства влияния.
На рис. 1 представлена архитектура системы АДТ. Выделяются три основных модуля, используемых в программной системе: модуль доступа к ПО-формуле, модуль поиска ответных подстановок, модуль управления ЛВ.
Модуль доступа отвечает за эффективный доступ к различным частям ПО-формулы: фактам, вопросам, ответным подстановкам и др. В данном модуле реализованы механизмы: эффективное извлечение термов (term retrieving), основанное на методиках индексирования термов (term indexing) [6], в частности выбраны метод индексирования путями (path indexing) и метод индексирования деревом подстановок (substitution tree indexing); разделение общих данных для экономии памяти. Некоторые методы данного модуля реализованы в более ранних версиях программной системы АДТ для исчисления ПО-формул, в частности в [4, 5].
Модуль поиска ответных подстановок представляет собой отдельный поток (thread), независящий от стратегии ЛВ. Это значит, что для стратегии подразумевается, что все возможные подстановки для данного вопроса уже найдены, при этом сам процесс поиска подстановок может производиться независимо (например, на предназначенных для этого специализированных вычислительных узлах).
Модуль управления ЛВ получает сигналы от различных источников, например от системных предикатов. Каждому системному предикату соответствуют сигналы: set_next_question, rem_fact, rem_question, write, mark_fact, enable_question, disable_question, enable_fact, disable_fact, save, rollback, commit. Кроме того, предусмотрены сигналы, получаемые от внешних источников, например, от пользователя или другой программы: pause - приостановить вывод, start - возобновить вывод, stop - завершить вывод.
Системная информация содержит данные о текущем состоянии вывода: количество прошедшего времени с начала ЛВ, история опровержения баз, история выбора вопросов и ответов, информация о будущем (что выбирать далее), состояние памяти и др.
Рис. 1. Архитектура системы АДТ
Данная архитектура позволяет вводить новые виды предикатов, а также иные способы влияния на логический вывод (например, непосредственное вмешательство пользователя) путем реализации обработки новых видов сигналов.
Заключение
В работе рассмотрены вопросы использования так называемых системных предикатов с точки зрения применения их для управления логическим выводом (ЛВ). Такой подход особенно интересен в купе с положительными свойствами формализма ПО-формул, позволяющих снабжать логический вывод дополнительными стратегиями, зависящими от конкретной решаемой задачи. Приведены примеры классов стратегий, описываемых данным подходом, показаны стратегии для некоторых конкретных задач.
Реализация системы на основе использования многопоточности и передачи сигналов позволяет расширять набор системных предикатов независимо от основного кода программы АДТ, а также создавать иные способы управления ЛВ.
Дальнейшая работа заключается в развитии способов управления логическим выводом, ориентированных на заданные классы задач, представляемые в специальном языке описания стратегий логического вывода, а также поддержку интерактивного логического вывода.
Литература
1. Братко И. Алгоритмы искусственного интеллекта на языке PROLOG. Вильямс, 2004. 640 с.
2. Васильев С.Н., Жерлов А.К., Федунов Е.А., Федосов Б.Е. Интеллектное управление динамическими системами. М.: Физматлит, 2000. 352 с.
3. Васильев С.Н., Жерлов А.К. Об исчислении типово-кванторных формул // Докл. РАН. 1995. Т.343, № 5. С. 583-585.
4. Давыдов А.В., Ларионов А.А., Черкашин Е.А. Об исчислении позитивно-образованных формул для автоматического доказательства теорем // Моделирование и анализ информационных систем. 2010. Т.17, №4. С.60-69.
5. Черкашин Е.А. Разделяемые структуры данных в системе автоматического доказательства теорем КВАНТ/3. // Вычислительные технологии. 2008. Т. 13. С. 102-107.
6. Robinson A., Voronkov A. Handbook of Automated Reasoning. The MIT Press. 2001. 2081 p.
Ларионов Александр Александрович, аспирант кафедры информационных технологий Института математики, экономики и информатики Иркутского государственного университета, тел. (395-2) 242210, e-mail: [email protected]
Черкашин Евгений Александрович, кандидат технических наук, зав. лаб. в Учреждении Российской академии наук Институте динамики систем и теории управления СО РАН, тел. (395-2) 513013, e-mail: [email protected]
Терёхин Иван Николаевич, студент кафедры информационных технологий Института математики, экономики и информатики Иркутского государственного университета, тел. (395-2) 242210, e-mail: [email protected]
Larionov Alexander Alexandrovich, postgraduate student at Information Technology department of Institute of Math-ematic, Economics and Computer Science at Irkutsk State University.
Cherkashin Evgeny Alexandrovich, Ph.D in technical science, chief of a laboratory in Institute for Systems Dynamics and Control Theory at SB RAS.
Terehin Ivan Nikolaevich, student at Information Technology department of Institute of Mathematic, Economics and Computer Science at Irkutsk State University.