МАТЕМАТИКА

УДК 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) ,

где x1,ј, xv - переменные, использованные в предложениях D1,ј, Dn, v і 0.
   Запрос Q имеет вид ?-C1,ј,Ck, где Ci - либо предикатный терм, либо условие, i = 1,ј,k, k > 0. Запросу Q сопоставляется формула

$y1 ј$ys(C1& ј& Ck) ,

где  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).