МАТЕМАТИКА
УДК 519.68:510
С. А. Нигиян, Л. О. Хачоян, В. Р. Акопян
Оптимизация систем логического программирования
посредством
преобразований их программ
(Представлено академиком Н.У. Аракеляном 14/X 2003)
В работе дано определение T-оптимизируемой
системы логического программирования, где T - некоторое множество преобразований
программ. В качестве иллюстрации общего подхода выбраны интерпретатор системы
PROLOG и множество преобразований, которые переставляют и удаляют предложения
программ, переставляют атомы в телах правил программ. Для ряда систем
логического программирования получены результаты относительно их
T-оптимизируемости.
1. Определения и обозначения. Зафиксируем три непересекающихся счетных множества Ф, П и Х. Ф - множество функциональных символов с приписанной каждому
символу местностью, причем для любого n > 0 Ф содержит
счетное число символов местности n. Х - множество
предметных переменных. Из элементов множеств Ф и Х строятся термы.
1. Каждый 0-местный символ из Ф есть терм.
2. Каждая переменная из Х есть терм.
3. Если
t1, t2, ..., tn (n
> 0) - термы и f - n - местный символ из Ф, то
f(t1,ј,tn) есть терм.
4. Других термов нет.
Множество всех термов, не использующих
предметных переменных, обозначим через M. Множество M называется универсумом
Эрбрана.
П=П1ИП2, где П1 - множество
предикатных символов с приписанной каждому символу местностью, причем для любого
n > 0 П1 содержит счетное число символов
местности n; П2 - некоторое множество
интерпретированных предикатных символов (встроенных предикатов), каждый
k-местный (k > 0) встроенный предикат представляет собой вычислимое
отображение Mk®{true, false}.
Атом определяется традиционным образом:
1. Каждый 0-местный символ из П1 есть атом.
2. Если t1, ј, tn (n > 0) - термы и p -
n-местный символ из П1,
то p (t1,ј,tn) есть
атом.
3. Других атомов нет.
Атом, использующий предикатный символ из П1, назовем предикатным термом. Атом,
использующий встроенный предикат из П2, назовем
условием. Множество всех переменных атома A обозначим через Var(A).
Традиционным образом определяется формула
логики предикатов первого порядка, использующая логические операции Ш,&, Ъ, Й и кванторы $, " (см.[1]).
Опишем рассматриваемые нами интерпретации.
Предметным множеством рассматриваемых интерпретаций будет множество M.
Функциональные символы интерпретируются следующим образом: каждому 0-местному
символу из Ф сопоставляется он сам, каждому n-местному (n
> 0) символу f О Ф сопоставляем
отображение Mn ® M, которое n-ке
(t1,ј,tn) О Mn, где ti О
M, i = 1,ј,n, ставит в соответствие терм
f(t1,ј,tn). Каждому 0-местному
символу из П1 сопоставляется один из элементов
множества {true, false}, а каждому n-местному (n > 0) символу из П1 сопоставляется некоторое отображение
Mn ® { true, false}. Обозначим описанное
множество интерпретаций через H. Заметим, что интерпретации из H могут
отличаться одна от другой лишь отображениями, сопоставляемыми символам множества П1.
Пусть F - замкнутая формула и I -
интерпретация из H. Значение формулы F на интерпретации I определяется
традиционным образом. Формула называется тождественно истинной, если она
принимает значение true на любой интерпретации из H. Пусть F и Fў - замкнутые формулы. Мы будем говорить, что формула Fў является логическим следствием формулы F, и обозначать это
F|=Fў, если формула F Й Fў является тождественно истинной.
Логическая программа P (далее просто
программа) есть последовательность предложений D1,ј,Dn, n > 0. Предложение D О {D1,ј,Dn}
является либо фактом A, либо правилом A:-B1,ј,Bm,
которое является импликацией B1&ј&Bm Й A, где A -
предикатный терм, а каждое из B1,ј,Bm либо предикатный терм, либо условие, m >
0. Атом A называется головой предложения D, а последовательность
B1,ј,Bm - его телом.
Программе P сопоставляется формула
где x1,ј, xv - переменные, использованные в предложениях
D1,ј, Dn, v і 0.
Запрос Q имеет вид ?-C1,ј,Ck, где
Ci - либо предикатный терм, либо условие, i = 1,ј,k, k > 0. Запросу Q сопоставляется формула
где y1,
ј, ys - переменные,
использованные в атомах C1,ј, Ck, s і 0
(см. [2, 3]).
2. Постановка
задачи. Система логического программирования (кратко LPS)
определяется заданием тройки < Prog, Quer, U > , где Prog -
некоторое множество программ, Quer - некоторое множество запросов, U -
интерпретатор, представляющий собой алгоритм, который для каждой программы P
О Prog и запроса Q О Quer либо
останавливается с положительным ответом (yes), либо с отрицательным ответом
(no), либо с неопределенным ответом, либо функционирует бесконечно. Результат
применения U к P и Q обозначим U(P,Q). Если U(P,Q) есть yes или no, то будем
говорить, что U(P,Q) - определено. Интерпретатор U должен обладать свойством
логической корректности:
если U(P,Q) = yes, то P| = Q;
если U(P,Q) = no, то P| № Q.
Пусть P О Prog и
Yes(P) = {Q | Q О Quer и P| = Q}.
Будем говорить, что программы
P1,P2 О Prog эквивалентны
(обозначим P1 ~ P2), если
Yes(P1)=Yes(P2).
Под преобразованием множества программ Prog
мы будем понимать пару (P,Pў), где P
~ Pў, P,Pў О Prog. Пусть T - некоторое множество преобразований программ
Prog, причем для любой программы P О Prog пара (P,P)
О T. Будем говорить, что программа P О Prog T-преобразуема в программу Pў
О Prog, если существует такая последовательность
преобразований (P1, P2), ј,(Pn-1,Pn),
принадлежащих T, что P1=P, Pn=Pў, n > 1 (см. [4]).
Пусть V - алгоритм, который, получив на вход
программу P О Prog, T-преобразует её в программу Pў О Prog (т.е. посредством
преобразований множества T преобразует программу P в программу Pў). Обозначим через W множество всех таких алгоритмов.
Будем говорить, что система логического
программирования (LPS) T-оптимизируема, если существует
такой алгоритм V0 О W, что для любого
алгоритма V О W, для любой программы P О Prog и для любого запроса Q О Quer
имеем:
U(V(P),Q) - определено Ю
U(V0(P),Q) - определено. | |
3. Полученные результаты. Для каждого множества программ Prog определим множество преобразований T,
которые переставляют и удаляют предложения программ, переставляют атомы в телах
правил программ (см. [4]).
Пусть U - интерпретатор системы PROLOG (см.
[3, 5]).
LPS, программы и запросы которой не содержат
встроенных предикатов, назовем чистой LPS.
Tеорема 1. Чистая LPS
(чистый PROLOG) не является T-оптимизируемой.
Доказательство. Пусть
a,b, - 0-местные функциональные символы из Ф, p, q, r -
1-местные предикатные символы из П1, x -
переменная из Х. Рассмотрим следующую программу P и запросы
Q и Qў.
Программа P:
q(a).
r(b).
q(x) : - p(x).
r(x) : - p(x).
p(x) : - q(x).
p(x) : - r(x).
Запрос Q : ? - p(a).
Запрос Qў: ? - p(b).
Легко видеть, что P|=Q, P|=Qў
и для любой собственной подпоследовательности P¢¢ программы P имеем: P¢¢ не эквивалентна P. Легко также заметить, что интерпретатор
U остановится с положительным ответом (yes) для программы P и запроса Q и будет
функционировать бесконечно для программы P и запроса Qў.
Преобразуем программу P, переставив местами
её последние два предложения p(x) : - q(x) и
p(x) : - r(x). Получим программу Pў. Очевидно, что P ~ Pў и интерпретатор U остановится с положительным ответом (yes)
для программы Pў и запроса Qў
и будет функционировать бесконечно для программы Pў и
запроса Q.
Теорема 1 доказана.
Tеорема 2. Чистая LPS,
программы и запросы которой не используют переменных, T-оптимизируема.
Доказательство следует из результатов работы
[4].
Будем говорить, что программа P содержит
повторяющийся предикатный символ q, если число предложений прграммы P, головы
которых используют сивол q, больше 1.
Tеорема 3. Чистая LPS,
программы которой не содержат повторяющихся предикатных символов,
T-оптимизируема.
Доказательство следует из результатов работы
[4].
LPS, которая использует только 0-местные
функциональные символы, 0-местные и 1-местные предикатные символы и встроенные
предикаты < , > ,=, называется простой LPS.
Tеорема 4. Чистая
простая LPS, не является T-оптимизируемой.
Справедливость теоремы 4 следует из
доказательства теоремы 1.
Tеорема 5. Простая LPS
программы которой не используют повторяющихся предикатных символов не является
T-оптимизируемой.
Доказательство. Пусть q - 0-местный, p,r,s - 1-местные
предикатные символы из П1, x - переменная из Х. Рассмотрим следующую программу P и запросы Q и Qў.
Программа P:
q : - x > 0.
r(x) : - x >
3, q.
s(x) : - x <
7, q.
p(x) : - r(x), s(x).
Запрос Q : ? - p(2).
Запрос Qў: ? - p(8).
Легко видеть, что P|
№ Q, P| № Qў и для любой собственной
подпоследовательности P¢¢
программы P имеем: P¢¢ не
эквивалентна P. Легко также заметить, что интерпретатор U остановится с
отрицательным ответом (no) для программы P и запроса Q и остановится с
неопределённым ответом для программы P и запроса Qў.
Преобразуем программу P, переставив местами
атомы в теле её последнего предложения, т. е. последнее предложение теперь стало
иметь p(x) : - s(x), r(x). Получим
программу Pў. Очевидно, что P ~
Pў и интерпретатор U остановится с отрицательным
ответом (no) для программы Pў и запроса Qў и остановится с неопределённым ответом для программы Pў и запроса Q.
Теорема 5 доказана.
Правило A : - B1,ј,Bm (m
> 0) назовем a-правилом, если
Var(B1)И ј ИVar(Bm) Л Var(A).
Tеорема 6. Простая LPS,
программы которой не содержат a-правил и повторяющихся
предикатных символов, T-оптимизируема.
Ереванский государственный
университет
Литература
1. Kleene S.C. Introduction to Metamathematics. D.Van Nostrand Co.
1952.
2. Lloyd J.W. Foundadions of Logic Programming. Berlin: Springer-Verlag.
1984.
3. Нигиян С. А. - Программирование. 1996. N1. С.30-38. (англ. пер. Nigiyan
S. A. - Programming and Computer Software. 1996. V. 22. N. 1. P.
19-25).
4. Нигиян С. А., Хачоян
Л. О. - Программирование. 1997. N6. С.17-28. (англ. пер.
Nigiyan S.A., Khachoyan L.O. - Programming and Computer
Software. 1997. V. 23. N. 6. P. 302-309).
5. Clocksin W. F., Mellish C. S. Programming in
PROLOG. Berlin. Springer-Verlag. 1984. (рус. пер. Клоксин У.,
Меллиш К. Программирование на языке ПРОЛОГ. М. Мир. 1997).