Рассмотрим основные понятия логики предикатов, на которых базируется язык логического программирования – Пролог. Элементарные фразы логики предикатов, либо другими словами  - высказывания, представляют собой атомы.

Атомы  логики предикатов, состоящие из символов четырех видов.

Переменные, например: X, Book.

Индивидные константы служат именами индивидуумов объектов, людей или событий, например:

"Карандаш", "Марина", "Книга".

Предикатные константы или имена предикатов задают правила соединения констант и переменных, например: «Писать», «Вычислять».

Функциональные константы или имена функций представляют такие же правила, как и предикаты, с целью различения имен предикатов и имен функций, функциональные имена пишут одними строчными буквами, например: «писать», «вычислять», «плюс».

Для представления констант, переменных, предикатов и функций будет использоваться латинский алфавит.

Эти основные символы используются при формировании следующих трех понятий.

Терм есть переменная или функция, где функция представляет собой функциональную константу, соединенную с подходящим числом термов. Если f является функциональной n-местной константой и t1,…,tn – термы, то соответствующая форма обозначается f(t1,…,tn). Если n=0, то функция f() обозначается через f и является  индивидной константой.

Предикатом называется предикатная константа, соединенная подходящим числом термов. Если P является предикатной m-местной константой и t1,…,tm – термы, то соответствующая форма обозначается P(t1,…,tm). Если m=0, то предикат P() обозначается через P и называется высказыванием.

Формулы строятся по индукции из атомов с помощью логических связок (операций) (не (`not`), конъюнкция (`^^`), дизъюнкция (`vv`), импликация (`->` ), тождественность (=)) и кванторов общности (`AA`) и квантора существования ( `EE`).

Базис: любой атом является формулой.

Индукционный шаг: если X и Y являются формулами,  а x – это переменная, то `not` X, X`^^` Y X `vv` YX`->` Y, X=Y.

Ограничение: формула получается только с помощью правил базиса и индукционного шага.

Формулы могут получать значения истинности (истина, ложь) либо, другими словами,  быть проинтерпретированы.

Таблица 1.Таблица истинности для отрицания

X ¬X
ложь истина
истина ложь

 

Таблица 2.Таблица истинности для логических связок

     X

  Y 

  X`^^`Y

  X`vv`Y

X`|->` Y

X = Y

ложь

ложь

ложь

ложь

истина

истина

ложь

истина

ложь

истина

истина

ложь

истина

ложь

ложь

истина

ложь

ложь

истина

истина

истина

истина

истина

истина

 

Проиллюстрируем синтаксис логики предикатов, сопоставляя несколько фраз, представленных на естественном языке, с помощью языка логики.

Женя посылает книгу Марине / посылка (женя, марина, книга);

Здесь, посылка - предикатная константа;

женямаринакнига - индивидные константы;

В следующих примерах демонстрируется использование кванторов общности. 

Каждый человек прогуливается / `AA` X (человек(X`larr` прогуливаться(X));

Некоторые люди прогуливаются /`EE` X (человек(X`^^` прогуливаться(X));

Ни один человек не прогуливается / `not` (     X (человек(X`^^ ` прогуливаться(X))).

Здесь, человек, прогуливаться - предикатные константы;

X - переменная.