Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СборкаМЛ_05_2008.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
1.37 Mб
Скачать

1.2. Синтаксис языка предикатов

Описание алфавита. Алфавит языка будет состоять из конечного числа символов, разбитых на группы.

  • Логические символы (связки и кванторы):

&

  • Вспомогательные символы (запятая, прямые и круглые скобки и символы для построения переменных):

, [ ( ] ) x '

  • Нелогические символы. Набор σ нелогических символов, называемый нелогической сигнатурой, заранее не фиксируем, заметим только, что он может состоять из конечного числа так называемых предикатных и функциональных символов, предназначенных, соответственно, для обозначения отношений и функций. Считаем также, что каждому нелогическому символу поставлено в соответствие неотрицательное целое число  его местность (арность). При этом k-местные функциональные символы используются для обозначения k-местных функций, а k-местные предикатные символы  для обозначения k-местных отношений.

Заметим, что 0-местные функциональные символы используются для обозначения констант из универсума, а 0-местные предикатные символы  для обозначения высказываний, не зависящих от элементов универсума. Можно считать, что 0-местные предикатные символы используются для обозначения 0-местных отношений, то есть подмножеств множества U0 = {λ}, так что существует всего два 0-местных отношения: Ø и {λ}, где λ  нульместный набор, а Ø  пустое множество.

Кроме того, считаем, что σ всегда содержит символ “=” для обозначения предиката равенства. Множество же функциональных символов может быть пустым.

Если σ = (P1, P2, ..., Pk; f1, f2, ..., fs), где Pi  предикатный νi местный символ, fj – функциональный μj-местный символ (i = 1, 2, ..., k; j = 1,  2,  ...,  s), то набор

 = 1, ν2, ..., νk; μ1, μ2, ..., μs)

называется типом сигнатуры σ (k  1, s  0).

Мы зафиксировали набор логических и вспомогательных символов, но не фиксируем набор σ. Выбор его иногда удобно связывать с конкретной теорией, язык которой мы собираемся моделировать. Так, например, при построении формальной арифметики обычно используются известные знаки арифметических отношений и функций: =, <, +, , 0, 1 и т.д.

Заметим, что выбор логических и вспомогательных символов также в большой мере случаен. В качестве логических связок можно было бы выбрать обозначения функций из любого функционально полного набора булевых функций, имеется также возможность варьировать набор кванторов. Так, например, можно ограничиться следующим набором логических символов: , , , а остальные определить через них.

Построение переменных. Для обозначения переменных будем использовать построенные из двух символов x и ' выражения вида x, x', x'', x''' и т.д. Очевидно, таким способом можно построить счетный набор переменных. На практике неудобно пользоваться выражениями с большим количеством штрихов, поэтому используются разные способы их кодирования, например, для обозначения переменных используют разные буквы с индексами и без них: x, y, z, x1, y1 и т.д. Здесь нам важно отметить, что для построения счетного набора переменных достаточно использовать конечное число символов. Множество переменных обозначим через V (Var). Построенные нами переменные часто называют индивидными переменными.

Построение термов осуществляется по следующим правилам.

  1. Функциональный нульместный символ из σ или переменная являются термами.

  2. Если f  функциональный k-местный (k ≥ 1) символ из σ и t1, t2, ..., tk  термы, то выражение вида f (t1, t2, ..., tk) является термом.

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

Термы используются как имена или формы для образования имен объектов универсума. Заметим, что в правилах построения термов мы не использовали инфиксную запись термов, хотя на практике будем использовать для наглядности термы вида (xfy), где x, y  переменные, а f  функциональный двухместный символ. При рассмотрении синтаксиса будем использовать лишь префиксную запись, имея в виду, что от записи вида (x f y) можно перейти к записи f (x, y).

Множество всех термов обозначим через Term (или через Term(σ), когда необходимо указать явно нелогическую сигнатуру).

Построение атомарных (элементарных) формул. Если P  предикатный k-местный символ и t1, t2, ..., tk  термы, то выражение P(t1, t2, ..., tk)  атомарная формула. В частности, при k = 0 список t1, t2, ..., tk  пустой, и скобки опускаются.

На практике наряду с такими выражениями для двухместных предикатных символов будем использовать инфиксные выражения вида (x P y), где x, y  переменные, а P  двухместный предикатный символ.

Построение формул.

  1. Атомарная формула является формулой.

  2. Если A и B  выражения, являющиеся формулами, то выражения вида [A&B], [AB], [AB] являются формулами.

  3. Если A  формула, то  A  формула.

  4. Если y  переменная и A  формула, то выражения y A и y A  формулы.

Правила 1-4 полностью определяют множество выражений, являющихся формулами. Обозначим это множество через Form (или Form(σ)). На практике выражения y и y иногда для наглядности заключают в круглые скобки.

Введем некоторые синтаксические понятия, касающиеся формул.

Любая подпоследовательность следующих друг за другом символов в формуле A, которая сама является формулой, называется подформулой формулы A. Очевидно, что одна и та же подформула может иметь несколько вхождений в формулу A. Нетрудно доказать, что два различных вхождения подформулы не могут перекрываться.

Подформула формулы A, которая непосредственно следует за символами y или y, где y  переменная, называется областью действия соответствующего квантора. Нетрудно видеть, что область действия квантора в формуле определяется однозначно.

Вхождение переменной y называется связанным, если оно находится в области действия квантора по y, и свободным в противном случае. Очевидно, одна и та же переменная может иметь в формуле и свободные и связанные вхождения.

Формула, не имеющая свободных вхождений переменных, называется замкнутой формулой или предложением. Множество всех предложений, построенных из символов сигнатуры σ, обозначим через Sent(σ).

На этом описание синтаксиса логического языка 1-го порядка заканчивается. Напомним, что мы определили множества Var, Term, Form, Sent, составляющие описание языка. Построенный язык будем обозначать через L(σ). Термы, формулы и предложения, построенные с помощью сигнатуры σ, будем называть также σ-термами, σ-формулами, σ-предложениями.

Пример. Рассмотрим сигнатуру σ = {P, Q, a, f, g}, где P, Q – соответственно одноместный и двух местный предикатные символы, а a, f, g – нульместный, одноместный и двухместный функциональные символы. Кроме того, считаем что x, y, z – индивидные переменные. Тогда выражение

[y [P(y)  x[Q(x, f(y))  Q(x, g(a, z))]]& z Q(z, f(z))]

является формулой. Заметим, что рассматриваемая формула не является предложением, поскольку имеет свободное вхождение переменной z; в формуле имеется также и связанное вхождение этой переменной. Мы пока не предлагаем читателю искать смысл рассматриваемой формулы, но советуем сосредоточиться на ее синтаксисе и убедиться в том, что она построена по правилам построения формул. Выделите в ней все термы, атомарные формулы, области действия всех входящих в нее кванторов. Обратите внимание на роль используемых в ней круглых и прямых скобок. Заметим, что синтаксический разбор приведенной выше формулы можно начать с замечания, что она построена из двух подформул

y [P(y)  x[Q(x, f(y))  Q(x, g(a, z))]] и

z Q(z, f(z))

соединенных знаком & и заключенных в прямые скобки и тем самым свести задачу к рассмотрению двух формул меньшей длины.

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