например «Яблоко красное» или «Имеет место событие А, если имеют место события
B, D, C». Последнее утверждение может быть записано с помощью хорновских
дизъюнктов в виде A:-B,C,D, или в логике предикатов первого порядка в виде
формулы BCDA или ~B~C~DA. Именно набор хорновских
дизъюнктов с заголовками составляет логическую программу, например:
A:-B,C,D.
B:-E,F.
C:-G.
D.
T.
F.
G.
Описание предметной области является статическим, оно только определяет
базу данных, в которой хранится информация об объектах и отношениях между ними.
Логическая программа начинает выполняться только после ввода
предполагаемого заключения, которое называется запросом или вопросом к
программе и представляет собой условие или конъюнкцию нескольких условий.
Например:
?- A. имеет ли место событие A
?- C. имеет ли место событие C
?- A,C,D. имеют ли место одновременно события A,C и D.
Входящие в вопрос предикаты могут иметь аргументы, например
?- A(X). найти такие X, что имеет место событие A(X)
В логической программе получение (вычисление) ответа на вопрос означает
доказательство существования рассматриваемого объекта. Процесс завершается
успешно, если вопрос к программе логически следует из исходных условий. Для
выполнения программы используется встроенная система автоматического поиска
вывода или автоматического доказательства теорем. Одна из главных проблем
логического программирования – это поиск эффективных методов организации
выполнения логических программ.
Ковальский и ван Эмден предложили два альтернативных подхода к
прочтению текстов логических программ – процедурный и декларативный. Правило
A:-B,C,D. можно трактовать двояко, во-первых, как логическое утверждение о том, что
высказывание A истинно, если одновременно истинны утверждения B, C и D, и, во-
вторых, как определение процедуры A, для выполнения которой надо выполнить
действия B, C и D.
Первый интерпретатор языка Пролог был разработан группой Алэна Колмероэ
из Марсельского университета в 1972 г. Программа была реализована на Фортране и