Дана контекстно-свободная грамматика G с продукциями S→aSb | SS | ε: докажите или опровергните регулярность языка L(G), при необходимости примените теорему о накачке или приведите эквивалентную нормальную форму (Хомский или КЧН) и объясните выводы
Язык L(G)L(G)L(G) порождён грамматикой S→aSb∣SS∣ε,
S \to aSb \mid SS \mid \varepsilon, S→aSb∣SS∣ε,
то есть это язык правильных (сбалансированных) скобочных последовательностей над алфавитом {a,b}\{a,b\}{a,b} (один тип скобок). Ключевое свойство: для любого w∈L(G)w\in L(G)w∈L(G) выполняется #a(w)=#b(w)\#_a(w)=\#_b(w)#a(w)=#b(w). Доказательство по индукции по длине вывода: ε\varepsilonε имеет равные числа; правило aSbaSbaSb добавляет по одному aaa и bbb; правило SSSSSS сохраняет равенство при конкатенации. Доказательство нерегулярности (теорема о накачке). Предположим противное: L(G)L(G)L(G) регулярен. Пусть ppp — длина накачки. Возьмём строку s=apbp∈L(G).
s=a^p b^p\in L(G). s=apbp∈L(G).
По лемме о накачке существует разложение s=xyzs=xyzs=xyz с ∣xy∣≤p|xy|\le p∣xy∣≤p и ∣y∣≥1|y|\ge1∣y∣≥1. Тогда yyy состоит только из символов aaa, т.е. y=aky=a^ky=ak для некоторого k≥1k\ge1k≥1. Рассмотрим накачку вниз i=0i=0i=0: строка xzxzxz содержит p−kp-kp−k символов aaa и ppp символов bbb, значит #a(xz)=p−k<p=#b(xz),
\#_a(xz)=p-k< p=\#_b(xz), #a(xz)=p−k<p=#b(xz),
и поэтому xz∉L(G)xz\notin L(G)xz∈/L(G) (противоречие с тем, что по лемме о накачке все xyizxy^i zxyiz должны лежать в L(G)L(G)L(G)). Следовательно, L(G)L(G)L(G) не регулярный. Вывод: язык L(G)L(G)L(G) не является регулярным.
S→aSb∣SS∣ε, S \to aSb \mid SS \mid \varepsilon,
S→aSb∣SS∣ε, то есть это язык правильных (сбалансированных) скобочных последовательностей над алфавитом {a,b}\{a,b\}{a,b} (один тип скобок).
Ключевое свойство: для любого w∈L(G)w\in L(G)w∈L(G) выполняется #a(w)=#b(w)\#_a(w)=\#_b(w)#a (w)=#b (w). Доказательство по индукции по длине вывода: ε\varepsilonε имеет равные числа; правило aSbaSbaSb добавляет по одному aaa и bbb; правило SSSSSS сохраняет равенство при конкатенации.
Доказательство нерегулярности (теорема о накачке). Предположим противное: L(G)L(G)L(G) регулярен. Пусть ppp — длина накачки. Возьмём строку
s=apbp∈L(G). s=a^p b^p\in L(G).
s=apbp∈L(G). По лемме о накачке существует разложение s=xyzs=xyzs=xyz с ∣xy∣≤p|xy|\le p∣xy∣≤p и ∣y∣≥1|y|\ge1∣y∣≥1. Тогда yyy состоит только из символов aaa, т.е. y=aky=a^ky=ak для некоторого k≥1k\ge1k≥1. Рассмотрим накачку вниз i=0i=0i=0: строка xzxzxz содержит p−kp-kp−k символов aaa и ppp символов bbb, значит
#a(xz)=p−k<p=#b(xz), \#_a(xz)=p-k< p=\#_b(xz),
#a (xz)=p−k<p=#b (xz), и поэтому xz∉L(G)xz\notin L(G)xz∈/L(G) (противоречие с тем, что по лемме о накачке все xyizxy^i zxyiz должны лежать в L(G)L(G)L(G)). Следовательно, L(G)L(G)L(G) не регулярный.
Вывод: язык L(G)L(G)L(G) не является регулярным.