(1)下記の言語が正規言語ではないことを反復補題を利用して証明せよ。
(2)自由文脈文法
はじめに
オートマトンを試験範囲とする大学で、たまに出題される証明問題です。ネットで検索すると、講義資料では説明されていますが、文章として説明する場所が無いように見えました。ですので、今回紹介します。
※頻出問題としては、ある言語Lが与えられ、それに対応するオートマトンを作成する問題があります。こちらに関しては別サイトでの解説が豊富なので、今回は省略します。
標記の問題、皆様はどのような証明を考えますでしょうか。
直感的な証明方法
私が一番最初に考える証明方法は下記です。
状態を規定できないため、正規言語ではない。

こちらの証明方法、ネットでもよく説明されていると思います。実際、試験という限りのある時間であれば、こちらで満点近く得点できるのではないかと考えています。
ただ、少し直感的な説明であることが否めません。数式を用いて、厳密的な証明ができないのでしょうか。
そういった時に出てくる方法が、今回紹介する「反復補題」です。上記の証明方法を背理法として説明しているに過ぎないのですが、実際に厳密的な証明を求められたときに役立つ考え方と思います。
反復補題を使用した証明方法
反復補題とは
与えられた言語Lが正規言語ならば、Lの長さがm以上の任意の系列wが存在します。
また、w=xyzと適当な文字列xyzに分割することができ、以下の条件を満たすことを言います。
- 任意の整数i≧0に対し、
w=xyzの文字列のうち、xとzの間にあるyの個数を変化させても、その結果発生した文字列は変わらずLに属することを指しています。
今回は、背理法を用いて上記と矛盾することを証明します。
これにより、言語
解答例 (1)

w=xyzとする。反復補題の条件2により、yは空集合ではない。反復補題の条件3により、|xy|≦mである。
このとき、yは文字aのみを含む。yに属する文字aの個数をk個(1≦k≦m)とすると、xzはaをm-k個、bをm個含み、個数は一致しない。
このとき、反復補題の条件1
しかし、前述の通りxzにあるaとbの個数は一致しないため、仮定に矛盾する。
反復補題1に反するため、xzはLに含まれない。
解答例 (2)
まず、
以上より、求める生成規則は、
最後に
オートマトンの問題は、文字列の規則性、状態遷移図の概要を手書きで実験して、その後与えられた問に答えることが多いです。
正規言語でないことの厳密な証明は、本問の考え方をベースに行います。
他、正規言語でない文字列は他にもあるため、十分に演習を積むことをオススメします。
参考文献
計算理論とオートマトン言語理論:丸岡 章 (著) P79,80