5.1.
Канонические системы
Порождения
— это в действительности грамматические правила манипулирования строками символов
и потому их иногда называют правилами переписывания (rewrite rules). Пост
изучал свойства систем правил, базирующихся на порождениях, которые он назвал
каноническими системами [Post, 1943]. Каноническая система — это разновидность
формальной системы, основанной на следующих компонентах:
а1$1
... am$m->b1$'1...bn$'1...bn$'n.
где
(I) каждое
ai и bi; есть фиксированная строка;
(II) а1
и am, часто есть нуль;
(III) некоторые
или все из ai или bi могут представлять собой нуль;
(IV) каждое
$i является переменной строкой, которая также может быть нулем;
(V) каждое
$i заменяется определенным $'i .
Определение
канонической системы, возможно, станет более понятным, если привести пример.
Пусть А — алфавит {а, b, с}, а аксиомы суть:
а,
b, с, аа, bb, cc.
Тогда следующие
порождения сгенерируют все палиндромы, базирующиеся на этом алфавите, приняв
за отправную точку имеющиеся аксиомы:
(Р1)$->а$a
(Р2) $ -> ab$ab (РЗ) $ -> с$с.
Более того,
в данном случае можно проследить применение правил, которые должны привести
к росту определенного палиндрома. Например, чтобы сгенерировать bacab, нужно
применить Р1 к аксиоме с, а затем Р2 — к результату. Другими словами, приняв
с в качестве аксиомы, можно вывести из нее теорему аса и добавить
ее к имеющимся аксиомам. Затем из аса можно вывести новую теорему bacab.
Обратите внимание, что эта последовательность порождений не обладает свойством
коммутативности, т.е. если применять те же правила, но в ином порядке, получится
совсем другой результат. Например, если к аксиоме с применить сначала
правило Р2, а затем Р1, то получим abcba.
На первый
взгляд канонические системы довольно тривиальны. Все, что можно сделать в рамках
такой системы, — преобразовать одну строку символов в другую. Но если задуматься,
то любое логическое или математическое исчисление в конце концов сводится к
набору правил манипулирования символами. Мы упускаем это из виду, поскольку
для нас часто важен определенный смысл логических и математических символов,
чего не скажешь о строках типа abcba.
Отсюда следует,
что любая формальная система может рассматриваться как каноническая (см., например,
[Minsky, 1972, Chapter 12J). В действительности к этому нужно добавить
тривиальную оговорку, что такая система может нуждаться еще в дополнительном
алфавите, буквы которого будут использоваться в качестве знаков пунктуации в
сложных доказательствах. Таким образом, для проверки доказательства в любой
формальной системе или для того, чтобы выполнить любую эффективную процедуру,
вполне достаточно способности прочесть строку символов, разделить ее на компоненты
и переупорядочить (при этом, возможно, придется добавить еще какие-то символы
или удалить существующие в исходной строке).
5.1.
Смысл порождений
Пусть
задано порождающее правило в форме
а1$1...am$m->
b1$'1...bn$'n
В
нем a1$1 ... аm$m часто называют антецедентом (antecedent) правила, а b,$'1
... bn$'n консеквентом (consequent) правила, по аналогии с условным выражением
логики высказываний (см. главу 8). Условный оператор обычно записывается в виде
p
U q1 что означает, "если р, то q", например "если вы упали в
реку, то будете мокрым".
Однако
часто значок 'U' заменяют значком '->', что вряд ли стоит делать, поскольку
последний несет более императивный или разрешающий смысл. Как правило, он говорит
не столько о логическом следствии, сколько о том, что нужно сделать, или о том,
что можно было бы сделать.
Правило
в форме Х->У говорит о том, что можно записать, сгенерировать или породить
консеквент У при заданном анцеденте X. Оно не говорит о том, что набор X, У
является неразрывно связанной последовательностью, как в примере с купанием
в реке. Правила переписывания в теоретической лингвистике называются "порождениями",
поскольку правило вида
S->NP+
VP
имеет следующую интерпретацию: "один из способов сформировать предложение S состоит в том, чтобы взять существительное (NР) и добавить к нему глагол (VP)".