10.1. Сплетающие грамматиче ски е системы 423
P
1
= {S
1
→ SY, Y → d
0
Y, X → d
0
X
0
, Z → d
0
Z
0
},
P
2
= {S
2
→ d
1
X , X → d
3
Z, Y → d
0
Y, Z
0
→ d
3
Z, Z
0
→ d
3
Z
00
}
∪ {X → αX | α ∈ {S, A, B, C} ∪ T },
P
3
= {S
3
→ d
2
X , X
0
→ d
2
X , X → d
2
X},
R = {#S$d
1
#xX | S → x ∈ P }
∪ {#d
0
X
0
$d
1
S#, d
1
#Sd
0
$d
2
#X , #ABC$d
3
#Z,
#d
0
Z
0
$d
3
ABC#, #d
0
d
0
$Z
00
#}.
Идея этой конструкции состоит в следующем.
Каждый вывод в Γ имеет две фазы: в первой и митир уется
использование правил S → x из P , а во второй — правила
ABC → λ. На переход от первой фазы к второй указывает
замена X на Z во второй компоненте.
В первой фазе P
2
недетерминированным п утем порождает
строку d
1
xX при некотором x ∈ ({S, A, B, C}∪T )
∗
. Такая стро-
ка может быть использована в сп летен ии, если только S → x —
правило из P . Таким образом, P
2
играет роль производителя
правых частей для правил из P . С помощью правил сплетения
из R, не содержащих символа Z и его штрихованных вариан-
тов, мы можем далее имитировать применение правила S → x
для переписывания в первой компоненте единственного вхо-
ждения S. Переписывающие шаги необходимы между опера-
циями сплетени я именно для изменения нетерминальных сим-
волов. Во время таких переписываний в P
1
и P
2
вводится фик-
тивный терминальный символ d
0
, а в P
3
— символ d
2
. Для того
чтобы повторять этот процесс, не производя строк-паразитов
(здесь имеются в виду строки из (L(Γ) ∩ T
∗
) − L), нам требу-
ется третья компонента. Ее роль состоит в «очистке» второй
компоненты (см. объяснения ниже).
После введения символа Z мы начинаем имитацию прави-
ла ABC → λ. Эта имитация осуществляется так же, как и в
доказательстве теоремы 10.1. Ни одно правило S → x из P не
может быть смоделировано во время этой фазы. Это не явля-
ется ограничением общности, поскольку вывод в грамматике в
нормальной форме Гефферта может без ущерба для порожда-