Лекция 3

Приведенные грамматики

Df Грамматика $G$ эквивалентна грамматике $G’$: $G \overset{L}{=} G’$

Дальше все для некоторой грамматики $G = (\Sigma, \Gamma, P, S)$, так же будем обозначать $G.\Gamma$ — множество нетерминалов грамматики $G$ — как свойство в каком-нибудь ЯП

Df $A \in \Gamma$ — производящий

$\exists w \in \Sigma^* : A \overset{*}{\implies} w$

Df $A \in \Gamma$ — достижимый

$\exists \alpha, \beta \in (\Sigma \cup \Gamma)^* \ : A \overset{*}{\implies} \alpha A \beta$

Далее $\alpha$ и $\beta$ всегда такие же.

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

Пусть $\Gamma_p$ — множество производящих символов (от producing), а $\Gamma_r$ — множество достижимых символов (от reachable).

Df $G$ — приведенная

Пример множеств достижимых и производящих символов

Пусть $G$ задается так:

тогда:

Пример такой, что множества почти совпадают, но это не говорит о связи между производящими символами и достижимыми. Например $T$ — производящий, но недостижимый, а $K$ — достижимый и не производящий (хоть правило явно мусорное, которое его задает).


Обозначим $G \in \textrm{CFG}$ как $G$ — КСГ, мол $\textrm{CFU}$ — множество всех КСГ.

Th $\forall G \in \textrm{CFG} \, \, \exists G’$ — приведенная грамматика, такая что $G \overset{L}{=} G’$ (1)

Для доказательства приведем два алгоритма:

Al Построение $\Gamma_p$

стабильно — больше не меняется.

Простыми словами — добавляем к $\Gamma_p$ символы, из которых выводятся слова, в которых есть символы из $\Gamma_p$.

Al Построение $\Gamma_r$

Опять простыми словами — нужно брать те символы, которые выводимы из некоторого элемента $\Gamma_r$.

Al Построение приведенной грамматики $\widehat{G}$

Pf Корректность алгоритма

Доказав корректность алгоритма, мы докажем и теорему (1) по построению, мол “Просто используйте алгоритм”.

TODO Тут было много слов и махания руками, но они утеряны, нужно прояснить и написать доказательство. TODO

Порядок поиска множеств $\Gamma_p$ и $\Gamma_r$ важен: в таком порядке делать $(\Gamma_r)_p$ будет неверно!

Пример применения алгоритмов поиска $\Gamma_p$ и $\Gamma_r$

  1. Как видно, такая грамматика не эквивалентна данной, значит в таком порядке применять не нужно.


$\lambda$-свободные грамматики

Df Грамматика $G$ — $\lambda$-свободная

Обозначим как $G \in \textrm{CFG}_{\lambda}$

Либо $\forall p \in G.P \,:\, p \neq (A \rightarrow \lambda)$,
либо $(S \rightarrow \lambda) \in G.P$ и $\forall p \in G.P \,:\, \left[\,p = (A \rightarrow \alpha), \, S \notin \alpha\right]$

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

Df Множество аннулирующих символов КСГ $G$

$Ann(G) = \left{A \in \Gamma\,\vert\, A \overset{*}{\underset{G}{\implies}} \lambda\right}$

Пример поиска $Ann(G)$

Первыми берем очевидные символы из которых напрямую выводится пустой символ — $A$ и $C$. Потом те, из которых выводятся слова, содержащие символы,выбранные раньше, и не содержащие терминалы — $B$, $E$ и $S$.

$D \rightarrow bE \vert c$ не позволяет нам добавить $D$ к $Ann(G)$, так как из $D$ обязательно выведется какой-то непустой символ — $b$ или $c$, хотя из $E$ и выводится пустой символ.


Th $\forall G \in \textrm{CFU} \, \, \exists \, G’ \in \textrm{CFU}_\lambda$ (2)

Для доказательства введем отношение $\llless$ на $(G.\Gamma \cup G.\Sigma)^*$ для некоторой $G \in \textrm{CFG}$:

Al Построение $\lambda$-свободной грамматики $G’$ из $G$

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

Pf (2)

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

Проверим, что $L(G) = L(\widehat{G})$: возьмем $w \in L(\widehat{G}), \, w \neq \lambda$.

$S \overset{*}{\underset{\widehat{G}}{\implies}} w$

на каждом шаге машем руками и все получается…

TODO доказательство упущено, нужно его дописать TODO

Пример построения $\lambda$-свободной грамматики

$G$:

$\widehat{G}$: