Логическое программирование на языке Visual Prolog. Солдатова О.П - 17 стр.

UptoLike

17
Программа на Прологе включает в себя постановку задачи в виде
множества фраз Хорна (раздел clauses) и описание цели (раздел goal), -
формулировку теоремы, которую нужно доказать, исходя из множества
правил и фактов, содержащихся в этой постановке.
Процесс поиска доказательства основан на методе линейной
резолюции (дизъюнкты подбираются в порядке их следования в тексте
программы
).
Проиллюстрируем принцип логического программирования на
простом примере: запишем известный метод вычисления наибольшего
общего делителя двух натуральных чиселалгоритм Евклида в виде
Хорновских дизъюнктов. При этом примем новую форму записи фразы
Хорна, например S
∨¬
P
∨¬
Q
∨¬
R будем записывать как S: - P, Q, R. Тогда
алгоритм Евклида можно записать в виде трех фраз Хорна:
1. NOD (x, x, x): -.
2. NOD (x, y, z): - B (x, y), NOD (f (x, y), y, z).
3. NOD (x, y, z): -B (y, x), NOD (x, f (y, x), z).
Предикат NODопределяет наибольший общий делитель z для
натуральных чисел x и y, предикат Bопределяет отношение «больше»,
функция fопределяет операцию вычитания. Если мы заменим предикат B и
функцию f
обычными символами, то фразы примут вид:
1. NOD (x, x, x): -.
2. NOD (x, y, z): - x>y, NOD ((x- y), y, z).
3. NOD (x, y, z): -y>x, NOD ((x, y- x), z).
Для вычисления наибольшего общего делителя двух натуральных
чисел, например 4 и 6, добавим к описанию алгоритма четвертый дизъюнкт:
4.
: - NOD (4, 6, z).
Последний дизъюнктэто цель, которую мы будем пытаться вывести
из первых трех дизъюнктов.
2.2 Основы языка программирования Пролог
Язык программирования Пролог (PROgramming LOGic) предполагает
получение решения задачи при помощи логического вывода из ранее
известных фактов. Программа на языке Пролог не является
последовательностью действийона представляет собой набор фактов и
правил, обеспечивающих получение логических
заключений из данных
фактов. Поэтому Пролог считается декларативным языком
программирования.
Пролог базируется на фразах (предложениях) Хорна, являющихся
подмножеством формальной системы, называемой логикой предикатов [2].
Пролог использует упрощенную версию синтаксиса логики
предикатов, он прост для понимания и очень близок к естественному языку.
Пролог имеет механизм вывода, который основан на сопоставлении
образцов. С
помощью подбора ответов на запросы Пролог извлекает