文脈自由言語の反復補題

文脈自由言語の反復補題（ぶんみゃくじゆうげんごのはんぷくほだい、）は、全ての文脈自由言語が持つ属性を与える反復補題である。Bar-Hillelの補題や、uvwxy定理とも呼ばれる。その主たる用法は、ある言語が文脈自由言語でないことを証明することである。

文脈自由言語の反復補題は、任意の文脈自由言語でない言語が文脈自由でないことを証明するのに使えるわけではない。場合によってはより汎用化されたオグデンの補題を使う必要がある。

 形式的定義 
任意の文脈自由言語 L に対して，（反復長 (pumping length) と呼ばれる）ある正の整数 p > 0 が存在し、L 内の |w| ≥ p となる任意の文字列 w を以下のように表すことができる：
w = uvxyz
このとき、文字列 u、v、x、y、z について |vxy| ≤ p、|vy| ≥ 1、そして以下が成り立つ。
 全ての0以上の整数 i ≥ 0 について uv ixy iz が L に含まれる。

なお、文字列 a と b があるとき ab はその連結した文字列を表し、|a| は a の長さを表す。また、ai は a を i 回反復した文字列を表す。

 解説 
文脈自由言語の反復補題（以下、単に反復補題と略記）は、全ての文脈自由言語が持つと保証されている属性を表している。その属性は、当該言語に含まれる長さ p 以上の全ての文字列について成り立つ。ここで、p は定数であり、反復長と呼ばれ、個々の文脈自由言語によって異なる。s が長さ p 以上の文字列とする。反復補題によれば、s は5つの部分文字列  に分けられ、vy は空でない文字列で、vxy の長さは最大で p であり、s の中の v と y に相当する部分を任意の同じ回数繰り返して生成される文字列も同じ言語に含まれる（ゼロ回繰り返す場合も含まれ、その場合 v と y に相当する部分がない文字列 uxz となる）。このような v と y の複製を追加していくことを「反復; pumping」と呼び、そのため反復補題と呼ばれている。

反復補題で言語が文脈自由でないことを証明するには、その言語に含まれる長さ p 以上の文字列 s が上述の属性を持たないことを示せばよい。つまり、反復によってその言語に含まれない文字列が生成されることを示す。

 補題の利用例 

反復補題は、特定の言語  が文脈自由言語ではないことを証明する際によく使用される。これは、任意の長さの文字列  が  に属しているものの、反復操作を行うと  の外に出る文字列を生成することを示すことで証明される。

例えば、集合  が無限であるが（無限の）等差数列を含まない場合、言語  は文脈自由ではない。特に、 が素数全体や平方数全体からなる言語は文脈自由言語ではない。

具体例として、言語  は、背理法で反復補題を使い文脈自由でないことが証明できる。まず、 が文脈自由であると仮定する。反復補題によれば、言語  の反復長を表す整数  が存在する。このとき、文字列  を  に属する文字列として考える。

反復補題によれば、文字列  は  の形式で表現できる。

ここで、部分文字列  は以下の条件を満たす：


 任意の整数  に対して   

 の選び方と  という条件により、部分文字列  は高々2種類の異なる記号しか含まないことがわかる。このため、 としてあり得る文字列は以下の5つに限定される：
  （）
  （）
  （）
  （）
  （）

各場合について、 が  のとき各記号の数が等しくならないことを簡単に確認できる。例えば、 は  の形式にならないが、これは  の定義に矛盾する。したがって、初めの仮定である「 が文脈自由である」という主張は誤りであることが示された。

1960年、Scheinberg は補題の先駆けを用いて、言語  が文脈自由ではないことを証明した。 Here: Lemma 3, and its use on p.374-375.

反復補題は、ある言語が文脈自由でないことを証明する上で便利なツールだが、文脈自由言語を完全に特徴づけるものではない。言語が反復補題の条件を満たさない場合、その言語は文脈自由ではないことが確立される。一方で、文脈自由ではないにもかかわらず、反復補題の条件を満たす言語も存在する。

例えば、以下の言語である：

この場合、文字列  に対して  の場合、 を  のみから構成し、また  に対して  を  のみから構成すれば、いずれの場合も反復された文字列は  に属する。 Here: sect.6.1, p.129

 脚注 

 参考文献 
  Section 1.4: Nonregular Languages, pp.77–83. Section 2.3: Non-context-free Languages, pp.115–119.

 関連項目 
 正規言語の反復補題
 オグデンの補題
 形式言語

Category:形式言語
Category:補題
Category:数学に関する記事