§ 35. Логические программы.

Обозначим через PR множество всех правил A ¬ A1, …, Ak, k ³ 0 сигнатуры W, где A, A1, …, Ak – атомы сигнатуры W. Если атом A отсутствует, то правило ¬ A1, …, Ak называется целью (запросом). Если k = 0, то правило A ¬ называется фактом.

Логическая программа Pr есть конечная совокупность правил. Подстановкой называется отображение q: X ® T. Подстановка q(x) = x называется тождественной. Обозначим через Q множество всех подстановок. Подстановки естественным образом распространяются на произвольные выражения. Так для терма t = f(t1, ..., tn) и атома A = P(t1, ..., tn) их подстановки соответственно равны tq = f(t1q, ...,  tnq), Aq = P(t1q, ..., tnq). Правило Aq ¬ A1q, ..., Anq называется вариантом правила A ¬ A1, …, An если q – перестановка множества X.

Зафиксируем правило вычисления R, определяющее в каждом запросе выделенный атом. Пусть N = ¬ A1& ... &Ai& ... &Ak, k ³ 1 запрос, в котором правилом R выделен атом Ai и A ¬ B1& ... &Bl – вариант некоторого правила программы Pr, в котором все переменные отличны от переменных запроса. Пусть q – наиболее общий унификатор атомов Ai и A. Тогда запросы

¬ (A1& ... &B1& ... &Bl& ... &Ak)q, если l ³ 1;                                               (1)

¬ (A1& ... &Ai& ... &Ak)q, если l = 0

будем называть выводимыми из запроса N по правилу A ¬ B1& ... &Bl с помощью подстановки q и правила вычисления R. Как видно из определения, атом Ai не удаляется из запроса при его унификации с некоторым фактом программы. Такие атомы выделяются жирным шрифтом. Будем предполагать, что правило R не выбирает для очередного шага вывода выделенные атомы.

Пространством вычислений для программы Pr и правила вычисления R называется множество всех возможных запросов сигнатуры W с заданным на нем отношением выводимости. SLDF-выводом (Linear resolution with Selection rule for Definite clauses and underlined Facts) цели N в некотором пространстве вычислений, назовем максимальную последовательность запросов N = N0, N1, N2 ... вместе с последовательностью правил C0, C1, ... и унификаций q0q1, ...,  такую что запросы Ni+1 выводимы из запросов Ni по правилам Ci с помощью подстановок qi и правила R. SLDF-вывод – максимальный путь в пространстве вычислений, начинающийся с N. SLDF-вывод, заканчивающийся запросом, в котором все атомы выделены, называется успешным. Конечный SLDF-вывод, не являющийся успешным – тупиковым. Множество всех SLDF-выводов, начинающихся с цели N, обычно представляют в виде дерева (префикс дерева SLDF-выводов) и называют SLDF-деревом вычислений запроса N. SLDF-дерево, содержащее успешный SLDF-вывод, называется успешным.