Итак, нам нужно придумать алгоритм (и доказать, что он правильно работает), который по формуле однозначно указывает:
- ту единственную строчку, по которой формула построена;
- в зависимости от строчки, указывает:
– для отрицаний — формулу A;
– для квантора — этот квантор, переменную x и формулу A
– для формул вида (A)τ (B), где τ — двухместная связка, — формулы A и B и эту связку.
Одновременно с построением алгоритма будем доказывать следующее утверждение:
У: Во всякой формуле число открывающих скобок равно числу закрывающих; во всяком начальном отрезке формулы число открывающих скобок больше или равно числу закрывающих.
Возможны следующие случаи:
— формула может начинаться с имени отношения, отрицания или квантора, анализ и проверка У — очевидны;
— формула может начинаться с открывающей скобки; будем двигаться по формуле слева направо, считая баланс скобок: прибавляя по единице для открывающей скобки и вычитая по единице для закрывающей.
Во втором случае при чтении формулы баланс впервые станет нулевым после прочтения A целиком и следующей закрывающей скобки. Это вытекает из У в применении к A. Второй раз он станет нулевым после прочтения B и следующей (последней) закрывающей скобки.
Таким образом другой результат анализа, т. е. иное выделение A и т. д. невозможен, A, B и двухместная связка определены однозначно иодновременно для всей формулы проверено У.
Полностью договорившись о правилах расстановки скобок мы довольно быстро начнем их нарушать — «опускать» скобки, которые «легко восстановить», как это делается в математике повсеместно.
Как можно ожидать и видно из арифметического примера, с которого начинался настоящий раздел, анализ нам понадобится при определении семантики — значения формул.
Заметим, наконец, что индуктивное определение формулы непосредственно связано с частичным порядком «быть подформулой» на формулах, как раз и определяемым их индуктивным построением.