文法Gによって生成された言語をプロダクションで見つけるように求められます
S → aAb | bAa
A → aSa | S | λ
最初に、開始記号Sから始まる小さな派生を考えます。
S ⇒1 aAb ⇒1 aaSab | aSb | ab
S ⇒1 bAa ⇒1 baSaa | bSa | ba
難しいステップは、規則A → aSa、S → aAb、およびS → bAaによって生成される再帰を処理することです。この困難に対処する手がかりは、Gによって生成される言語の帰納的な定義を検討することによって明らかになります。
1. ab ∈ L4
2. ba ∈ L4
3. w ∈ L4 → awb ∈ L4
4. w ∈ L4 → bwa ∈ L4
5. w ∈ L4 → awa ∈ L4
ルール (3)-(5) は、 G のルールA → aAa、S → aAb、およびS → bAaに対応します。帰納的な定義とGの規則が同じ言語を定義していることは容易にわかります。帰納的な定義は、Gの言語が段階的に段階的に構築できることを示しています。Gで生成可能な最小の文字列から始めて、問題のあるルールに対応するより大きな文字列セットを構築します。
L(1) = {ab, ba}
L(n + 1) = {awb, bwa, awa : w ∈ L(n)}
セットL (1) には、 Gで生成可能な最小の文字列が含まれます。セットL (n + 1) には、各文字列w ∈ L (n)の文字列awb、bwa、およびawaが含まれます。つまり、L (n + 1) の文字列は、L (n) の文字列に規則S → aAb 、 S → bAa 、 A → aAaを1 回適用して得られる文字列に対応します。残っているのは、集合であるL (n)の和集合を構築することだけです。
L = ⋃ {L(n) : n ∈ ℕ}
Lが文法Gによって生成された言語と同等であることを確認するには、 Gの派生の長さに関する帰納法によって論じることができます。Gで分類可能な最小の文字列(つまり、abとba ) から始めて、適切な帰納仮説を使用して逆方向に作業します。