<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ja">
	<id>https://math.jp/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%E3%81%9D%E3%81%8F%E3%82%89%E3%81%A6%E3%81%99</id>
	<title>Mathpedia - 利用者の投稿記録 [ja]</title>
	<link rel="self" type="application/atom+xml" href="https://math.jp/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=%E3%81%9D%E3%81%8F%E3%82%89%E3%81%A6%E3%81%99"/>
	<link rel="alternate" type="text/html" href="https://math.jp/wiki/%E7%89%B9%E5%88%A5:%E6%8A%95%E7%A8%BF%E8%A8%98%E9%8C%B2/%E3%81%9D%E3%81%8F%E3%82%89%E3%81%A6%E3%81%99"/>
	<updated>2026-06-04T17:32:41Z</updated>
	<subtitle>利用者の投稿記録</subtitle>
	<generator>MediaWiki 1.35.0</generator>
	<entry>
		<id>https://math.jp/w/index.php?title=Knaster-Tarski%E3%81%AE%E5%AE%9A%E7%90%86&amp;diff=9910</id>
		<title>Knaster-Tarskiの定理</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=Knaster-Tarski%E3%81%AE%E5%AE%9A%E7%90%86&amp;diff=9910"/>
		<updated>2022-02-14T13:27:26Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: Add Knaster-Tarskiの定理&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{TOC |align=right |noautonum=1 }}&amp;lt;!-- 右寄せ連番無し目次をここに表示 --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Category:束論|ソクロン]]&lt;br /&gt;
[[Category:不動点定理|フドウテンテイリ]]&lt;br /&gt;
{{begin |preamble}}&lt;br /&gt;
&amp;lt;!-- 参考文献 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 定理環境 --&amp;gt;&lt;br /&gt;
{{newtheorem |type=theorem |display=定理}}&lt;br /&gt;
{{newtheorem |type=lemma |display=補題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=definition |display=定義 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=prop |display=命題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=example |display=例 |family=theorem }}&lt;br /&gt;
&amp;lt;!-- MathJax commands --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\newcommand{\mathsetextension}[1]{%&lt;br /&gt;
\left\{ #1 \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathsetintension}[2]{%&lt;br /&gt;
\left\{ #1 \left| #2 \right.\right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathof}[2]{%&lt;br /&gt;
\mathop{#1}\left(#2\right)%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathderiv}{\mathrel{\mathop{\Rightarrow}^{*}}}&lt;br /&gt;
\newcommand{\mathgen}{\rightsquigarrow}&lt;br /&gt;
\newcommand{\mathgenfun}[1]{\mathbf{#1}}&lt;br /&gt;
\newcommand{\mirrorim}[1]{\overleftarrow{#1}}&lt;br /&gt;
\newcommand{\emptyword}{\varepsilon}&lt;br /&gt;
\newcommand{\kleenecl}[1]{{#1}^{*}}&lt;br /&gt;
\newcommand{\inverse}[1]{{#1}^{-1}}&lt;br /&gt;
\newcommand{\interpret}[1]{[\![#1]\!]}&lt;br /&gt;
\newcommand{\mathautomaton}[1]{\mathcal{#1}}&lt;br /&gt;
\newcommand{\mathnat}{\mathbb{N}}&lt;br /&gt;
\newcommand{\mathcountfunc}{\mathop{\#}}&lt;br /&gt;
&lt;br /&gt;
\newcommand{\mathsup}{\mathop{\sqcup}}&lt;br /&gt;
\newcommand{\mathinf}{\mathop{\sqcap}}&lt;br /&gt;
&lt;br /&gt;
\newcommand{\mathprefix}[1]{\mathop{\mathrm{PreFix}_{#1}}}&lt;br /&gt;
\newcommand{\mathpostfix}[1]{\mathop{\mathrm{PostFix}_{#1}}}&lt;br /&gt;
&lt;br /&gt;
\newcommand{\mathlfp}[1]{\mathop{\mathrm{lfp}_{#1}}}&lt;br /&gt;
\newcommand{\mathgfp}[1]{\mathop{\mathrm{gfp}_{#1}}}&lt;br /&gt;
&lt;br /&gt;
\newcommand{\qed}{\blacksquare}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
{{end |preamble}}&lt;br /&gt;
'''Knaster-Tarskiの定理'''とは代表的な不動点定理の一つである。&lt;br /&gt;
&lt;br /&gt;
== Knaster-Tarskiの定理 ==&lt;br /&gt;
&lt;br /&gt;
{{theorem | type=theorem | name=Knaster-Tarskiの定理 | label=thm-Knaster-Tarski }}&lt;br /&gt;
$\left(L,  \leq \right)$ を[[束#def-complete-lattice|完備束]]，$\varphi\colon L\to L$ を[[初歩的な順序集合#def-order-iso|単調写像]]とする．&lt;br /&gt;
このとき，$\left(L,  \leq \right)$ についての最小不動点 $\mathlfp{\varphi}$，最大不動点 $\mathgfp{\varphi}$が存在し，次が成り立つ．&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\mathlfp{\varphi}&amp;amp;=\mathinf\mathsetintension{x\in L}{\mathof{\varphi}{x}\leq x} \\&lt;br /&gt;
\mathgfp{\varphi}&amp;amp;=\mathsup\mathsetintension{x\in L}{x\leq \mathof{\varphi}{x}} &lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
{{begin  |proof | collapsible=1 }}&lt;br /&gt;
$\mathlfp{\varphi}=\mathinf\mathsetintension{x\in L}{\mathof{\varphi}{x}\leq x}$ を示す．&lt;br /&gt;
以下 $\mathprefix{\varphi}=\mathsetintension{x\in L}{\mathof{\varphi}{x}\leq x}$，$p=\mathinf\mathsetintension{x\in L}{\mathof{\varphi}{x}\leq x}$ と書くことにする．&lt;br /&gt;
&lt;br /&gt;
$\mathof{\varphi}{p}$ が $\mathprefix{\varphi}$ の下界になっていること，つまり，任意の $x\in\mathprefix{\varphi}$ について，$\mathof{\varphi}{p}\leq x$ を示す．&lt;br /&gt;
&lt;br /&gt;
$x\in\mathprefix{\varphi}$ を固定する．定義から $p\leq x$ である．$\varphi$ は単調写像なので，$\mathof{\varphi}{p}\leq \mathof{\varphi}{x}$．$x\in\mathprefix{\varphi}$ より，$\mathof{\varphi}{p}\leq \mathof{\varphi}{x}\leq x$．&lt;br /&gt;
&lt;br /&gt;
$\mathof{\varphi}{p}$ が $\mathprefix{\varphi}$ の下界になっていることから，$\mathof{\varphi}{p}\leq p$．よって，特に $p\in\mathprefix{\varphi}$．&lt;br /&gt;
&lt;br /&gt;
$\mathof{\varphi}{p}\leq p$ と $\varphi$ が単調写像であることから $\mathof{\varphi}{\mathof{\varphi}{p}}\leq \mathof{\varphi}{p}$．よって $\mathof{\varphi}{p}\in\mathprefix{\varphi}$．$p$ の最小性から，$p=\mathof{\varphi}{p}$．ゆえに，$p$ は不動点．&lt;br /&gt;
$p$ が最小不動点になることは，任意の不動点が $\mathprefix{\varphi}$ の元であることと $p$ の定義から明らかである．&lt;br /&gt;
&lt;br /&gt;
$\mathgfp{\varphi}=\mathsup\mathsetintension{x\in L}{x\leq \mathof{\varphi}{x}}$ は同様に示すことができる．&lt;br /&gt;
{{end  |proof}}&lt;br /&gt;
&lt;br /&gt;
== 関連項目 ==&lt;br /&gt;
* [[束]]&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E5%88%9D%E6%AD%A9%E7%9A%84%E3%81%AA%E9%A0%86%E5%BA%8F%E9%9B%86%E5%90%88&amp;diff=9909</id>
		<title>初歩的な順序集合</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E5%88%9D%E6%AD%A9%E7%9A%84%E3%81%AA%E9%A0%86%E5%BA%8F%E9%9B%86%E5%90%88&amp;diff=9909"/>
		<updated>2022-02-14T12:37:14Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: Change labels&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{TOC |align=right |noautonum=1 }}&amp;lt;!-- 右寄せ連番無し目次をここに表示 --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
{{newtheorem |type=def |display=定義 |family=thm }}&lt;br /&gt;
{{newtheorem |type=prop |display=命題 |family=thm }}&lt;br /&gt;
{{newtheorem |type=thm |display=定理}}&lt;br /&gt;
{{newtheorem |type=lem |display=補題 |family=thm }}&lt;br /&gt;
{{newtheorem |type=ex |display=例 |family=thm }}&lt;br /&gt;
&lt;br /&gt;
　実数には大小関係という関係があってそれが重要な役割を果たすように、数学ではしばしば元の大小や順序というものが大切になってくる。ここでは半順序集合、全順序集合、整列集合、帰納的順序集合などの初歩的な順序構造を考える。&lt;br /&gt;
&lt;br /&gt;
== 半順序集合、全順序集合、順序同型 ==&lt;br /&gt;
{{theorem |type=def |name=半順序集合、全順序集合|label=def-poset-toset}}&lt;br /&gt;
$X$ を集合とし、$X$ の $2$ 項関係 $\le$ が与えられているとする。&lt;br /&gt;
* $\le$ が次の $3$ 条件を満たすとき、$(X,\le)$ は'''半順序集合'''あるいは単に'''順序集合'''であるという。$2$ 項関係 $\le$ が文脈から明らかなときは単に $X$ を半順序集合などという。&lt;br /&gt;
# 任意の $x \in X$ に対して、$x \le x$ 。（'''反射律''' ）&lt;br /&gt;
# 任意の $x$、$y \in X$ に対して、「 $x \le y$ かつ $y \le x \Rightarrow x=y$ 」。（'''反対称律''' ）&lt;br /&gt;
# 任意の $x$、$y$、$z \in X$ に対して、「 $x \le y$ かつ $y \le z \Rightarrow x \le z$ 」。（'''推移律''' ）&lt;br /&gt;
半順序集合 $X$ のふたつの元 $a$、$b$ に対して、 $a \le b$ または $b \le a$ が成り立つとき $a$ と $b$ は'''比較可能'''であるという。そうでないとき $a$ と $b$ は'''比較不可能'''であるという。&amp;lt;br /&amp;gt;&lt;br /&gt;
また、半順序集合 $(X,\le)$ と $x$、$y \in X$ に対して次のような言い方をする。$x \le y$ であることを、「 $x$ は $y$ 以下である」とか「 $y$ は $x$ 以上である」などという。$y \ge x$ と書いてもよい。また、$x \le y$ かつ $x \ne y$ であることを、$x &amp;lt; y$ または $y &amp;gt; x $ と書き、「 $x$ は $y$ より小さい」とか「 $y$ は $x$ より大きい」などという。&lt;br /&gt;
* 半順序集合 $(X,\le)$ がさらに次の性質を満たすとき、$(X,\le)$ は'''全順序集合'''であるという。&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li value=&amp;quot;4&amp;quot;&amp;gt;  任意の $x$、$y \in X$ に対して、「 $x \le y$ または $y \le x$ 」（すなわち、任意のふたつの元は比較可能）。&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
{{theorem |type=ex|label=def-finite_automaton}}&lt;br /&gt;
# $\mathbb{R}$、$\mathbb{Q}$、$\mathbb{Z}$、$\mathbb{N}$ は通常の大小関係で半順序集合であり、全順序集合でもある。&lt;br /&gt;
# $X$ を集合とする。$X$ のべき集合 $2^X$ と集合 $X$ の包含関係の組 $(2^X,\subset)$ は半順序集合であるが、全順序集合ではない。例えば、 $X=\{1,2,3\} $、$A=\{1,2\}$、$B=\{2,3\}$ とおくと、$A \subset B$ でも $B \subset A$ でもないので $A$ と $B$ は比較不可能である。&lt;br /&gt;
# 自然数 $a$、$b \in \mathbb{N}$ に対して、$b$ が $a$ で割り切れるとき $a|b$ と書けば、$(\mathbb{N},|)$ は半順序集合であるが、全順序集合ではない。例えば、自然数 $2$ と $3$ を考えると、$2$ は $3$ で割り切れないし、 $3$ は $2$ で割り切れない。つまり、$2 | 3$ でも $3 | 2$ でもない。&lt;br /&gt;
# （'''双対順序'''）半順序集合 $(X,\le)$ に対して、「大小関係を逆にした順序」は再び半順序集合となる。つまり、$X$ の $2$ 項関係 $\le '$ を次で定義する。$x$、$y \in X$ に対して $x \le ' y \Leftrightarrow y \le x$ 。このとき、$(X, \le ')$ は半順序集合となる。この順序を$(X , \le)$ の'''双対順序'''という。元の集合が全順序であればその双対順序も全順序である。&lt;br /&gt;
# （'''部分順序'''）半順序集合 $(X,\le)$ と部分集合 $A \subset X$ に対して、$A$ の $2$ 項関係 $\le _{A}$ を次で定義する。$x$、$y \in A$ に対して $x \le _{A} y \Leftrightarrow x \le y$。つまり、$\le _{A}$ は $ \le$ を $A$ に制限したものである。たいていの場合混乱の恐れはないので $\le _{A}$ を単に $\le$ と書くことが多い。元の集合が全順序であればその任意の部分順序も全順序である。&lt;br /&gt;
# ('''全順序部分集合''') 半順序集合 $(X,\le)$ と部分集合 $A \subset X$ に対して部分順序集合 $(A,\le)$ は一般的に全順序になるとは限らない。しかし、うまく $A$ を選ぶと $(A , \le)$ が全順序になることもある。このような $A$ を'''全順序部分集合'''という。&lt;br /&gt;
# ユークリッド平面 $\mathbb{R} ^2$ のべき集合 $\mathcal{P}(\mathbb{R} ^2)$ と $\mathbb{R} ^2$ の包含関係を順序とする半順序集合　$(\mathcal{P}(\mathbb{R} ^2) , \subset)$を考える（全順序ではない）。$\mathcal{P}(\mathbb{R} ^2)$ の部分集合である「原点を中心とする同心円全体」$\mathcal{D} = \{D(r) | r&amp;gt;0 \}$ （ここで $D(r)$ は原点を中心とする半径 $r$ の開円板 $D(r)=\{(x,y) \in \mathbb{R} ^2 | x^2 + y^2 &amp;lt;r^2 \}$ とする）を考えると $(\mathcal{D},\subset)$ は全順序である。つまり $\mathcal{D}$ は $\mathcal{P}(\mathbb{R} ^2)$ の全順序部分集合である。&lt;br /&gt;
&lt;br /&gt;
新しい対象を定義したとき、次にするべきことは「どんなときに同じとみなすか」を定義することである。以下、半順序集合を単に順序集合という。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=def |name=順序同型|label=def-order-iso}}&lt;br /&gt;
# $(X,\le _{X})$、$(Y,\le _{Y})$ を順序集合、$f \colon X \longrightarrow Y$ を写像とする。任意の $a$、$b \in X$ に対して $$a \le _{X} b ならば f(a) \le _{Y} f(b)$$ が成り立つとき、$f$ を'''単調写像'''、'''単調増加写像'''あるいは'''向きを保つ写像'''などという。 $$a \le _{X} b ならば f(b) \le _{Y} f(a)$$ が成り立つときは'''単調減少写像'''という。なお、単調増加または単調減少をまとめて単に単調と呼ぶこともあるが、本稿ではその定義は採用しない。&lt;br /&gt;
# $(X,\le _{X})$、$(Y,\le _{Y})$ を順序集合とする。全単射 $f \colon X \longrightarrow Y$ が&lt;br /&gt;
存在して、$f$ と $f^{-1}$ がともに単調写像であるとき、$f \colon X \longrightarrow Y$ あるいは単に 「$X$ と $Y$ 」は'''順序同型'''であるという。&lt;br /&gt;
&lt;br /&gt;
$f \colon X \longrightarrow Y$ が順序同型であるとき、定義は後述するが、$a \in X$ に対して、「 $a$ は $X$ の最大元 $\Longleftrightarrow　f(a)$ は $Y$ の最大元」や、「$X$ が整列集合$\Longleftrightarrow Y$ が整列集合」等が成り立つ。このような意味で、ふたつの同型な順序集合は同じ順序構造を持っていると考えられる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=def |name=最大、最小、極大、極小、有界、上限、下限|label=def-max-min-etc}}&lt;br /&gt;
　$(X,\le)$ を順序集合、$A \subset X$ とし、$X$ の部分順序 $(A,\le)$ を考える（当然 $A = X$ の場合も考えられることに注意）。このとき次の用語を定義する。&lt;br /&gt;
# （最大元）$a \in A$ が「任意の $x \in A$ に対して $x \le a$ 」であるとき、この $a$ を $A$ の'''最大元（maximum element）'''であるという。後述するように最大元は'''存在すれば'''一意に定まる。そこで、その最大元を $\textrm{max} \, A$ と書く。&lt;br /&gt;
# （最小元）$a \in A$ が「任意の $x \in A$ に対して $a \le x$ 」であるとき、この $a$ を $A$ の'''最小元（minimum element）'''であるという。後述するように最小元は'''存在すれば'''一意に定まる。そこで、その最小元を $\textrm{min} \, A$ と書く。&lt;br /&gt;
# （極大元）$a \in A$ が「$a \lt x$ となるような $x \in A$ が存在しない」とき（つまり任意の $x \in A$ に対して、$x \le a$ または $x$ と $a$ は比較不可能）、この $a$ を $A$ の'''極大元（maximal element）'''であるという。&lt;br /&gt;
# （極小元）$a \in A$ が「$x \lt a$ となるような $x \in A$ が存在しない」とき（つまり任意の $x \in A$ に対して、$a \le x$ または $x$ と $a$ は比較不可能）、この $a$ を $A$ の'''極小元（minimal element）'''であるという。&lt;br /&gt;
# （上界：じょうかい）$a \in X$ が「任意の $x \in A$ に対して $x \le a$ 」であるとき、$a$ は $A$ の'''上界（upper bound）'''であるという。$A$ の上界が存在するとき $A$ は'''上に有界'''であるという。&lt;br /&gt;
# （下界：かかい）$a \in X$ が「任意の $x \in A$ に対して $a \le x$」であるとき、$a$ は $A$ の'''下界（lower bound）'''であるという。$A$ の下界が存在するとき $A$ は'''下に有界'''であるという。&lt;br /&gt;
# （有界）$A$ が上に有界かつ下にも有界であるとき、単に「 $A$ は'''有界'''」であるという。&lt;br /&gt;
# （上限）$A$ の上界全体を $A^{*}$ と置く。$A^{*}$ の最小元が存在するとき（存在すれば一意的）、これを $A$ の'''上限（supremum）'''といい、$\textrm{sup} \, A$ と書く。すなわち $\textrm{sup} \, A = \textrm{min} \, A^{*}$ である。&lt;br /&gt;
# （下限）$A$ の下界全体を $A_{*}$ と置く。$A_{*}$ の最大元が存在するとき（存在すれば一意的）、これを $A$ の'''下限（infimum）'''といい、$\textrm{inf} \, A$ と書く。すなわち $\textrm{inf} \, A = \textrm{max} \, A_{*}$ である。&lt;br /&gt;
なお、$X$ が数の集合の時は最大元を最大値と呼ぶこともある。最小値、極大値、極小値も同様。&lt;br /&gt;
&lt;br /&gt;
$(X,\le)$ を順序集合とその部分集合 $A \subset X$ に対して次のことに注意。次の命題と例を参照のこと。&lt;br /&gt;
# $A$ の最大元や最小元は必ず存在するとは限らないが、存在すれば一意的であり、$A$ の元である（ $A$ の元であることは定義から明らか）。&lt;br /&gt;
# $A$ の極大元や極小元は存在したとしても一意とは限らないが、$A$ の元ではある（ $A$ の元であることは定義から明らか）。&lt;br /&gt;
# 上界や下界は存在したとしても一意とは限らない。&lt;br /&gt;
# $A$ の上限や下限は存在すれば一意に定まるが、これらが $A$ の元になるとは限らない。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop | label=def-finite_automaton}}&lt;br /&gt;
順序集合 $(X,\le)$の部分集合 $A$ を考える。&lt;br /&gt;
# $A$ の最大元や最小元は存在すれば一意に定まる。&lt;br /&gt;
# $A$ の最大元が存在すれば、その最大元が唯一の極大元である。&lt;br /&gt;
# $A$ の最小元が存在すれば、その最小元が唯一の極小元である。&lt;br /&gt;
# $A$ が全順序集合とする。このとき、極大元、極小元は存在すれば一意である。&lt;br /&gt;
# $A$ の上限や下限は存在すれば一意に定まる。&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
# （最大元）$A$ にふたつの最大元 $m_1$、$m_2 \in A$ が存在したとする。このとき $m_1$ は $A$ の最大元であることと $m_2 \in A$ から $m_2 \le m_1$ が成り立つ。同様に $m_2$ は $A$ の最大元であることと $m_1 \in A$ から $m_1 \le m_2$ も成り立つ。よって $m_1 = m_2$ である。（最小元）最大元と同様。&lt;br /&gt;
# $a=\textrm{max} A$ とする。このとき最大元の定義から、$a \in A$ と「任意の $x \in A$ に対して　$x \le a$」が成り立つので、「任意の $x \in A$ に対して $x \le a$ または $x$ と $a$ は比較不可能」も成り立つ。よって、$a$ は $A$ の極大元でもある。次に、もうひとつ $A$ の極大元 $b \in A$ が存在したとする。すると、$b \in A$ と $a$ の最大性から $b \le a$ が成り立つ。よって特に $a$ と $b$ は比較可能である。一方、$a \in A$ と $b$ の極大性より $a \le b$ または $a$ と $b$ は比較不可能であるが、$a$ と $b$ は比較可能であったので $a \le b$ である。以上から $a = b$ なのでこれが唯一の極大元である。&lt;br /&gt;
# 2. と同様。&lt;br /&gt;
# （極大元）$A$ が全順序であるとする。任意のふたつの元は比較可能であるから、$a \in A$ が $A$ の極大元であるとは、任意の $x \in A$ に対して、$x \le a$ ということである。これは最大元の定義に他ならない。よって最大元の一意性より極大元は存在すれば一意である。（極小元）極大元と同様。&lt;br /&gt;
# $\textrm{sup} \, A $ は 「$A$ の上界全体の最小元」なので最小元の一意性から明らか。$\textrm{inf} \, A$ も同様。&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=ex | label=def-finite_automaton}}&lt;br /&gt;
# $a&amp;lt;b$ とする。$\mathbb{R}$ の部分集合 $[a,b]$ と $(a,b)$ に対して、最大元、最小元、極大元、極小元、上界全体、下界全体、上限、下限を求める。結果は次の通り。&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!  !! 最大元(max) !! 最小元(min) !! 極大元 !! 極小元 !! 上界全体 !! 下界全体 !! 上限(sup) !! 下限(inf)&lt;br /&gt;
|-&lt;br /&gt;
| $[a,b]$ || $b$ || $a$ || $b$ || $a$ || $[b,\infty)$ || $(- \infty ,a)$ || $b$ || $a$&lt;br /&gt;
|-&lt;br /&gt;
| $(a,b)$ || 存在しない || 存在しない || 存在しない || 存在しない || $[b,\infty)$ || $(- \infty ,a)$ || $b$ || $a$&lt;br /&gt;
|}&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
（$[a,b]$ について）最大元、極大元、上界全体、上限のみ示す。$[a,b] = \{x \in \mathbb{R} \,|\, a \le x \le b \} であるので、$b \in [a,b]$ である。さらに任意の $x \in [a,b]$ に対して $a \le x \le b$ なので特に $x \le b$ が成り立つ。よって \textrm{max} [a,b]$ は存在して \textrm{max} [a,b] = b$ である。次に、$b \gt x$ なる x \in \mathbb{R} を考えると&lt;br /&gt;
（$(a,b)$）最小元、極小元、下界全体、下限のみ示す。&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
==  整列集合 ==&lt;br /&gt;
&lt;br /&gt;
==  帰納的順序集合 ==&lt;br /&gt;
&lt;br /&gt;
== 集合論の初歩 ==&lt;br /&gt;
&lt;br /&gt;
[[論理と命題]] / [[集合の基本的な用語、集合の演算]] / [[全称記号と存在記号]] / [[写像、像、逆像、写像のグラフ]] / [[写像の合成、写像の拡大と制限]] / [[選択公理について]] / [[単射、全射、全単射、逆写像]] / [[部分集合族、べき集合]] / （ [[演算と代数構造]] ） / （ [[関係、同値関係、商集合]] ） / （ 初歩的な順序集合 ） / （ [[Zornの補題]] ） / （ [[集合の濃度]] ）&lt;br /&gt;
&lt;br /&gt;
==  参考文献 ==&lt;br /&gt;
* [https://amzn.to/343u9XN 松坂和夫「集合・位相入門」]&lt;br /&gt;
* [https://amzn.to/3avpnn5 斎藤毅「集合と位相」]&lt;br /&gt;
&lt;br /&gt;
== 関連項目 ==&lt;br /&gt;
*[[集合論]]&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E6%AD%A3%E8%A6%8F%E8%A8%80%E8%AA%9E&amp;diff=9418</id>
		<title>正規言語</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E6%AD%A3%E8%A6%8F%E8%A8%80%E8%AA%9E&amp;diff=9418"/>
		<updated>2021-12-14T16:08:24Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: 左線形文法について書き終わった&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{TOC |align=right |noautonum=1 }}&amp;lt;!-- 右寄せ連番無し目次をここに表示 --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Category:形式言語理論|セイキゲンゴ]]&lt;br /&gt;
{{begin |preamble}}&lt;br /&gt;
&amp;lt;!-- 参考文献 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 定理環境 --&amp;gt;&lt;br /&gt;
{{newtheorem |type=theorem |display=定理}}&lt;br /&gt;
{{newtheorem |type=lemma |display=補題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=definition |display=定義 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=prop |display=命題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=example |display=例 |family=theorem }}&lt;br /&gt;
&amp;lt;!-- MathJax commands --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\newcommand{\mathsetextension}[1]{%&lt;br /&gt;
\left\{ #1 \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathsetintension}[2]{%&lt;br /&gt;
\left\{ #1 \left| #2 \right.\right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathof}[2]{%&lt;br /&gt;
\mathop{#1}\left(#2\right)%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathderiv}{\mathrel{\mathop{\Rightarrow}^{*}}}&lt;br /&gt;
\newcommand{\mathgen}{\rightsquigarrow}&lt;br /&gt;
\newcommand{\mathgenfun}[1]{\mathbf{#1}}&lt;br /&gt;
\newcommand{\mirrorim}[1]{\overleftarrow{#1}}&lt;br /&gt;
\newcommand{\emptyword}{\varepsilon}&lt;br /&gt;
\newcommand{\kleenecl}[1]{{#1}^{*}}&lt;br /&gt;
\newcommand{\inverse}[1]{{#1}^{-1}}&lt;br /&gt;
\newcommand{\interpret}[1]{[\![#1]\!]}&lt;br /&gt;
\newcommand{\mathautomaton}[1]{\mathcal{#1}}&lt;br /&gt;
\newcommand{\mathnat}{\mathbb{N}}&lt;br /&gt;
\newcommand{\mathcountfunc}{\mathop{\#}}&lt;br /&gt;
&lt;br /&gt;
\newcommand{\qed}{\blacksquare}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
{{end |preamble}}&lt;br /&gt;
'''正規言語（regular language）'''とは右線形文法(right linear grammar)または左線形文法(left linear grammar)によって定められる形式言語である。&lt;br /&gt;
&lt;br /&gt;
右線形文法は句構造文法の一種であるから、&lt;br /&gt;
右線形言語は[[句構造言語]]の一種である。&lt;br /&gt;
&lt;br /&gt;
また、右線形文法は文脈自由文法の一種であるから、&lt;br /&gt;
右線形言語は[[文脈自由言語]]の一種である。&lt;br /&gt;
&lt;br /&gt;
以下、項目[[形式言語]]、[[句構造言語]]において定められている言語上の演算や文法の等価性の定義などについては特に断らず用いる。&lt;br /&gt;
&lt;br /&gt;
==  正規言語の導入 ==&lt;br /&gt;
この節では'''正規言語'''を定義する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=definition |name=右線形文法 |label=def-right_linear_grammar }}&lt;br /&gt;
'''右線形文法（right linear grammar）'''とは&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# $\Sigma$ と互いに素な'''変数記号（variable）'''の空でない有限集合 $V$&lt;br /&gt;
# '''生成規則（production rule）'''と呼ばれる有限集合 $R \subseteq V \times ((\kleenecl{\Sigma}V)\cup \kleenecl{\Sigma})$&lt;br /&gt;
# '''開始記号(start symbol)'''または'''初期記号'''と呼ばれる $S\in V$&lt;br /&gt;
&lt;br /&gt;
の４つ組$(V, \Sigma, R, S)$である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
これは、[[句構造言語#def-phrase_structure_grammar | 句構造文法]]の一種である。また、[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]の一種である。&lt;br /&gt;
&lt;br /&gt;
[[句構造言語]]のときと同様、$\Sigma$ の元を'''終端記号(terminal)'''、$V$ の元を'''非終端記号(non-terminal)'''と呼ぶことも多い。&lt;br /&gt;
&lt;br /&gt;
以下では、元$(A, \alpha)\in R$ のことを$A\mathgen\alpha$と書く。&lt;br /&gt;
&lt;br /&gt;
[[句構造言語#def-derivation | 導出]]、[[句構造言語#def-phrase_structure_lang | 生成される言語]]などは&lt;br /&gt;
句構造言語と同様に定義される。&lt;br /&gt;
&lt;br /&gt;
'''正規言語'''とは何らかの右線形文法によって生成される言語のことを言う。&lt;br /&gt;
&lt;br /&gt;
==  正規言語の例 ==&lt;br /&gt;
この節では正規言語の例を紹介する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列全体 |label=ex-all_lang }}&lt;br /&gt;
$V=\left\{ S \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen\emptyword, S\mathgen 0S, S\mathgen 1S \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
$0$ と $1$ からなる有限記号列全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、$0$ と $1$ からなる有限記号列全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる。&lt;br /&gt;
&lt;br /&gt;
\begin{gather*}&lt;br /&gt;
S \Rightarrow \emptyword \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 0\emptyword = 0 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 1\emptyword = 1 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 00\emptyword = 00 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 01\emptyword = 01 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 10\emptyword = 10 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 11\emptyword = 11 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 000S \Rightarrow 000\emptyword = 000 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 001S \Rightarrow 001\emptyword = 001 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 010S \Rightarrow 010\emptyword = 010 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 011S \Rightarrow 011\emptyword = 011 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 100S \Rightarrow 100\emptyword = 100 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 101S \Rightarrow 101\emptyword = 101 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 110S \Rightarrow 110\emptyword = 110 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 111S \Rightarrow 111\emptyword = 111&lt;br /&gt;
\end{gather*}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体 |label=ex-only_three_one_lang }}&lt;br /&gt;
$V=\left\{ S, A_{1}, A_{2}, A_{3} \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen 0S, S\mathgen 1A_{1}, A_{1}\mathgen 0A_{1}, A_{1}\mathgen 1A_{2}, A_{2}\mathgen 0A_{2}, A_{2}\mathgen 1A_{3}, A_{3}\mathgen 0A_{3}, A_{3}\mathgen \emptyword \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
S &amp;amp;\Rightarrow 1A_{1} \Rightarrow 11A_{2} \Rightarrow 111A_{3} \Rightarrow 111\emptyword = 111 \\&lt;br /&gt;
S &amp;amp;\Rightarrow 0S \\&lt;br /&gt;
&amp;amp;\Rightarrow 01A_{1} \Rightarrow 010A_{1} \Rightarrow 0100A_{1} \\&lt;br /&gt;
&amp;amp;\Rightarrow 01001A_{2} \Rightarrow 010010A_{2} \Rightarrow 0100100A_{2} \Rightarrow 01001000A_{2} \\&lt;br /&gt;
&amp;amp;\Rightarrow 010010001A_{3} \Rightarrow 0100100010A_{3} \Rightarrow 01001000100A_{3} \Rightarrow 010010001000A_{3} \Rightarrow 0100100010000A_{3} \Rightarrow 0100100010000\emptyword =0100100010000&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=自然数の二進表現全体 |label=ex-bi_lang }}&lt;br /&gt;
$V=\left\{ S, A_{1} \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen 0, S\mathgen 1A_{1}, A_{1}\mathgen 0A_{1}, A_{1}\mathgen 1A_{1}, A_{1}\mathgen \emptyword \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
自然数の二進表現全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、自然数の二進表現全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる&lt;br /&gt;
&lt;br /&gt;
\begin{gather*}&lt;br /&gt;
S \Rightarrow 0 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 1\emptyword = 1 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 10\emptyword = 10 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 11\emptyword = 11 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 100\emptyword = 100 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 101\emptyword = 101 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 100\emptyword = 110 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 111\emptyword = 111 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 1000A_{1} \Rightarrow 1000\emptyword = 1000 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 1001A_{1} \Rightarrow 1001\emptyword = 1001 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 1010A_{1} \Rightarrow 1010\emptyword = 1010 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 1011A_{1} \Rightarrow 1011\emptyword = 1011 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 1100A_{1} \Rightarrow 1100\emptyword = 1100 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 1101A_{1} \Rightarrow 1101\emptyword = 1101 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 1110A_{1} \Rightarrow 1110\emptyword = 1110 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 1111A_{1} \Rightarrow 1111\emptyword = 1111&lt;br /&gt;
\end{gather*}&lt;br /&gt;
&lt;br /&gt;
== 正規言語のクラスの閉包性 その１ ==&lt;br /&gt;
この節では正規言語のクラスが[[形式言語#id_concatenation | 連接 ]]、和集合演算、[[形式言語#id_kleeneclosure | Kleene閉包 ]]によって閉じていることを述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop | name=正規言語のクラスの閉包性 その１ |label=prop-regular-exp }}&lt;br /&gt;
# 形式言語 $L_{1}$, $L_{2}$ が正規言語であるならば $L_{1}L_{2}$ も正規言語である。&lt;br /&gt;
# 形式言語 $L_{1}$, $L_{2}$ が正規言語であるならば $L_{1}\cup L_{2}$ も正規言語である。&lt;br /&gt;
# 形式言語 $L$ が正規言語であるならば $\kleenecl{L}$ も正規言語である。&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
1. 形式言語 $L_{1}$, $L_{2}$ が正規言語であると仮定する。&lt;br /&gt;
&lt;br /&gt;
このとき $L_{1}$, $L_{2}$ を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$L_{1}$ を生成する右線形文法を $G=(V_{1}, \Sigma, R_{1}, S_{1})$、&lt;br /&gt;
$L_{2}$ を生成する右線形文法を $G=(V_{2}, \Sigma, R_{2}, S_{2})$ とする。&lt;br /&gt;
このとき、$V_{1}\cap V_{2}=\emptyset$ と仮定しても&lt;br /&gt;
一般性を失わない（必要であれば、変数記号を適切に置き換えれば良い）。&lt;br /&gt;
&lt;br /&gt;
さて、&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
R_{1}^{(V)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R_{1}}{\gamma \in \kleenecl{\Sigma}V}  \\&lt;br /&gt;
R_{1}^{(0)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R_{1}}{\gamma \in \kleenecl{\Sigma}}  &lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$R_{1}=R_{1}^{(V)}\cup R_{1}^{(0)}$, $R_{1}^{(V)}\cap R_{1}^{(0)}=\emptyset$ である。&lt;br /&gt;
&lt;br /&gt;
\[ R_{1}^{(S_{2})}:=\mathsetintension{A\mathgen \gamma S_{2}}{A\mathgen \gamma \in R_{1}^{(0)}} \]&lt;br /&gt;
とすると、&lt;br /&gt;
$G=(V_{1}\cup V_{2}, \Sigma, R_{1}^{V}\cup R_{1}^{(S_{2})}\cup R_{2}, S_{1})$&lt;br /&gt;
は $L_{1}L_{2}$ を生成する右線形文法である。&lt;br /&gt;
&lt;br /&gt;
2. 形式言語 $L_{1}$, $L_{2}$ が正規言語であると仮定する。&lt;br /&gt;
&lt;br /&gt;
このとき $L_{1}$, $L_{2}$ を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$L_{1}$ を生成する右線形文法を $G=(V_{1}, \Sigma, R_{1}, S_{1})$、&lt;br /&gt;
$L_{2}$ を生成する右線形文法を $G=(V_{2}, \Sigma, R_{2}, S_{2})$ とする&lt;br /&gt;
（ただし、$V_{1}\cap V_{2}=\emptyset$ とする）。&lt;br /&gt;
&lt;br /&gt;
このとき、右線形文法&lt;br /&gt;
$G=(V_{1}\cup V_{2}\cup \mathsetextension{S}, \Sigma, R_{1}\cup R_{2}\cup \mathsetextension{S\mathgen S_{1}, S\mathgen S_{2}}, S)$&lt;br /&gt;
（ただし、$S\notin V_{1}\cup V_{2}$）は $L_{1}\cup L_{2}$ を生成する。&lt;br /&gt;
&lt;br /&gt;
3.&lt;br /&gt;
形式言語 $L$ が正規言語であると仮定する。&lt;br /&gt;
&lt;br /&gt;
このとき $L$ を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$L$ を生成する右線形文法を $G=(V, \Sigma, R, S)$ とする。&lt;br /&gt;
&lt;br /&gt;
さて、&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
R^{(V)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R}{\gamma \in \kleenecl{\Sigma}V} \\&lt;br /&gt;
R^{(0)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R}{\gamma \in \kleenecl{\Sigma}}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$R=R^{(V)}\cup R^{(0)}$, $R^{(V)}\cap R^{(0)}=\emptyset$ である。&lt;br /&gt;
&lt;br /&gt;
\[R^{(S)}:=\mathsetintension{A\mathgen \gamma S}{A\mathgen \gamma \in R, \gamma \in \kleenecl{\Sigma}}\]&lt;br /&gt;
とすると、右線形文法&lt;br /&gt;
$G=(V, \Sigma, R^{(V)}\cup R^{(S)}\cup \{S\mathgen \emptyword\}, S)$ は $\kleenecl{L}$ を生成する。&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
==  正規表現、有限オートマトンとの関係 ==&lt;br /&gt;
この節では正規言語、[[正規表現]]および[[有限オートマトン]]との関係を述べる。以下では[[正規表現]]と[[有限オートマトン]]の定義などは既知とする。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=theorem |label=thm-regularandNFA }}&lt;br /&gt;
言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $L=\interpret{\alpha}$ なる正規表現 $\alpha$ が存在する。&lt;br /&gt;
# $L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
この節ではこの定理を証明する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=lemma |label=lemma-of-thm-regularandNFA }}&lt;br /&gt;
正規言語 $G=(V, \Sigma, R, S)$ に対して、&lt;br /&gt;
$G$ と[[句構造言語#句構造文法の等価性 | 等価 ]]であって、&lt;br /&gt;
すべての生成規則の右辺が&lt;br /&gt;
$(\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
の元である右線形文法が存在する。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
正規言語 $G=(V, \Sigma, R, S)$ について、&lt;br /&gt;
$R=\{A_{0}\mathgen \alpha_{0}, \ldots, A_{n}\mathgen \alpha_{n}\}$ （ただし $n\in\mathnat$）&lt;br /&gt;
とする。&lt;br /&gt;
&lt;br /&gt;
$G_{i}=(V_{i}, \Sigma, R_{i}, S)$&lt;br /&gt;
（ただし $n=0, \ldots, n+1$）&lt;br /&gt;
を次のように定義する。&lt;br /&gt;
&lt;br /&gt;
* $G_{0}=G$&lt;br /&gt;
* $\alpha_{i}\in (\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
のとき、$G_{i+1}:=G_{i}$ とする。&lt;br /&gt;
* $\alpha_{i}\in \kleenecl{\Sigma} \setminus (\Sigma \cup\{\emptyword\})$ のとき、$\alpha_{i}=a_{0}\ldots a_{m}$ （ただし、$m$ は $1$ 以上の自然数であって、$a_{j}\in \Sigma$ for $j\in \mathnat$）とする。&lt;br /&gt;
** $V_{i+1}:=V_{i}\cup \{B_{0}, \ldots, B_{m}\}$ （ただし、各 $B_{j}$ は $B_{j}\notin V_{i}\cup \Sigma$ を満たす変数記号）。&lt;br /&gt;
** $R_{i+1}:=R_{i}\setminus \{A_{i}\mathgen \alpha_{i}\}\cup \{A_{i} \mathgen a_{0}B_{0}, B_{0} \mathgen a_{1}B_{1}, \ldots, B_{m-1} \mathgen a_{m}B_{m}, B_{m}\mathgen \emptyword\}$。&lt;br /&gt;
* $\alpha_{i}\in \kleenecl{\Sigma}V\setminus (\Sigma \cup\{\emptyword\})V$ のとき、$\alpha_{i}=a_{0}\ldots a_{m} A'_{i}$ （ただし、$m$ は $1$ 以上の自然数であって、$a_{j}\in \Sigma$ for $j\in \mathnat$）とする。&lt;br /&gt;
** $V_{i+1}:=V_{i}\cup \{B_{0}, \ldots, B_{m}\}$ （ただし、各 $B_{j}$ は $B_{j}\notin V_{i}\cup \Sigma$ を満たす変数記号）。&lt;br /&gt;
** $R_{i+1}:=R_{i}\setminus \{A_{i}\mathgen \alpha_{i}\}\cup \{A_{i} \mathgen a_{0}B_{0}, B_{0} \mathgen a_{1}B_{1}, \ldots, B_{m-1} \mathgen a_{m}B_{m}, B_{m}\mathgen A'_{i}\}$。&lt;br /&gt;
&lt;br /&gt;
各 $i$ に対して、 $L(G_{i})=L(G_{i+1})$ に注意すると&lt;br /&gt;
$G_{n+1}$ が求める文法であることがわかる。&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 | display=Proof of {{ref |type=theorem |label=thm-regularandNFA }}. }}&lt;br /&gt;
(2. $\Rightarrow$ 1.)&lt;br /&gt;
$L=\interpret{\alpha}$ なる正規表現 $\alpha$ が存在するとき、&lt;br /&gt;
$L$ を生成する右線形文法が存在する（つまり $L$ は正規言語である）ことを言えば良い。&lt;br /&gt;
&lt;br /&gt;
正規表現の構成についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
Case 1.&lt;br /&gt;
$L=\interpret{\emptyset}=\emptyset$ のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \emptyset, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 2.&lt;br /&gt;
$L=\interpret{\emptyword}=\{\emptyword\}$ のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \{S \mathgen \emptyword\}, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 3.&lt;br /&gt;
$L=\interpret{a}=\{a\}$ (ただし、$a\in \Sigma$) のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \{S \mathgen a\}, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 4.&lt;br /&gt;
$L=\interpret{\alpha\beta}=\interpret{\alpha}\cdot\interpret{\beta}$&lt;br /&gt;
（ただし、$\alpha$, $\beta$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$, $\interpret{\beta}$ は正規言語である。&lt;br /&gt;
{{ref |type=prop |label=prop-regular-exp }} の 1. より、&lt;br /&gt;
$\interpret{\alpha}\cdot\interpret{\beta}$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
Case 5.&lt;br /&gt;
$L=\interpret{\alpha +\beta}=\interpret{\alpha}\cup \interpret{\beta}$&lt;br /&gt;
（ただし、$\alpha$, $\beta$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$, $\interpret{\beta}$ は正規言語である。&lt;br /&gt;
{{ref |type=prop |label=prop-regular-exp }} の 2. より、&lt;br /&gt;
$\interpret{\alpha}\cup \interpret{\beta}$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
Case 6.&lt;br /&gt;
$L=\interpret{\kleenecl{\alpha}}=\kleenecl{\interpret{\alpha}}$&lt;br /&gt;
（ただし、$\alpha$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$ は正規言語である。&lt;br /&gt;
{{ref |type=prop |label=prop-regular-exp }} の 3. より、&lt;br /&gt;
$\kleenecl{\interpret{\alpha}}$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
以上、Case 1-6 より(2. $\Rightarrow$ 1.) は示された。&lt;br /&gt;
&lt;br /&gt;
(1. $\Rightarrow$ 3.)&lt;br /&gt;
$L$ が正規言語であるとき、{{ref |type=lemma |label=lemma-of-thm-regularandNFA }}から&lt;br /&gt;
すべての生成規則の右辺が&lt;br /&gt;
$(\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
の元である$L$ を生成する右線形文法が存在する。&lt;br /&gt;
この文法を $G=(V, \Sigma, R, S)$ とする。&lt;br /&gt;
&lt;br /&gt;
まず、有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \delta, q_{I}, F)$&lt;br /&gt;
を次のように定義する。&lt;br /&gt;
&lt;br /&gt;
* $Q=V \cup \{f\}$ （ただし、$f\notin V$）&lt;br /&gt;
* $q_{I}=S$&lt;br /&gt;
* $\Delta = \{(A, a, A') | A, A'\in V, a\in \Sigma\cup\{\emptyword\}, A \mathgen aA'\in R \} \cup \{ (A, a, f) | A\in V, a\in \Sigma\cup\{\emptyword\}, A \mathgen a\in R\} \}$&lt;br /&gt;
* $F=\{f\}$&lt;br /&gt;
&lt;br /&gt;
次に、$wA\in \kleenecl{\Sigma}V$&lt;br /&gt;
に対して以下の２条件は同値であることを示す。&lt;br /&gt;
&lt;br /&gt;
(a) $S$ から始まる&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G}\cdots \Rightarrow_{G} \alpha_{n}(=wA)\]&lt;br /&gt;
(ただし、$\alpha_{i}=w_{i}A_{i}$ for $1\leq i\leq n$)&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
&lt;br /&gt;
(b) 記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ A_{0}, A_{1}, \ldots, A_{n}\]&lt;br /&gt;
（ただし、$A_{0}=S$, $A_{n}=A$）が存在する。&lt;br /&gt;
&lt;br /&gt;
(a) $\Rightarrow$ (b) を $n$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$n=1$ のとき、&lt;br /&gt;
$w=a$ なる $a\in\Sigma\cup\{\emptyword\}$が存在し、&lt;br /&gt;
$S\mathgen aA \in R$ であるはずである。&lt;br /&gt;
このとき、$\mathautomaton{A}$ の定義から&lt;br /&gt;
$(S, a, A)\in \Delta$である。&lt;br /&gt;
ゆえに、記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A \]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n&amp;gt;1$ のとき、&lt;br /&gt;
$w=w'a$ （ただし、$a\in \Sigma\cup\{\emptyword\}$）とおく。&lt;br /&gt;
このとき、$G$ の生成規則の形から&lt;br /&gt;
$w_{n-1}=w'$, &lt;br /&gt;
$A_{n-1}\mathgen aA \in R$&lt;br /&gt;
である。&lt;br /&gt;
このとき、帰納法の仮定から&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n-1}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[S, A_{1}, \ldots, A_{n-1} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
$A_{n-1}\mathgen aA \in R$&lt;br /&gt;
であるから、&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$であることに注意すると&lt;br /&gt;
記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{1}, \ldots, A_{n-1}, A \]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
(b) $\Rightarrow$ (a) を $n$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$n=1$ のとき、&lt;br /&gt;
$w=a$ なる $a\in\Sigma\cup\{\emptyword\}$が存在し、&lt;br /&gt;
$(S, a, A)\in \Delta$ のはずである。&lt;br /&gt;
このとき、$\mathautomaton{A}$ の定義から&lt;br /&gt;
$S\mathgen aA \in R$ である。ゆえに&lt;br /&gt;
\[ S \Rightarrow_{G} aA \]&lt;br /&gt;
である。&lt;br /&gt;
&lt;br /&gt;
$n&amp;gt;1$ のとき、&lt;br /&gt;
記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[A_{0}, A_{1}, \ldots, A_{n-1}A_{n} \]&lt;br /&gt;
（ただし、$A_{0}=S$, $A_{n}=A$）が存在すると仮定する。&lt;br /&gt;
すると、&lt;br /&gt;
$w=w'a$,&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$&lt;br /&gt;
を満たす&lt;br /&gt;
$a\in\Sigma\cup\{\emptyword\}$, $w'\in\kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
すると、記号列 $w'$ による $S$ から $A_{n-1}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[A_{0}, A_{1}, \ldots, A_{n-1} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
帰納法の仮定から&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n-1}(=w'A_{n-1})\]&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$ であるから、&lt;br /&gt;
$A_{n-1} \mathgen  aA\in R$ であるので、&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G} \cdots \Rightarrow_{G} w'A_{n-1} \Rightarrow_{G} w'aA(=wA) \]&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
 &lt;br /&gt;
最後に $L=L(\mathautomaton{A})$ を示す。&lt;br /&gt;
&lt;br /&gt;
$w\in L$ を仮定する。&lt;br /&gt;
すると、導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} \Rightarrow_{G} w\]&lt;br /&gt;
が存在する。&lt;br /&gt;
$G$ の生成規則の形から&lt;br /&gt;
$w=w'a$, $\alpha_{n}=w'A_{n}$, $A_{n}\mathgen a \in R$&lt;br /&gt;
を満たす $A_{n}\in V$, $a\in \Sigma\cup\{\emptyword\}$, &lt;br /&gt;
$w'\in \kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
このとき、&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n}$ への $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, A_{1}, \ldots, A_{n} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
$A_{n}\mathgen a \in R$&lt;br /&gt;
であるから、&lt;br /&gt;
$(A_{n}, a, f)\in \Delta$&lt;br /&gt;
に注意すると、&lt;br /&gt;
記号列 $w'a=w$ による $S$ から $f$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, \ldots, A_{n}, f \]&lt;br /&gt;
が存在する。&lt;br /&gt;
ゆえに $w\in L(\mathautomaton{A})$ である。&lt;br /&gt;
&lt;br /&gt;
逆に、$w\in L(\mathautomaton{A})$ とする。&lt;br /&gt;
すると、&lt;br /&gt;
記号列 $w$ による $S$ から $f$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, A_{1}, \ldots, A_{n}, f\]&lt;br /&gt;
が存在する。&lt;br /&gt;
すると、&lt;br /&gt;
$w=w'a$, $(A_{n}, a, f) \in \Delta$&lt;br /&gt;
を満たす $a\in \Sigma\cup\{\emptyword\}$, &lt;br /&gt;
$w'\in \kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
また、&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, \ldots, A_{n} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
よって、導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} (=w'A_{n})\]&lt;br /&gt;
が存在する。&lt;br /&gt;
$(A_{n}, a, f) \in \Delta$ から&lt;br /&gt;
$A_{n}\mathgen a$ であるので、&lt;br /&gt;
$w$ の導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} \Rightarrow_{G} w (=w'a)\]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
以上より(1. $\Rightarrow$ 3.)は示された。&lt;br /&gt;
&lt;br /&gt;
(3. $\Rightarrow$ 2.)&lt;br /&gt;
$L$ を受理する有限オートマトンを&lt;br /&gt;
$\mathautomaton{A}=(\{q_{1}, q_{2}, \ldots, q_{n}\}, \Sigma, \Delta, q_{1}, \{q_{F_{0}}, q_{F_{1}}, \ldots, q_{F_{m}}\})$ とおく。&lt;br /&gt;
&lt;br /&gt;
簡単のため、以下&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\sum_{\alpha \in A} \alpha &amp;amp;= (\alpha_{0}+ \cdots + \alpha_{k}) \quad \text{（ただし、A は正規表現の空でない有限集合であって、A=\{a_{0}, \ldots, a_{k}\}）}, \\&lt;br /&gt;
Q_{ij}&amp;amp;=\{a\in \Sigma\cup\{\emptyword\} | (q_{i}, a, q_{j})\in \Delta\}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
という略記を用いる。&lt;br /&gt;
&lt;br /&gt;
正規表現 $\alpha^{(l)}_{ij}$ （ただし、$1\leq i, j \leq n$, $0\leq l \leq n$）を次のように帰納的に定める。&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\alpha^{(0)}_{ij}&amp;amp;=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
\emptyset, &amp;amp; \text{if Q_{ij}=\emptyset}, \\&lt;br /&gt;
\sum_{a\in Q_{ij}}a, &amp;amp; \text{if Q_{ij}\neq \emptyset, i\neq j}; \\&lt;br /&gt;
\kleenecl{\left(\sum_{a\in Q_{ij}}a\right)}, &amp;amp; \text{if Q_{ij}\neq \emptyset, i=j}; &lt;br /&gt;
\end{cases}\\&lt;br /&gt;
\alpha^{(l)}_{ij}&amp;amp;=\alpha^{(l-1)}_{ij} + \alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}, \quad \text{（ただし、1\leq l）}.&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
$w\in \interpret{\alpha^{(l)}_{ij}}$ であるとき、&lt;br /&gt;
記号列 $w$ による $q_{i}$ から $q_{j}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{0}}, q_{k_{1}}, \ldots, q_{k_{p}} \]&lt;br /&gt;
（ただし、$k_{0}=i$, $k_{p}=j$, $1\leq q\leq p-1$ のとき $1\leq k_{q} \leq l$）が存在することを $l$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$l=0$ については明らか。&lt;br /&gt;
&lt;br /&gt;
$l&amp;gt;0$ のとき、$w\in \interpret{\alpha^{(l)}_{ij}}$ であるとすると、&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{ij}}$ または&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}}$ である。&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{ij}}$ のときは帰納法の仮定より明らか。&lt;br /&gt;
&lt;br /&gt;
$w\in \interpret{ \alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}}$ とする。すると&lt;br /&gt;
$w_{1}\in \interpret{\alpha^{(l-1)}_{il}}$,&lt;br /&gt;
$w_{2}\in \interpret{\alpha^{(l-1)}_{ll}}$,&lt;br /&gt;
$w_{3}\in \interpret{\alpha^{(l-1)}_{lj}}$,&lt;br /&gt;
$w=w_{1}(w_{2})^{s}w_{3}$ （ただし、$s\in \mathnat$） を満たす記号列 $w_{1}$, $w_{2}$, $w_{3}$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から、&lt;br /&gt;
記号列 $w_{t}$ （$t=1, 2, 3$）による$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{t0}}, q_{k_{t1}}, \ldots, q_{k_{tp}} \]&lt;br /&gt;
（ただし、$k_{10}=i$, $k_{1p}=k_{20}=k_{2p}=k_{30}=l$, $k_{3p}=j$, $1\leq q\leq p-1$ のとき $1\leq k_{q} \leq l-1$）が存在する。&lt;br /&gt;
すると、&lt;br /&gt;
記号列 $w$ による $q_{i}$ から $q_{j}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{10}}, q_{k_{11}}, \ldots, q_{k_{1p}}, \overbrace{q_{k_{21}}, \ldots, q_{k_{2p}}}^{s}, q_{k_{31}}, \ldots, q_{k_{3p}} \]&lt;br /&gt;
が存在することがわかる。&lt;br /&gt;
&lt;br /&gt;
以上のことに注意すると、&lt;br /&gt;
\[ \alpha^{(n)}_{1F_{0}}+\alpha^{(n)}_{1F_{1}}+ \cdots + \alpha^{(n)}_{1F_{m}}\]&lt;br /&gt;
は $\mathautomaton{A}$ が受理する記号列全体である。&lt;br /&gt;
 &lt;br /&gt;
以上より(3. $\Rightarrow$ 2.)は示された。&lt;br /&gt;
{{end  |proof }}&lt;br /&gt;
&lt;br /&gt;
== Myhill-Nerodeの定理  ==&lt;br /&gt;
この節ではMyhill-Nerodeの定理について述べる。&lt;br /&gt;
この定理は正規言語の[[形式言語#def-quotient |左商]]による定式化とみなせる。&lt;br /&gt;
&lt;br /&gt;
{{theorem | type=theorem | name=Myhill-Nerodeの定理 | label=thm-Myhill-Nerode }}&lt;br /&gt;
$\Sigma$ 上の形式言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $\inverse{\kleenecl{\Sigma}}L$ は有限集合。&lt;br /&gt;
&lt;br /&gt;
{{begin  |proof | collapsible=1 }}&lt;br /&gt;
(1. $\Rightarrow$ 2.)&lt;br /&gt;
形式言語 $L$ は正規言語であると仮定する。&lt;br /&gt;
&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }} より、$L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
よって、[[有限オートマトン#prop-finite_automaton_non_emptyword | $L$ を受理する決定性有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が存在する]]。&lt;br /&gt;
&lt;br /&gt;
$\mathautomaton{A}$ は決定性有限オートマトンなので、任意の記号列 $w\in \kleenecl{\Sigma}$ に対して、次のいずれかが成り立つことに注意する。&lt;br /&gt;
# 記号列 $w\in \kleenecl{\Sigma}$ による $q_{I}$ から始まる $\mathautomaton{A}$ の状態遷移は存在しない。&lt;br /&gt;
# 記号列 $w\in \kleenecl{\Sigma}$ による $q_{I}$ から $q_{w} への$ $\mathautomaton{A}$ の状態遷移が存在し、$q_{w}$ は一意。&lt;br /&gt;
&lt;br /&gt;
前者のとき、$\inverse{w}L$ は空集合である。&lt;br /&gt;
後者のとき、決定性有限オートマトン $\mathautomaton{A}_{w}=(Q, \Sigma, \Delta, q_{w}, F)$ は $\inverse{w}L$ を受理する。&lt;br /&gt;
&lt;br /&gt;
$Q$ は有限集合であり、$q_{w} = q_{w'}$ ならば $\mathautomaton{A}_{w} = \mathautomaton{A}_{w'}$ に注意すると、&lt;br /&gt;
$\inverse{\kleenecl{\Sigma}}L$ の濃度は高々 $\mathcountfunc{Q} + 1$ である&lt;br /&gt;
（ただし、$\#$ は有限集合を受け取りそこに所属する元の個数を返す関数）。&lt;br /&gt;
&lt;br /&gt;
(2. $\Rightarrow$ 1.)&lt;br /&gt;
$\Sigma$ 上の形式言語 $L$ について $\inverse{\kleenecl{\Sigma}}L$ は有限集合と仮定する。&lt;br /&gt;
&lt;br /&gt;
集合 $\Delta_{L}$ と $F_{L}$ を次のように定義する。&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\Delta_{L} &amp;amp;:= \mathsetintension{(\inverse{w}L, a, \inverse{(wa)}L)}{w\in\kleenecl{\Sigma}} \\&lt;br /&gt;
F_{L} &amp;amp;:= \mathsetintension{L'\in \inverse{\kleenecl{\Sigma}}L}{\emptyword\in L'}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
$\inverse{\kleenecl{\Sigma}}L$ は有限集合であることから、&lt;br /&gt;
$\mathautomaton{A}_{L}=(\inverse{\kleenecl{\Sigma}}L, \Sigma, \Delta_{L}, L, F_{L})$&lt;br /&gt;
は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
$\mathautomaton{A}_{L}$ が受理する言語が $L$ であることを示す。&lt;br /&gt;
&lt;br /&gt;
$w\in L$ を仮定してする。$w$ が $\mathautomaton{A}_{L}$ に受理されることを示す。&lt;br /&gt;
&lt;br /&gt;
このとき、記号列 $w$ による $L$ から $\inverse{w}L$ への $\mathautomaton{A}_{L}$ の状態遷移が存在する。&lt;br /&gt;
$w\in L$ であるから、$\emptyword\in \inverse{w}L$。よって $\inverse{w}L\in F_{L}$。&lt;br /&gt;
ゆえに $w$ は $\mathautomaton{A}_{L}$ に受理される。&lt;br /&gt;
&lt;br /&gt;
$w$ が $\mathautomaton{A}_{L}$ に受理されることを仮定する。$w\in L$ を示す。&lt;br /&gt;
&lt;br /&gt;
$w$ が $\mathautomaton{A}_{L}$ に受理されることから&lt;br /&gt;
記号列 $w$ による $L$ から $\inverse{w}L$ への $\mathautomaton{A}_{L}$ の状態遷移が存在し、&lt;br /&gt;
$\inverse{w}L\in F_{L}$ である。よって $\emptyword\in \inverse{w}L$。これは $w\in L$ を意味する。&lt;br /&gt;
&lt;br /&gt;
以上より $\mathautomaton{A}_{L}$ が受理する言語は $L$ である。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
== 正規言語のクラスの閉包性 その２ ==&lt;br /&gt;
この節では正規言語のクラスが補集合演算、共通部分演算、鏡像、左商、右商によって閉じていることを述べる。&lt;br /&gt;
&amp;lt;!-- 代入についてもそのうち書く --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=prop-closure-regular-lang }}&lt;br /&gt;
# $\kleenecl{\Sigma}$ 上の形式言語 $L$ が正規言語であるならば $\kleenecl{\Sigma}\setminus L$ も正規言語である。&lt;br /&gt;
# 形式言語 $L_{1}$, $L_{2}$ が正規言語であるならば $L_{1}\cap L_{2}$ も正規言語である。&lt;br /&gt;
# 形式言語 $L$ が正規言語であるならば $\mirrorim{L}=\mathsetintension{\mirrorim{w}}{w\in L}$ も正規言語である。&lt;br /&gt;
# $\kleenecl{\Sigma}$ 上の形式言語 $L$ が正規言語であるならば $w\in\kleenecl{\Sigma}$ による左商 $\inverse{w}L$ および右商 $L\inverse{w}$ はいずれも正規言語である。&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
1. 形式言語 $L$ は正規言語であると仮定する。&lt;br /&gt;
&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }} より、$L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
よって、[[有限オートマトン#prop-finite_automaton_non_emptyword | $L$ を受理する決定性有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が存在する]]。&lt;br /&gt;
&lt;br /&gt;
$q_{\infty}\notin Q$ とする。また、&lt;br /&gt;
\[&lt;br /&gt;
\Delta_{\infty}=\mathsetintension{(q,a,q_{\infty})}{\text{任意の$q'$に対して}(q,a,q')\notin \Delta} \cup \mathsetintension{(q_{\infty}, a, q_{\infty})}{a\in\Sigma}&lt;br /&gt;
\]&lt;br /&gt;
とする。&lt;br /&gt;
&lt;br /&gt;
すると決定性有限オートマトン $\mathautomaton{A}_{\infty}=(Q\cup\mathsetextension{q_{\infty}}, \Sigma, \Delta\cup\Delta_{\infty}, q_{I}, F)$ は $L$ を受理し、&lt;br /&gt;
任意の記号列にたいして、状態遷移を持つ。&lt;br /&gt;
このとき、$\mathautomaton{A}'=(Q\cup\mathsetextension{q_{\infty}}, \Sigma, \Delta\cup\Delta_{\infty}, q_{I}, {Q\cup\mathsetextension{q_{\infty}}\setminus F})$ は $\kleenecl{\Sigma}\setminus L$&lt;br /&gt;
を受理する決定性有限オートマトンである。よって、$\kleenecl{\Sigma}\setminus L$ は正規言語。&lt;br /&gt;
&lt;br /&gt;
2. $L_{1}$, $L_{2}$ を正規言語とする。&lt;br /&gt;
このとき、 $\kleenecl{\Sigma}\setminus L_{1}$, $\kleenecl{\Sigma}\setminus L_{2}$ もまた正規言語である。&lt;br /&gt;
{{ref |type=prop |label=prop-regular-exp }} の 2. より $L_{1}\cap L_{2} = \left(\kleenecl{\Sigma}\setminus L_{1}\right)\cup\left(\kleenecl{\Sigma}\setminus L_{2}\right)$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
3. $L$ を正規言語とする。{{ref |type=theorem |label=thm-regularandNFA }} より、&lt;br /&gt;
$L$ を受理する有限オートマトン &lt;br /&gt;
$\mathautomaton{A}=\left(Q, \Sigma, \Delta, q_{0}, F\right)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
このとき、集合 $\mirrorim{\Delta}$ を次のように定義する。&lt;br /&gt;
\[\mirrorim{\Delta} = \mathsetintension{ \left(q_{1}, a, q_{0} \right) }{\left(q_{0}, a, q_{1} \right) \in \Delta} \]&lt;br /&gt;
&lt;br /&gt;
$q\in F$ について、&lt;br /&gt;
$\mathautomaton{A}_{q}=\left(Q, \Sigma, \mirrorim{\Delta}, q, \mathsetextension{q_{0}}\right)$ &lt;br /&gt;
とおく。このとき、$L\left(\mathautomaton{A}_{q}\right)$ は正規言語である。また、&lt;br /&gt;
&lt;br /&gt;
\[\mirrorim{L} = \bigcup_{q\in F} L\left(\mathautomaton{A}_{q}\right)\]&lt;br /&gt;
&lt;br /&gt;
である。{{ref |type=prop |label=prop-regular-exp }} の 2. より $\mirrorim{L}$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
4.&lt;br /&gt;
形式言語 $L$ は正規言語であると仮定する。&lt;br /&gt;
&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }} より、$L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
よって、[[有限オートマトン#prop-finite_automaton_non_emptyword | $L$ を受理する決定性有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が存在する]]。&lt;br /&gt;
&lt;br /&gt;
$\mathautomaton{A}$ は決定性有限オートマトンなので、任意の記号列 $w\in \kleenecl{\Sigma}$ に対して、次のいずれかが成り立つことに注意する。&lt;br /&gt;
# 記号列 $w\in \kleenecl{\Sigma}$ による $q_{I}$ から始まる $\mathautomaton{A}$ の状態遷移は存在しない。&lt;br /&gt;
# 記号列 $w\in \kleenecl{\Sigma}$ による $q_{I}$ から $q_{w} への$ $\mathautomaton{A}$ の状態遷移が存在し、$q_{w}$ は一意。&lt;br /&gt;
&lt;br /&gt;
前者のとき、$\inverse{w}L$ は空集合である。このとき、$\inverse{w}L$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
後者のとき、決定性有限オートマトン $\mathautomaton{A}_{w}=(Q, \Sigma, \Delta, q_{w}, F)$ は $\inverse{w}L$ を受理する。&lt;br /&gt;
よって、$\inverse{w}L$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
さて、&lt;br /&gt;
\[L\inverse{w}=\mirrorim{\mirrorim{L\inverse{w}}}=\mirrorim{\mirrorim{\inverse{w}}\mirrorim{L}}\]&lt;br /&gt;
であるから、$L\inverse{w}$ も正規言語である。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
==  正規言語と左線形文法 ==&lt;br /&gt;
この節では正規言語と左線形文法との関係を述べる。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=definition |name=左線形文法 |label=def-left_linear_grammar }}&lt;br /&gt;
'''左線形文法（left linear grammar）'''とは&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# $\Sigma$ と互いに素な'''変数記号（variable）'''の有限集合 $V$&lt;br /&gt;
# '''生成規則（production rule）'''と呼ばれる有限集合 $R \subseteq V \times (V(\kleenecl{\Sigma})\cup \kleenecl{\Sigma})$&lt;br /&gt;
# '''開始記号(start symbol)'''または'''初期記号'''と呼ばれる $S\in V$&lt;br /&gt;
&lt;br /&gt;
の４つ組$(V, \Sigma, R, S)$である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
これは、[[句構造言語#def-phrase_structure_grammar | 句構造文法]]の一種である。また、[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]の一種である。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=thm-left_linear_grammar }}&lt;br /&gt;
言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $L$ を生成する左線形文法が存在する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=lemma |label=lemma-of-thm-left_linear_grammar-1 }}&lt;br /&gt;
$L$ が正規言語であるとき、$\mirrorim{L}$ を生成する左線形文法が存在する。&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
$L$ を正規言語とすると、$L$ を生成する右線形文法 $(V, \Sigma, R, S)$ が存在する。&lt;br /&gt;
\[\mirrorim{R}=\mathsetintension{A\mathgen \mirrorim{\alpha}}{A\mathgen \alpha \in R}\]&lt;br /&gt;
とすると、$(V, \Sigma, \mirrorim{R}, S)$は$\mirrorim{L}$ を生成する左線形文法である。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=lemma |label=lemma-of-thm-left_linear_grammar-2 }}&lt;br /&gt;
$L$ を生成する左線形文法が存在するとき、$\mirrorim{L}$ は正規言語。&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
$L$ を生成する左線形文法 $(V, \Sigma, R, S)$ が存在すると仮定する。&lt;br /&gt;
\[\mirrorim{R}=\mathsetintension{A\mathgen \mirrorim{\alpha}}{A\mathgen \alpha \in R}\]&lt;br /&gt;
とすると、$(V, \Sigma, \mirrorim{R}, S)$は$\mirrorim{L}$ を生成する右線形文法である。&lt;br /&gt;
よって、$\mirrorim{L}$ は正規言語。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 | display=Proof of {{ref |type=prop |label=thm-left_linear_grammar }}}}&lt;br /&gt;
(1. $\Rightarrow$ 2.)&lt;br /&gt;
$L$ を正規言語とする。&lt;br /&gt;
{{ref |type=prop |label=prop-closure-regular-lang }} より $\mirrorim{L}$ は正規言語である。&lt;br /&gt;
{{ref |type=lemma |label=lemma-of-thm-left_linear_grammar-1 }} より $L=\mirrorim{\mirrorim{L}}$ を生成する左線形文法が存在する。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
(2. $\Rightarrow$ 1.)&lt;br /&gt;
$L$ を生成する左線形文法が存在すると仮定する。&lt;br /&gt;
{{ref |type=lemma |label=lemma-of-thm-left_linear_grammar-2 }} より $\mirrorim{L}$ は正規言語。&lt;br /&gt;
{{ref |type=prop |label=prop-closure-regular-lang }} より $L$ は正規言語である。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  正規言語ではない形式言語の例  ==&lt;br /&gt;
この節では正規言語ではない[[形式言語]]の例を紹介する。&lt;br /&gt;
&lt;br /&gt;
そのような例が存在すること自体は右線形文法が[[集合の濃度#具体的な濃度 | 高々可算個]]しかないことと[[形式言語]]の濃度が[[集合の濃度#具体的な濃度 | 非加算]]であることに注意すると、明らかである。&lt;br /&gt;
しかし、その具体例を構成し、正規言語ではないことを示すことはそれほど簡単ではない。このとき強力な武器となるのが[[有限オートマトン#pumping_lemma | 反復補題]]である。&lt;br /&gt;
&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]] については当該項目を参照せよ。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0^{n}1^{n}$ という形をした記号列全体 |label=ex-counter_example_reg_lang_n }}&lt;br /&gt;
$0^{n}1^{n}$ （ただし、$n\in\mathnat$）という形の記号列全体は正規言語ではない。しかしながら[[文脈自由言語]]ではある。この記号列全体を生成する[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]は[[文脈自由言語#ex-counter_example_reg_lang_n | この例]]を参照せよ。&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 | display=$0^{n}1^{n}$ という形の記号列全体が正規言語ではないことの証明 }}&lt;br /&gt;
背理法により示す。&lt;br /&gt;
&lt;br /&gt;
$0^{n}1^{n}$ という形の記号列全体 $L$ が正規言語であると仮定する。&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }}より、$L=L(\mathautomaton{A})$ を満たす&lt;br /&gt;
有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n_{0}=|Q|$ とする。仮定より&lt;br /&gt;
$\mathautomaton{A}$ は $w=0^{n_{0}}1^{n_{0}}$ を受理する。&lt;br /&gt;
すると$\left|w\right|&amp;gt;n_{0}$ であるから&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]] より&lt;br /&gt;
次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w=xyz$。&lt;br /&gt;
# $\left|y\right|&amp;gt;0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は&lt;br /&gt;
$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n_{0}$。&lt;br /&gt;
&lt;br /&gt;
このとき、 $xy=0^{k}$ （ただし、$0\lt k\leq n_{0}$）&lt;br /&gt;
であることに注意する。&lt;br /&gt;
すると、 $x=0^{k_{0}}$, $y=0^{k_{1}}$&lt;br /&gt;
（ただし、$0\leq k_{0}\leq k$, $0\lt k_{1}\leq k$,&lt;br /&gt;
$k=k_{0}+k_{1}$）&lt;br /&gt;
を満たす自然数 $k_{0}$, $k_{1}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
さて、$\mathautomaton{A}$ は&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]]の条件から、&lt;br /&gt;
記号列 $xz$ を受理するはずである。&lt;br /&gt;
しかし、$xz=0^{n_{0}-k_{1}}b^{n_{0}}$, $n_{0}-k_{1}\lt n_{0}$&lt;br /&gt;
であるから $xz\notin L$ である。&lt;br /&gt;
これは $L=L(\mathautomaton{A})$ に矛盾する。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$w\mirrorim{w}$ という形をした記号列全体 |label=ex-counter_example_reg_lang_mirror }}&lt;br /&gt;
$w\mirrorim{w}$（ただし、$n\in\mathnat$）という形の記号列全体は正規言語ではない。しかしながら[[文脈自由言語]]ではある。この記号列全体を生成する[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]は[[文脈自由言語#ex-counter_example_reg_lang_mirror | この例]]を参照せよ。&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 | display=$w\mirrorim{w}$ という形の記号列全体が正規言語ではないことの証明}}&lt;br /&gt;
背理法により示す。&lt;br /&gt;
&lt;br /&gt;
$w\mirrorim{w}$ という形の記号列全体 $L$ が正規言語であると仮定する。&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }}より、&lt;br /&gt;
$L=L(\mathautomaton{A})$ を満たす&lt;br /&gt;
有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n_{0}=|Q|$ とする。以下 $w_{0}=0^{n_{0}}1$ とする。&lt;br /&gt;
仮定より $\mathautomaton{A}$ は $w_{0}\mirrorim{w_{0}}$ を受理する。&lt;br /&gt;
すると $\left|w_{0}\mirrorim{w_{0}}\right|&amp;gt;n_{0}$ であるから&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題 ]] より&lt;br /&gt;
次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w_{0}\mirrorim{w_{0}}=xyz$。&lt;br /&gt;
# $\left|y\right|&amp;gt;0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は&lt;br /&gt;
$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n_{0}$。&lt;br /&gt;
&lt;br /&gt;
このとき、 $xy=0^{k}$ （ただし、$0\lt k\leq n_{0}$）&lt;br /&gt;
であることに注意する。&lt;br /&gt;
すると、 $x=0^{k_{0}}$, $y=0^{k_{1}}$&lt;br /&gt;
（ただし、$0\leq k_{0}\leq k$, $0\lt k_{1}\leq k$,&lt;br /&gt;
$k=k_{0}+k_{1}$）&lt;br /&gt;
を満たす自然数 $k_{0}$, $k_{1}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
さて、$\mathautomaton{A}$ は&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題 ]] の条件から、&lt;br /&gt;
記号列 $xz$ を受理するはずである。&lt;br /&gt;
しかし、$xz=0^{n_{0}-k_{1}}1\mirrorim{w_{0}}=0^{n_{0}-k_{1}}110^{n_{0}}$, $n_{0}-k_{1}\lt n_{0}$&lt;br /&gt;
であるから $xz\notin L$ である。&lt;br /&gt;
これは $L=L(\mathautomaton{A})$ に矛盾する。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
==  参考文献 ==&lt;br /&gt;
# 新屋 良磨、オートマトン理論再考、コンピュータ ソフトウェア、2017、34 巻、3 号、p. 3_3-3_35、公開日 2017/09/25、Print ISSN 0289-6540、https://doi.org/10.11309/jssst.34.3_3、https://www.jstage.jst.go.jp/article/jssst/34/3/34_3_3/_article/-char/ja&lt;br /&gt;
# 五十嵐喜英他、『[[数理情報科学シリーズ ２４ オートマトンと形式言語の基礎]]』、牧野書店、2011&lt;br /&gt;
&lt;br /&gt;
== 関連項目 ==&lt;br /&gt;
* [[形式言語]]&lt;br /&gt;
* [[正規表現]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
|+ Chomsky階層&lt;br /&gt;
! 文法のタイプ&lt;br /&gt;
! 言語のクラス&lt;br /&gt;
! 計算モデル&lt;br /&gt;
|-&lt;br /&gt;
! タイプ0&lt;br /&gt;
| [[句構造言語]]&lt;br /&gt;
| [[Turingマシン]]&lt;br /&gt;
|-&lt;br /&gt;
! タイプ1&lt;br /&gt;
| [[文脈依存言語]]&lt;br /&gt;
| [[線形有界オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ2&lt;br /&gt;
| [[文脈自由言語]]&lt;br /&gt;
| [[プッシュダウン・オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ3&lt;br /&gt;
| [[正規言語]]&lt;br /&gt;
| [[有限オートマトン]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E6%AD%A3%E8%A6%8F%E8%A8%80%E8%AA%9E&amp;diff=9417</id>
		<title>正規言語</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E6%AD%A3%E8%A6%8F%E8%A8%80%E8%AA%9E&amp;diff=9417"/>
		<updated>2021-12-14T15:04:38Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: 反例の証明の始まりの表示を変えた&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{TOC |align=right |noautonum=1 }}&amp;lt;!-- 右寄せ連番無し目次をここに表示 --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Category:形式言語理論|セイキゲンゴ]]&lt;br /&gt;
{{begin |preamble}}&lt;br /&gt;
&amp;lt;!-- 参考文献 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 定理環境 --&amp;gt;&lt;br /&gt;
{{newtheorem |type=theorem |display=定理}}&lt;br /&gt;
{{newtheorem |type=lemma |display=補題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=definition |display=定義 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=prop |display=命題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=example |display=例 |family=theorem }}&lt;br /&gt;
&amp;lt;!-- MathJax commands --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\newcommand{\mathsetextension}[1]{%&lt;br /&gt;
\left\{ #1 \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathsetintension}[2]{%&lt;br /&gt;
\left\{ #1 \left| #2 \right.\right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathof}[2]{%&lt;br /&gt;
\mathop{#1}\left(#2\right)%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathderiv}{\mathrel{\mathop{\Rightarrow}^{*}}}&lt;br /&gt;
\newcommand{\mathgen}{\rightsquigarrow}&lt;br /&gt;
\newcommand{\mathgenfun}[1]{\mathbf{#1}}&lt;br /&gt;
\newcommand{\mirrorim}[1]{\overleftarrow{#1}}&lt;br /&gt;
\newcommand{\emptyword}{\varepsilon}&lt;br /&gt;
\newcommand{\kleenecl}[1]{{#1}^{*}}&lt;br /&gt;
\newcommand{\inverse}[1]{{#1}^{-1}}&lt;br /&gt;
\newcommand{\interpret}[1]{[\![#1]\!]}&lt;br /&gt;
\newcommand{\mathautomaton}[1]{\mathcal{#1}}&lt;br /&gt;
\newcommand{\mathnat}{\mathbb{N}}&lt;br /&gt;
\newcommand{\mathcountfunc}{\mathop{\#}}&lt;br /&gt;
&lt;br /&gt;
\newcommand{\qed}{\blacksquare}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
{{end |preamble}}&lt;br /&gt;
'''正規言語（regular language）'''とは右線形文法(right linear grammar)または左線形文法(left linear grammar)によって定められる形式言語である。&lt;br /&gt;
&lt;br /&gt;
右線形文法は句構造文法の一種であるから、&lt;br /&gt;
右線形言語は[[句構造言語]]の一種である。&lt;br /&gt;
&lt;br /&gt;
また、右線形文法は文脈自由文法の一種であるから、&lt;br /&gt;
右線形言語は[[文脈自由言語]]の一種である。&lt;br /&gt;
&lt;br /&gt;
以下、項目[[形式言語]]、[[句構造言語]]において定められている言語上の演算や文法の等価性の定義などについては特に断らず用いる。&lt;br /&gt;
&lt;br /&gt;
==  正規言語の導入 ==&lt;br /&gt;
この節では'''正規言語'''を定義する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=definition |name=右線形文法 |label=def-right_linear_grammar }}&lt;br /&gt;
'''右線形文法（right linear grammar）'''とは&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# $\Sigma$ と互いに素な'''変数記号（variable）'''の空でない有限集合 $V$&lt;br /&gt;
# '''生成規則（production rule）'''と呼ばれる有限集合 $R \subseteq V \times (\kleenecl{\Sigma}V)\cup (\kleenecl{\Sigma})$&lt;br /&gt;
# '''開始記号(start symbol)'''または'''初期記号'''と呼ばれる $S\in V$&lt;br /&gt;
&lt;br /&gt;
の４つ組$(V, \Sigma, R, S)$である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
これは、[[句構造言語#def-phrase_structure_grammar | 句構造文法]]の一種である。また、[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]の一種である。&lt;br /&gt;
&lt;br /&gt;
[[句構造言語]]のときと同様、$\Sigma$ の元を'''終端記号(terminal)'''、$V$ の元を'''非終端記号(non-terminal)'''と呼ぶことも多い。&lt;br /&gt;
&lt;br /&gt;
以下では、元$(A, \alpha)\in R$ のことを$A\mathgen\alpha$と書く。&lt;br /&gt;
&lt;br /&gt;
[[句構造言語#def-derivation | 導出]]、[[句構造言語#def-phrase_structure_lang | 生成される言語]]などは&lt;br /&gt;
句構造言語と同様に定義される。&lt;br /&gt;
&lt;br /&gt;
'''正規言語'''とは何らかの右線形文法によって生成される言語のことを言う。&lt;br /&gt;
&lt;br /&gt;
==  正規言語の例 ==&lt;br /&gt;
この節では正規言語の例を紹介する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列全体 |label=ex-all_lang }}&lt;br /&gt;
$V=\left\{ S \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen\emptyword, S\mathgen 0S, S\mathgen 1S \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
$0$ と $1$ からなる有限記号列全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、$0$ と $1$ からなる有限記号列全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる。&lt;br /&gt;
&lt;br /&gt;
\begin{gather*}&lt;br /&gt;
S \Rightarrow \emptyword \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 0\emptyword = 0 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 1\emptyword = 1 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 00\emptyword = 00 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 01\emptyword = 01 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 10\emptyword = 10 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 11\emptyword = 11 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 000S \Rightarrow 000\emptyword = 000 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 001S \Rightarrow 001\emptyword = 001 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 010S \Rightarrow 010\emptyword = 010 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 011S \Rightarrow 011\emptyword = 011 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 100S \Rightarrow 100\emptyword = 100 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 101S \Rightarrow 101\emptyword = 101 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 110S \Rightarrow 110\emptyword = 110 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 111S \Rightarrow 111\emptyword = 111&lt;br /&gt;
\end{gather*}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体 |label=ex-only_three_one_lang }}&lt;br /&gt;
$V=\left\{ S, A_{1}, A_{2}, A_{3} \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen 0S, S\mathgen 1A_{1}, A_{1}\mathgen 0A_{1}, A_{1}\mathgen 1A_{2}, A_{2}\mathgen 0A_{2}, A_{2}\mathgen 1A_{3}, A_{3}\mathgen 0A_{3}, A_{3}\mathgen \emptyword \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
S &amp;amp;\Rightarrow 1A_{1} \Rightarrow 11A_{2} \Rightarrow 111A_{3} \Rightarrow 111\emptyword = 111 \\&lt;br /&gt;
S &amp;amp;\Rightarrow 0S \\&lt;br /&gt;
&amp;amp;\Rightarrow 01A_{1} \Rightarrow 010A_{1} \Rightarrow 0100A_{1} \\&lt;br /&gt;
&amp;amp;\Rightarrow 01001A_{2} \Rightarrow 010010A_{2} \Rightarrow 0100100A_{2} \Rightarrow 01001000A_{2} \\&lt;br /&gt;
&amp;amp;\Rightarrow 010010001A_{3} \Rightarrow 0100100010A_{3} \Rightarrow 01001000100A_{3} \Rightarrow 010010001000A_{3} \Rightarrow 0100100010000A_{3} \Rightarrow 0100100010000\emptyword =0100100010000&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=自然数の二進表現全体 |label=ex-bi_lang }}&lt;br /&gt;
$V=\left\{ S, A_{1} \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen 0, S\mathgen 1A_{1}, A_{1}\mathgen 0A_{1}, A_{1}\mathgen 1A_{1}, A_{1}\mathgen \emptyword \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
自然数の二進表現全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、自然数の二進表現全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる&lt;br /&gt;
&lt;br /&gt;
\begin{gather*}&lt;br /&gt;
S \Rightarrow 0 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 1\emptyword = 1 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 10\emptyword = 10 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 11\emptyword = 11 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 100\emptyword = 100 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 101\emptyword = 101 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 100\emptyword = 110 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 111\emptyword = 111 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 1000A_{1} \Rightarrow 1000\emptyword = 1000 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 1001A_{1} \Rightarrow 1001\emptyword = 1001 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 1010A_{1} \Rightarrow 1010\emptyword = 1010 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 1011A_{1} \Rightarrow 1011\emptyword = 1011 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 1100A_{1} \Rightarrow 1100\emptyword = 1100 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 1101A_{1} \Rightarrow 1101\emptyword = 1101 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 1110A_{1} \Rightarrow 1110\emptyword = 1110 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 1111A_{1} \Rightarrow 1111\emptyword = 1111&lt;br /&gt;
\end{gather*}&lt;br /&gt;
&lt;br /&gt;
== 正規言語のクラスの閉包性 その１ ==&lt;br /&gt;
この節では正規言語のクラスが[[形式言語#id_concatenation | 連接 ]]、和集合演算、[[形式言語#id_kleeneclosure | Kleene閉包 ]]によって閉じていることを述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop | name=正規言語のクラスの閉包性 その１ |label=prop-regular-exp }}&lt;br /&gt;
# 形式言語 $L_{1}$, $L_{2}$ が正規言語であるならば $L_{1}L_{2}$ も正規言語である。&lt;br /&gt;
# 形式言語 $L_{1}$, $L_{2}$ が正規言語であるならば $L_{1}\cup L_{2}$ も正規言語である。&lt;br /&gt;
# 形式言語 $L$ が正規言語であるならば $\kleenecl{L}$ も正規言語である。&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
1. 形式言語 $L_{1}$, $L_{2}$ が正規言語であると仮定する。&lt;br /&gt;
&lt;br /&gt;
このとき $L_{1}$, $L_{2}$ を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$L_{1}$ を生成する右線形文法を $G=(V_{1}, \Sigma, R_{1}, S_{1})$、&lt;br /&gt;
$L_{2}$ を生成する右線形文法を $G=(V_{2}, \Sigma, R_{2}, S_{2})$ とする。&lt;br /&gt;
このとき、$V_{1}\cap V_{2}=\emptyset$ と仮定しても&lt;br /&gt;
一般性を失わない（必要であれば、変数記号を適切に置き換えれば良い）。&lt;br /&gt;
&lt;br /&gt;
さて、&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
R_{1}^{(V)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R_{1}}{\gamma \in \kleenecl{\Sigma}V}  \\&lt;br /&gt;
R_{1}^{(0)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R_{1}}{\gamma \in \kleenecl{\Sigma}}  &lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$R_{1}=R_{1}^{(V)}\cup R_{1}^{(0)}$, $R_{1}^{(V)}\cap R_{1}^{(0)}=\emptyset$ である。&lt;br /&gt;
&lt;br /&gt;
\[ R_{1}^{(S_{2})}:=\mathsetintension{A\mathgen \gamma S_{2}}{A\mathgen \gamma \in R_{1}^{(0)}} \]&lt;br /&gt;
とすると、&lt;br /&gt;
$G=(V_{1}\cup V_{2}, \Sigma, R_{1}^{V}\cup R_{1}^{(S_{2})}\cup R_{2}, S_{1})$&lt;br /&gt;
は $L_{1}L_{2}$ を生成する右線形文法である。&lt;br /&gt;
&lt;br /&gt;
2. 形式言語 $L_{1}$, $L_{2}$ が正規言語であると仮定する。&lt;br /&gt;
&lt;br /&gt;
このとき $L_{1}$, $L_{2}$ を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$L_{1}$ を生成する右線形文法を $G=(V_{1}, \Sigma, R_{1}, S_{1})$、&lt;br /&gt;
$L_{2}$ を生成する右線形文法を $G=(V_{2}, \Sigma, R_{2}, S_{2})$ とする&lt;br /&gt;
（ただし、$V_{1}\cap V_{2}=\emptyset$ とする）。&lt;br /&gt;
&lt;br /&gt;
このとき、右線形文法&lt;br /&gt;
$G=(V_{1}\cup V_{2}\cup \mathsetextension{S}, \Sigma, R_{1}\cup R_{2}\cup \mathsetextension{S\mathgen S_{1}, S\mathgen S_{2}}, S)$&lt;br /&gt;
（ただし、$S\notin V_{1}\cup V_{2}$）は $L_{1}\cup L_{2}$ を生成する。&lt;br /&gt;
&lt;br /&gt;
3.&lt;br /&gt;
形式言語 $L$ が正規言語であると仮定する。&lt;br /&gt;
&lt;br /&gt;
このとき $L$ を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$L$ を生成する右線形文法を $G=(V, \Sigma, R, S)$ とする。&lt;br /&gt;
&lt;br /&gt;
さて、&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
R^{(V)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R}{\gamma \in \kleenecl{\Sigma}V} \\&lt;br /&gt;
R^{(0)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R}{\gamma \in \kleenecl{\Sigma}}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$R=R^{(V)}\cup R^{(0)}$, $R^{(V)}\cap R^{(0)}=\emptyset$ である。&lt;br /&gt;
&lt;br /&gt;
\[R^{(S)}:=\mathsetintension{A\mathgen \gamma S}{A\mathgen \gamma \in R, \gamma \in \kleenecl{\Sigma}}\]&lt;br /&gt;
とすると、右線形文法&lt;br /&gt;
$G=(V, \Sigma, R^{(V)}\cup R^{(S)}\cup \{S\mathgen \emptyword\}, S)$ は $\kleenecl{L}$ を生成する。&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
==  正規表現、有限オートマトンとの関係 ==&lt;br /&gt;
この節では正規言語、[[正規表現]]および[[有限オートマトン]]との関係を述べる。以下では[[正規表現]]と[[有限オートマトン]]の定義などは既知とする。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=theorem |label=thm-regularandNFA }}&lt;br /&gt;
言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $L=\interpret{\alpha}$ なる正規表現 $\alpha$ が存在する。&lt;br /&gt;
# $L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
この節ではこの定理を証明する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=lemma |label=lemma-of-thm-regularandNFA }}&lt;br /&gt;
正規言語 $G=(V, \Sigma, R, S)$ に対して、&lt;br /&gt;
$G$ と[[句構造言語#句構造文法の等価性 | 等価 ]]であって、&lt;br /&gt;
すべての生成規則の右辺が&lt;br /&gt;
$(\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
の元である右線形文法が存在する。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
正規言語 $G=(V, \Sigma, R, S)$ について、&lt;br /&gt;
$R=\{A_{0}\mathgen \alpha_{0}, \ldots, A_{n}\mathgen \alpha_{n}\}$ （ただし $n\in\mathnat$）&lt;br /&gt;
とする。&lt;br /&gt;
&lt;br /&gt;
$G_{i}=(V_{i}, \Sigma, R_{i}, S)$&lt;br /&gt;
（ただし $n=0, \ldots, n+1$）&lt;br /&gt;
を次のように定義する。&lt;br /&gt;
&lt;br /&gt;
* $G_{0}=G$&lt;br /&gt;
* $\alpha_{i}\in (\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
のとき、$G_{i+1}:=G_{i}$ とする。&lt;br /&gt;
* $\alpha_{i}\in \kleenecl{\Sigma} \setminus (\Sigma \cup\{\emptyword\})$ のとき、$\alpha_{i}=a_{0}\ldots a_{m}$ （ただし、$m$ は $1$ 以上の自然数であって、$a_{j}\in \Sigma$ for $j\in \mathnat$）とする。&lt;br /&gt;
** $V_{i+1}:=V_{i}\cup \{B_{0}, \ldots, B_{m}\}$ （ただし、各 $B_{j}$ は $B_{j}\notin V_{i}\cup \Sigma$ を満たす変数記号）。&lt;br /&gt;
** $R_{i+1}:=R_{i}\setminus \{A_{i}\mathgen \alpha_{i}\}\cup \{A_{i} \mathgen a_{0}B_{0}, B_{0} \mathgen a_{1}B_{1}, \ldots, B_{m-1} \mathgen a_{m}B_{m}, B_{m}\mathgen \emptyword\}$。&lt;br /&gt;
* $\alpha_{i}\in \kleenecl{\Sigma}V\setminus (\Sigma \cup\{\emptyword\})V$ のとき、$\alpha_{i}=a_{0}\ldots a_{m} A'_{i}$ （ただし、$m$ は $1$ 以上の自然数であって、$a_{j}\in \Sigma$ for $j\in \mathnat$）とする。&lt;br /&gt;
** $V_{i+1}:=V_{i}\cup \{B_{0}, \ldots, B_{m}\}$ （ただし、各 $B_{j}$ は $B_{j}\notin V_{i}\cup \Sigma$ を満たす変数記号）。&lt;br /&gt;
** $R_{i+1}:=R_{i}\setminus \{A_{i}\mathgen \alpha_{i}\}\cup \{A_{i} \mathgen a_{0}B_{0}, B_{0} \mathgen a_{1}B_{1}, \ldots, B_{m-1} \mathgen a_{m}B_{m}, B_{m}\mathgen A'_{i}\}$。&lt;br /&gt;
&lt;br /&gt;
各 $i$ に対して、 $L(G_{i})=L(G_{i+1})$ に注意すると&lt;br /&gt;
$G_{n+1}$ が求める文法であることがわかる。&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 | display=Proof of {{ref |type=theorem |label=thm-regularandNFA }}. }}&lt;br /&gt;
(2. $\Rightarrow$ 1.)&lt;br /&gt;
$L=\interpret{\alpha}$ なる正規表現 $\alpha$ が存在するとき、&lt;br /&gt;
$L$ を生成する右線形文法が存在する（つまり $L$ は正規言語である）ことを言えば良い。&lt;br /&gt;
&lt;br /&gt;
正規表現の構成についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
Case 1.&lt;br /&gt;
$L=\interpret{\emptyset}=\emptyset$ のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \emptyset, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 2.&lt;br /&gt;
$L=\interpret{\emptyword}=\{\emptyword\}$ のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \{S \mathgen \emptyword\}, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 3.&lt;br /&gt;
$L=\interpret{a}=\{a\}$ (ただし、$a\in \Sigma$) のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \{S \mathgen a\}, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 4.&lt;br /&gt;
$L=\interpret{\alpha\beta}=\interpret{\alpha}\cdot\interpret{\beta}$&lt;br /&gt;
（ただし、$\alpha$, $\beta$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$, $\interpret{\beta}$ は正規言語である。&lt;br /&gt;
{{ref |type=prop |label=prop-regular-exp }} の 1. より、&lt;br /&gt;
$\interpret{\alpha}\cdot\interpret{\beta}$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
Case 5.&lt;br /&gt;
$L=\interpret{\alpha +\beta}=\interpret{\alpha}\cup \interpret{\beta}$&lt;br /&gt;
（ただし、$\alpha$, $\beta$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$, $\interpret{\beta}$ は正規言語である。&lt;br /&gt;
{{ref |type=prop |label=prop-regular-exp }} の 2. より、&lt;br /&gt;
$\interpret{\alpha}\cup \interpret{\beta}$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
Case 6.&lt;br /&gt;
$L=\interpret{\kleenecl{\alpha}}=\kleenecl{\interpret{\alpha}}$&lt;br /&gt;
（ただし、$\alpha$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$ は正規言語である。&lt;br /&gt;
{{ref |type=prop |label=prop-regular-exp }} の 3. より、&lt;br /&gt;
$\kleenecl{\interpret{\alpha}}$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
以上、Case 1-6 より(2. $\Rightarrow$ 1.) は示された。&lt;br /&gt;
&lt;br /&gt;
(1. $\Rightarrow$ 3.)&lt;br /&gt;
$L$ が正規言語であるとき、{{ref |type=lemma |label=lemma-of-thm-regularandNFA }}から&lt;br /&gt;
すべての生成規則の右辺が&lt;br /&gt;
$(\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
の元である$L$ を生成する右線形文法が存在する。&lt;br /&gt;
この文法を $G=(V, \Sigma, R, S)$ とする。&lt;br /&gt;
&lt;br /&gt;
まず、有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \delta, q_{I}, F)$&lt;br /&gt;
を次のように定義する。&lt;br /&gt;
&lt;br /&gt;
* $Q=V \cup \{f\}$ （ただし、$f\notin V$）&lt;br /&gt;
* $q_{I}=S$&lt;br /&gt;
* $\Delta = \{(A, a, A') | A, A'\in V, a\in \Sigma\cup\{\emptyword\}, A \mathgen aA'\in R \} \cup \{ (A, a, f) | A\in V, a\in \Sigma\cup\{\emptyword\}, A \mathgen a\in R\} \}$&lt;br /&gt;
* $F=\{f\}$&lt;br /&gt;
&lt;br /&gt;
次に、$wA\in \kleenecl{\Sigma}V$&lt;br /&gt;
に対して以下の２条件は同値であることを示す。&lt;br /&gt;
&lt;br /&gt;
(a) $S$ から始まる&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G}\cdots \Rightarrow_{G} \alpha_{n}(=wA)\]&lt;br /&gt;
(ただし、$\alpha_{i}=w_{i}A_{i}$ for $1\leq i\leq n$)&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
&lt;br /&gt;
(b) 記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ A_{0}, A_{1}, \ldots, A_{n}\]&lt;br /&gt;
（ただし、$A_{0}=S$, $A_{n}=A$）が存在する。&lt;br /&gt;
&lt;br /&gt;
(a) $\Rightarrow$ (b) を $n$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$n=1$ のとき、&lt;br /&gt;
$w=a$ なる $a\in\Sigma\cup\{\emptyword\}$が存在し、&lt;br /&gt;
$S\mathgen aA \in R$ であるはずである。&lt;br /&gt;
このとき、$\mathautomaton{A}$ の定義から&lt;br /&gt;
$(S, a, A)\in \Delta$である。&lt;br /&gt;
ゆえに、記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A \]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n&amp;gt;1$ のとき、&lt;br /&gt;
$w=w'a$ （ただし、$a\in \Sigma\cup\{\emptyword\}$）とおく。&lt;br /&gt;
このとき、$G$ の生成規則の形から&lt;br /&gt;
$w_{n-1}=w'$, &lt;br /&gt;
$A_{n-1}\mathgen aA \in R$&lt;br /&gt;
である。&lt;br /&gt;
このとき、帰納法の仮定から&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n-1}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[S, A_{1}, \ldots, A_{n-1} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
$A_{n-1}\mathgen aA \in R$&lt;br /&gt;
であるから、&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$であることに注意すると&lt;br /&gt;
記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{1}, \ldots, A_{n-1}, A \]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
(b) $\Rightarrow$ (a) を $n$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$n=1$ のとき、&lt;br /&gt;
$w=a$ なる $a\in\Sigma\cup\{\emptyword\}$が存在し、&lt;br /&gt;
$(S, a, A)\in \Delta$ のはずである。&lt;br /&gt;
このとき、$\mathautomaton{A}$ の定義から&lt;br /&gt;
$S\mathgen aA \in R$ である。ゆえに&lt;br /&gt;
\[ S \Rightarrow_{G} aA \]&lt;br /&gt;
である。&lt;br /&gt;
&lt;br /&gt;
$n&amp;gt;1$ のとき、&lt;br /&gt;
記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[A_{0}, A_{1}, \ldots, A_{n-1}A_{n} \]&lt;br /&gt;
（ただし、$A_{0}=S$, $A_{n}=A$）が存在すると仮定する。&lt;br /&gt;
すると、&lt;br /&gt;
$w=w'a$,&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$&lt;br /&gt;
を満たす&lt;br /&gt;
$a\in\Sigma\cup\{\emptyword\}$, $w'\in\kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
すると、記号列 $w'$ による $S$ から $A_{n-1}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[A_{0}, A_{1}, \ldots, A_{n-1} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
帰納法の仮定から&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n-1}(=w'A_{n-1})\]&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$ であるから、&lt;br /&gt;
$A_{n-1} \mathgen  aA\in R$ であるので、&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G} \cdots \Rightarrow_{G} w'A_{n-1} \Rightarrow_{G} w'aA(=wA) \]&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
 &lt;br /&gt;
最後に $L=L(\mathautomaton{A})$ を示す。&lt;br /&gt;
&lt;br /&gt;
$w\in L$ を仮定する。&lt;br /&gt;
すると、導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} \Rightarrow_{G} w\]&lt;br /&gt;
が存在する。&lt;br /&gt;
$G$ の生成規則の形から&lt;br /&gt;
$w=w'a$, $\alpha_{n}=w'A_{n}$, $A_{n}\mathgen a \in R$&lt;br /&gt;
を満たす $A_{n}\in V$, $a\in \Sigma\cup\{\emptyword\}$, &lt;br /&gt;
$w'\in \kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
このとき、&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n}$ への $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, A_{1}, \ldots, A_{n} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
$A_{n}\mathgen a \in R$&lt;br /&gt;
であるから、&lt;br /&gt;
$(A_{n}, a, f)\in \Delta$&lt;br /&gt;
に注意すると、&lt;br /&gt;
記号列 $w'a=w$ による $S$ から $f$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, \ldots, A_{n}, f \]&lt;br /&gt;
が存在する。&lt;br /&gt;
ゆえに $w\in L(\mathautomaton{A})$ である。&lt;br /&gt;
&lt;br /&gt;
逆に、$w\in L(\mathautomaton{A})$ とする。&lt;br /&gt;
すると、&lt;br /&gt;
記号列 $w$ による $S$ から $f$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, A_{1}, \ldots, A_{n}, f\]&lt;br /&gt;
が存在する。&lt;br /&gt;
すると、&lt;br /&gt;
$w=w'a$, $(A_{n}, a, f) \in \Delta$&lt;br /&gt;
を満たす $a\in \Sigma\cup\{\emptyword\}$, &lt;br /&gt;
$w'\in \kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
また、&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, \ldots, A_{n} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
よって、導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} (=w'A_{n})\]&lt;br /&gt;
が存在する。&lt;br /&gt;
$(A_{n}, a, f) \in \Delta$ から&lt;br /&gt;
$A_{n}\mathgen a$ であるので、&lt;br /&gt;
$w$ の導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} \Rightarrow_{G} w (=w'a)\]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
以上より(1. $\Rightarrow$ 3.)は示された。&lt;br /&gt;
&lt;br /&gt;
(3. $\Rightarrow$ 2.)&lt;br /&gt;
$L$ を受理する有限オートマトンを&lt;br /&gt;
$\mathautomaton{A}=(\{q_{1}, q_{2}, \ldots, q_{n}\}, \Sigma, \Delta, q_{1}, \{q_{F_{0}}, q_{F_{1}}, \ldots, q_{F_{m}}\})$ とおく。&lt;br /&gt;
&lt;br /&gt;
簡単のため、以下&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\sum_{\alpha \in A} \alpha &amp;amp;= (\alpha_{0}+ \cdots + \alpha_{k}) \quad \text{（ただし、A は正規表現の空でない有限集合であって、A=\{a_{0}, \ldots, a_{k}\}）}, \\&lt;br /&gt;
Q_{ij}&amp;amp;=\{a\in \Sigma\cup\{\emptyword\} | (q_{i}, a, q_{j})\in \Delta\}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
という略記を用いる。&lt;br /&gt;
&lt;br /&gt;
正規表現 $\alpha^{(l)}_{ij}$ （ただし、$1\leq i, j \leq n$, $0\leq l \leq n$）を次のように帰納的に定める。&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\alpha^{(0)}_{ij}&amp;amp;=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
\emptyset, &amp;amp; \text{if Q_{ij}=\emptyset}, \\&lt;br /&gt;
\sum_{a\in Q_{ij}}a, &amp;amp; \text{if Q_{ij}\neq \emptyset, i\neq j}; \\&lt;br /&gt;
\kleenecl{\left(\sum_{a\in Q_{ij}}a\right)}, &amp;amp; \text{if Q_{ij}\neq \emptyset, i=j}; &lt;br /&gt;
\end{cases}\\&lt;br /&gt;
\alpha^{(l)}_{ij}&amp;amp;=\alpha^{(l-1)}_{ij} + \alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}, \quad \text{（ただし、1\leq l）}.&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
$w\in \interpret{\alpha^{(l)}_{ij}}$ であるとき、&lt;br /&gt;
記号列 $w$ による $q_{i}$ から $q_{j}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{0}}, q_{k_{1}}, \ldots, q_{k_{p}} \]&lt;br /&gt;
（ただし、$k_{0}=i$, $k_{p}=j$, $1\leq q\leq p-1$ のとき $1\leq k_{q} \leq l$）が存在することを $l$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$l=0$ については明らか。&lt;br /&gt;
&lt;br /&gt;
$l&amp;gt;0$ のとき、$w\in \interpret{\alpha^{(l)}_{ij}}$ であるとすると、&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{ij}}$ または&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}}$ である。&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{ij}}$ のときは帰納法の仮定より明らか。&lt;br /&gt;
&lt;br /&gt;
$w\in \interpret{ \alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}}$ とする。すると&lt;br /&gt;
$w_{1}\in \interpret{\alpha^{(l-1)}_{il}}$,&lt;br /&gt;
$w_{2}\in \interpret{\alpha^{(l-1)}_{ll}}$,&lt;br /&gt;
$w_{3}\in \interpret{\alpha^{(l-1)}_{lj}}$,&lt;br /&gt;
$w=w_{1}(w_{2})^{s}w_{3}$ （ただし、$s\in \mathnat$） を満たす記号列 $w_{1}$, $w_{2}$, $w_{3}$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から、&lt;br /&gt;
記号列 $w_{t}$ （$t=1, 2, 3$）による$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{t0}}, q_{k_{t1}}, \ldots, q_{k_{tp}} \]&lt;br /&gt;
（ただし、$k_{10}=i$, $k_{1p}=k_{20}=k_{2p}=k_{30}=l$, $k_{3p}=j$, $1\leq q\leq p-1$ のとき $1\leq k_{q} \leq l-1$）が存在する。&lt;br /&gt;
すると、&lt;br /&gt;
記号列 $w$ による $q_{i}$ から $q_{j}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{10}}, q_{k_{11}}, \ldots, q_{k_{1p}}, \overbrace{q_{k_{21}}, \ldots, q_{k_{2p}}}^{s}, q_{k_{31}}, \ldots, q_{k_{3p}} \]&lt;br /&gt;
が存在することがわかる。&lt;br /&gt;
&lt;br /&gt;
以上のことに注意すると、&lt;br /&gt;
\[ \alpha^{(n)}_{1F_{0}}+\alpha^{(n)}_{1F_{1}}+ \cdots + \alpha^{(n)}_{1F_{m}}\]&lt;br /&gt;
は $\mathautomaton{A}$ が受理する記号列全体である。&lt;br /&gt;
 &lt;br /&gt;
以上より(3. $\Rightarrow$ 2.)は示された。&lt;br /&gt;
{{end  |proof }}&lt;br /&gt;
&lt;br /&gt;
== Myhill-Nerodeの定理  ==&lt;br /&gt;
この節ではMyhill-Nerodeの定理について述べる。&lt;br /&gt;
この定理は正規言語の[[形式言語#def-quotient |左商]]による定式化とみなせる。&lt;br /&gt;
&lt;br /&gt;
{{theorem | type=theorem | name=Myhill-Nerodeの定理 | label=thm-Myhill-Nerode }}&lt;br /&gt;
$\Sigma$ 上の形式言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $\inverse{\kleenecl{\Sigma}}L$ は有限集合。&lt;br /&gt;
&lt;br /&gt;
{{begin  |proof | collapsible=1 }}&lt;br /&gt;
(1. $\Rightarrow$ 2.)&lt;br /&gt;
形式言語 $L$ は正規言語であると仮定する。&lt;br /&gt;
&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }} より、$L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
よって、[[有限オートマトン#prop-finite_automaton_non_emptyword | $L$ を受理する決定性有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が存在する]]。&lt;br /&gt;
&lt;br /&gt;
$\mathautomaton{A}$ は決定性有限オートマトンなので、任意の記号列 $w\in \kleenecl{\Sigma}$ に対して、次のいずれかが成り立つことに注意する。&lt;br /&gt;
# 記号列 $w\in \kleenecl{\Sigma}$ による $q_{I}$ から始まる $\mathautomaton{A}$ の状態遷移は存在しない。&lt;br /&gt;
# 記号列 $w\in \kleenecl{\Sigma}$ による $q_{I}$ から $q_{w} への$ $\mathautomaton{A}$ の状態遷移が存在し、$q_{w}$ は一意。&lt;br /&gt;
&lt;br /&gt;
前者のとき、$\inverse{w}L$ は空集合である。&lt;br /&gt;
後者のとき、決定性有限オートマトン $\mathautomaton{A}_{w}=(Q, \Sigma, \Delta, q_{w}, F)$ は $\inverse{w}L$ を受理する。&lt;br /&gt;
&lt;br /&gt;
$Q$ は有限集合であり、$q_{w} = q_{w'}$ ならば $\mathautomaton{A}_{w} = \mathautomaton{A}_{w'}$ に注意すると、&lt;br /&gt;
$\inverse{\kleenecl{\Sigma}}L$ の濃度は高々 $\mathcountfunc{Q} + 1$ である&lt;br /&gt;
（ただし、$\#$ は有限集合を受け取りそこに所属する元の個数を返す関数）。&lt;br /&gt;
&lt;br /&gt;
(2. $\Rightarrow$ 1.)&lt;br /&gt;
$\Sigma$ 上の形式言語 $L$ について $\inverse{\kleenecl{\Sigma}}L$ は有限集合と仮定する。&lt;br /&gt;
&lt;br /&gt;
集合 $\Delta_{L}$ と $F_{L}$ を次のように定義する。&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\Delta_{L} &amp;amp;:= \mathsetintension{(\inverse{w}L, a, \inverse{(wa)}L)}{w\in\kleenecl{\Sigma}} \\&lt;br /&gt;
F_{L} &amp;amp;:= \mathsetintension{L'\in \inverse{\kleenecl{\Sigma}}L}{\emptyword\in L'}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
$\inverse{\kleenecl{\Sigma}}L$ は有限集合であることから、&lt;br /&gt;
$\mathautomaton{A}_{L}=(\inverse{\kleenecl{\Sigma}}L, \Sigma, \Delta_{L}, L, F_{L})$&lt;br /&gt;
は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
$\mathautomaton{A}_{L}$ が受理する言語が $L$ であることを示す。&lt;br /&gt;
&lt;br /&gt;
$w\in L$ を仮定してする。$w$ が $\mathautomaton{A}_{L}$ に受理されることを示す。&lt;br /&gt;
&lt;br /&gt;
このとき、記号列 $w$ による $L$ から $\inverse{w}L$ への $\mathautomaton{A}_{L}$ の状態遷移が存在する。&lt;br /&gt;
$w\in L$ であるから、$\emptyword\in \inverse{w}L$。よって $\inverse{w}L\in F_{L}$。&lt;br /&gt;
ゆえに $w$ は $\mathautomaton{A}_{L}$ に受理される。&lt;br /&gt;
&lt;br /&gt;
$w$ が $\mathautomaton{A}_{L}$ に受理されることを仮定する。$w\in L$ を示す。&lt;br /&gt;
&lt;br /&gt;
$w$ が $\mathautomaton{A}_{L}$ に受理されることから&lt;br /&gt;
記号列 $w$ による $L$ から $\inverse{w}L$ への $\mathautomaton{A}_{L}$ の状態遷移が存在し、&lt;br /&gt;
$\inverse{w}L\in F_{L}$ である。よって $\emptyword\in \inverse{w}L$。これは $w\in L$ を意味する。&lt;br /&gt;
&lt;br /&gt;
以上より $\mathautomaton{A}_{L}$ が受理する言語は $L$ である。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
== 正規言語のクラスの閉包性 その２ ==&lt;br /&gt;
この節では正規言語のクラスが補集合演算、共通部分演算、鏡像、左商、右商によって閉じていることを述べる。&lt;br /&gt;
&amp;lt;!-- 代入についてもそのうち書く --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=prop-regular-exp }}&lt;br /&gt;
# $\kleenecl{\Sigma}$ 上の形式言語 $L$ が正規言語であるならば $\kleenecl{\Sigma}\setminus L$ も正規言語である。&lt;br /&gt;
# 形式言語 $L_{1}$, $L_{2}$ が正規言語であるならば $L_{1}\cap L_{2}$ も正規言語である。&lt;br /&gt;
# 形式言語 $L$ が正規言語であるならば $\mirrorim{L}=\mathsetintension{\mirrorim{w}}{w\in L}$ も正規言語である。&lt;br /&gt;
# $\kleenecl{\Sigma}$ 上の形式言語 $L$ が正規言語であるならば $w\in\kleenecl{\Sigma}$ による左商 $\inverse{w}L$ および右商 $L\inverse{w}$ はいずれも正規言語である。&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
1. 形式言語 $L$ は正規言語であると仮定する。&lt;br /&gt;
&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }} より、$L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
よって、[[有限オートマトン#prop-finite_automaton_non_emptyword | $L$ を受理する決定性有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が存在する]]。&lt;br /&gt;
&lt;br /&gt;
$q_{\infty}\notin Q$ とする。また、&lt;br /&gt;
\[&lt;br /&gt;
\Delta_{\infty}=\mathsetintension{(q,a,q_{\infty})}{\text{任意の$q'$に対して}(q,a,q')\notin \Delta} \cup \mathsetintension{(q_{\infty}, a, q_{\infty})}{a\in\Sigma}&lt;br /&gt;
\]&lt;br /&gt;
とする。&lt;br /&gt;
&lt;br /&gt;
すると決定性有限オートマトン $\mathautomaton{A}_{\infty}=(Q\cup\mathsetextension{q_{\infty}}, \Sigma, \Delta\cup\Delta_{\infty}, q_{I}, F)$ は $L$ を受理し、&lt;br /&gt;
任意の記号列にたいして、状態遷移を持つ。&lt;br /&gt;
このとき、$\mathautomaton{A}'=(Q\cup\mathsetextension{q_{\infty}}, \Sigma, \Delta\cup\Delta_{\infty}, q_{I}, {Q\cup\mathsetextension{q_{\infty}}\setminus F})$ は $\kleenecl{\Sigma}\setminus L$&lt;br /&gt;
を受理する決定性有限オートマトンである。よって、$\kleenecl{\Sigma}\setminus L$ は正規言語。&lt;br /&gt;
&lt;br /&gt;
2. $L_{1}$, $L_{2}$ を正規言語とする。&lt;br /&gt;
このとき、 $\kleenecl{\Sigma}\setminus L_{1}$, $\kleenecl{\Sigma}\setminus L_{2}$ もまた正規言語である。&lt;br /&gt;
{{ref |type=prop |label=prop-regular-exp }} の 2. より $L_{1}\cap L_{2} = \left(\kleenecl{\Sigma}\setminus L_{1}\right)\cup\left(\kleenecl{\Sigma}\setminus L_{2}\right)$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
3. $L$ を正規言語とする。{{ref |type=theorem |label=thm-regularandNFA }} より、&lt;br /&gt;
$L$ を受理する有限オートマトン &lt;br /&gt;
$\mathautomaton{A}=\left(Q, \Sigma, \Delta, q_{0}, F\right)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
このとき、集合 $\mirrorim{\Delta}$ を次のように定義する。&lt;br /&gt;
\[\mirrorim{\Delta} = \mathsetintension{ \left(q_{1}, a, q_{0} \right) }{\left(q_{0}, a, q_{1} \right) \in \Delta} \]&lt;br /&gt;
&lt;br /&gt;
$q\in F$ について、&lt;br /&gt;
$\mathautomaton{A}_{q}=\left(Q, \Sigma, \mirrorim{\Delta}, q, \mathsetextension{q_{0}}\right)$ &lt;br /&gt;
とおく。このとき、$L\left(\mathautomaton{A}_{q}\right)$ は正規言語である。また、&lt;br /&gt;
&lt;br /&gt;
\[\mirrorim{L} = \bigcup_{q\in F} L\left(\mathautomaton{A}_{q}\right)\]&lt;br /&gt;
&lt;br /&gt;
である。{{ref |type=prop |label=prop-regular-exp }} の 2. より $\mirrorim{L}$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
4.&lt;br /&gt;
形式言語 $L$ は正規言語であると仮定する。&lt;br /&gt;
&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }} より、$L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
よって、[[有限オートマトン#prop-finite_automaton_non_emptyword | $L$ を受理する決定性有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が存在する]]。&lt;br /&gt;
&lt;br /&gt;
$\mathautomaton{A}$ は決定性有限オートマトンなので、任意の記号列 $w\in \kleenecl{\Sigma}$ に対して、次のいずれかが成り立つことに注意する。&lt;br /&gt;
# 記号列 $w\in \kleenecl{\Sigma}$ による $q_{I}$ から始まる $\mathautomaton{A}$ の状態遷移は存在しない。&lt;br /&gt;
# 記号列 $w\in \kleenecl{\Sigma}$ による $q_{I}$ から $q_{w} への$ $\mathautomaton{A}$ の状態遷移が存在し、$q_{w}$ は一意。&lt;br /&gt;
&lt;br /&gt;
前者のとき、$\inverse{w}L$ は空集合である。このとき、$\inverse{w}L$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
後者のとき、決定性有限オートマトン $\mathautomaton{A}_{w}=(Q, \Sigma, \Delta, q_{w}, F)$ は $\inverse{w}L$ を受理する。&lt;br /&gt;
よって、$\inverse{w}L$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
さて、&lt;br /&gt;
\[L\inverse{w}=\mirrorim{\mirrorim{L\inverse{w}}}=\mirrorim{\mirrorim{\inverse{w}}\mirrorim{L}}\]&lt;br /&gt;
であるから、$L\inverse{w}$ も正規言語である。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
==  正規言語と左線形文法 ==&lt;br /&gt;
この節では正規言語と左線形文法との関係を述べる。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=definition |name=左線形文法 |label=def-left_linear_grammar }}&lt;br /&gt;
'''左線形文法（left linear grammar）'''とは&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# $\Sigma$ と互いに素な'''変数記号（variable）'''の有限集合 $V$&lt;br /&gt;
# '''生成規則（production rule）'''と呼ばれる有限集合 $R \subseteq V \times V\kleenecl{(\Sigma)}\cup \kleenecl{(\Sigma)}$&lt;br /&gt;
# '''開始記号(start symbol)'''または'''初期記号'''と呼ばれる $S\in V$&lt;br /&gt;
&lt;br /&gt;
の４つ組$(V, \Sigma, R, S)$である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
これは、[[句構造言語#def-phrase_structure_grammar | 句構造文法]]の一種である。また、[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]の一種である。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=thm-left_linear_grammar }}&lt;br /&gt;
言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $L$ を生成する左線形文法が存在する。&lt;br /&gt;
&lt;br /&gt;
==  正規言語ではない形式言語の例  ==&lt;br /&gt;
この節では正規言語ではない[[形式言語]]の例を紹介する。&lt;br /&gt;
&lt;br /&gt;
そのような例が存在すること自体は右線形文法が[[集合の濃度#具体的な濃度 | 高々可算個]]しかないことと[[形式言語]]の濃度が[[集合の濃度#具体的な濃度 | 非加算]]であることに注意すると、明らかである。&lt;br /&gt;
しかし、その具体例を構成し、正規言語ではないことを示すことはそれほど簡単ではない。このとき強力な武器となるのが[[有限オートマトン#pumping_lemma | 反復補題]]である。&lt;br /&gt;
&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]] については当該項目を参照せよ。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0^{n}1^{n}$ という形をした記号列全体 |label=ex-counter_example_reg_lang_n }}&lt;br /&gt;
$0^{n}1^{n}$ （ただし、$n\in\mathnat$）という形の記号列全体は正規言語ではない。しかしながら[[文脈自由言語]]ではある。この記号列全体を生成する[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]は[[文脈自由言語#ex-counter_example_reg_lang_n | この例]]を参照せよ。&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 | display=$0^{n}1^{n}$ という形の記号列全体が正規言語ではないことの証明 }}&lt;br /&gt;
背理法により示す。&lt;br /&gt;
&lt;br /&gt;
$0^{n}1^{n}$ という形の記号列全体 $L$ が正規言語であると仮定する。&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }}より、$L=L(\mathautomaton{A})$ を満たす&lt;br /&gt;
有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n_{0}=|Q|$ とする。仮定より&lt;br /&gt;
$\mathautomaton{A}$ は $w=0^{n_{0}}1^{n_{0}}$ を受理する。&lt;br /&gt;
すると$\left|w\right|&amp;gt;n_{0}$ であるから&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]] より&lt;br /&gt;
次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w=xyz$。&lt;br /&gt;
# $\left|y\right|&amp;gt;0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は&lt;br /&gt;
$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n_{0}$。&lt;br /&gt;
&lt;br /&gt;
このとき、 $xy=0^{k}$ （ただし、$0\lt k\leq n_{0}$）&lt;br /&gt;
であることに注意する。&lt;br /&gt;
すると、 $x=0^{k_{0}}$, $y=0^{k_{1}}$&lt;br /&gt;
（ただし、$0\leq k_{0}\leq k$, $0\lt k_{1}\leq k$,&lt;br /&gt;
$k=k_{0}+k_{1}$）&lt;br /&gt;
を満たす自然数 $k_{0}$, $k_{1}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
さて、$\mathautomaton{A}$ は&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]]の条件から、&lt;br /&gt;
記号列 $xz$ を受理するはずである。&lt;br /&gt;
しかし、$xz=0^{n_{0}-k_{1}}b^{n_{0}}$, $n_{0}-k_{1}\lt n_{0}$&lt;br /&gt;
であるから $xz\notin L$ である。&lt;br /&gt;
これは $L=L(\mathautomaton{A})$ に矛盾する。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$w\mirrorim{w}$ という形をした記号列全体 |label=ex-counter_example_reg_lang_mirror }}&lt;br /&gt;
$w\mirrorim{w}$（ただし、$n\in\mathnat$）という形の記号列全体は正規言語ではない。しかしながら[[文脈自由言語]]ではある。この記号列全体を生成する[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]は[[文脈自由言語#ex-counter_example_reg_lang_mirror | この例]]を参照せよ。&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 | display=$w\mirrorim{w}$ という形の記号列全体が正規言語ではないことの証明}}&lt;br /&gt;
背理法により示す。&lt;br /&gt;
&lt;br /&gt;
$w\mirrorim{w}$ という形の記号列全体 $L$ が正規言語であると仮定する。&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }}より、&lt;br /&gt;
$L=L(\mathautomaton{A})$ を満たす&lt;br /&gt;
有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n_{0}=|Q|$ とする。以下 $w_{0}=0^{n_{0}}1$ とする。&lt;br /&gt;
仮定より $\mathautomaton{A}$ は $w_{0}\mirrorim{w_{0}}$ を受理する。&lt;br /&gt;
すると $\left|w_{0}\mirrorim{w_{0}}\right|&amp;gt;n_{0}$ であるから&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題 ]] より&lt;br /&gt;
次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w_{0}\mirrorim{w_{0}}=xyz$。&lt;br /&gt;
# $\left|y\right|&amp;gt;0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は&lt;br /&gt;
$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n_{0}$。&lt;br /&gt;
&lt;br /&gt;
このとき、 $xy=0^{k}$ （ただし、$0\lt k\leq n_{0}$）&lt;br /&gt;
であることに注意する。&lt;br /&gt;
すると、 $x=0^{k_{0}}$, $y=0^{k_{1}}$&lt;br /&gt;
（ただし、$0\leq k_{0}\leq k$, $0\lt k_{1}\leq k$,&lt;br /&gt;
$k=k_{0}+k_{1}$）&lt;br /&gt;
を満たす自然数 $k_{0}$, $k_{1}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
さて、$\mathautomaton{A}$ は&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題 ]] の条件から、&lt;br /&gt;
記号列 $xz$ を受理するはずである。&lt;br /&gt;
しかし、$xz=0^{n_{0}-k_{1}}1\mirrorim{w_{0}}=0^{n_{0}-k_{1}}110^{n_{0}}$, $n_{0}-k_{1}\lt n_{0}$&lt;br /&gt;
であるから $xz\notin L$ である。&lt;br /&gt;
これは $L=L(\mathautomaton{A})$ に矛盾する。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
==  参考文献 ==&lt;br /&gt;
# 新屋 良磨、オートマトン理論再考、コンピュータ ソフトウェア、2017、34 巻、3 号、p. 3_3-3_35、公開日 2017/09/25、Print ISSN 0289-6540、https://doi.org/10.11309/jssst.34.3_3、https://www.jstage.jst.go.jp/article/jssst/34/3/34_3_3/_article/-char/ja&lt;br /&gt;
# 五十嵐喜英他、『[[数理情報科学シリーズ ２４ オートマトンと形式言語の基礎]]』、牧野書店、2011&lt;br /&gt;
&lt;br /&gt;
== 関連項目 ==&lt;br /&gt;
* [[形式言語]]&lt;br /&gt;
* [[正規表現]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
|+ Chomsky階層&lt;br /&gt;
! 文法のタイプ&lt;br /&gt;
! 言語のクラス&lt;br /&gt;
! 計算モデル&lt;br /&gt;
|-&lt;br /&gt;
! タイプ0&lt;br /&gt;
| [[句構造言語]]&lt;br /&gt;
| [[Turingマシン]]&lt;br /&gt;
|-&lt;br /&gt;
! タイプ1&lt;br /&gt;
| [[文脈依存言語]]&lt;br /&gt;
| [[線形有界オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ2&lt;br /&gt;
| [[文脈自由言語]]&lt;br /&gt;
| [[プッシュダウン・オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ3&lt;br /&gt;
| [[正規言語]]&lt;br /&gt;
| [[有限オートマトン]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E6%AD%A3%E8%A6%8F%E8%A8%80%E8%AA%9E&amp;diff=9398</id>
		<title>正規言語</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E6%AD%A3%E8%A6%8F%E8%A8%80%E8%AA%9E&amp;diff=9398"/>
		<updated>2021-12-12T06:24:03Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: Fix a typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{TOC |align=right |noautonum=1 }}&amp;lt;!-- 右寄せ連番無し目次をここに表示 --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Category:形式言語理論|セイキゲンゴ]]&lt;br /&gt;
{{begin |preamble}}&lt;br /&gt;
&amp;lt;!-- 参考文献 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 定理環境 --&amp;gt;&lt;br /&gt;
{{newtheorem |type=theorem |display=定理}}&lt;br /&gt;
{{newtheorem |type=lemma |display=補題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=definition |display=定義 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=prop |display=命題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=example |display=例 |family=theorem }}&lt;br /&gt;
&amp;lt;!-- MathJax commands --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\newcommand{\mathsetextension}[1]{%&lt;br /&gt;
\left\{ #1 \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathsetintension}[2]{%&lt;br /&gt;
\left\{ #1 \left| #2 \right.\right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathof}[2]{%&lt;br /&gt;
\mathop{#1}\left(#2\right)%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathderiv}{\mathrel{\mathop{\Rightarrow}^{*}}}&lt;br /&gt;
\newcommand{\mathgen}{\rightsquigarrow}&lt;br /&gt;
\newcommand{\mathgenfun}[1]{\mathbf{#1}}&lt;br /&gt;
\newcommand{\mirrorim}[1]{\overleftarrow{#1}}&lt;br /&gt;
\newcommand{\emptyword}{\varepsilon}&lt;br /&gt;
\newcommand{\kleenecl}[1]{{#1}^{*}}&lt;br /&gt;
\newcommand{\inverse}[1]{{#1}^{-1}}&lt;br /&gt;
\newcommand{\interpret}[1]{[\![#1]\!]}&lt;br /&gt;
\newcommand{\mathautomaton}[1]{\mathcal{#1}}&lt;br /&gt;
\newcommand{\mathnat}{\mathbb{N}}&lt;br /&gt;
\newcommand{\mathcountfunc}{\mathop{\#}}&lt;br /&gt;
&lt;br /&gt;
\newcommand{\qed}{\blacksquare}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
{{end |preamble}}&lt;br /&gt;
'''正規言語（regular language）'''とは右線形文法(right linear grammar)または左線形文法(left linear grammar)によって定められる形式言語である。&lt;br /&gt;
&lt;br /&gt;
右線形文法は句構造文法の一種であるから、&lt;br /&gt;
右線形言語は[[句構造言語]]の一種である。&lt;br /&gt;
&lt;br /&gt;
また、右線形文法は文脈自由文法の一種であるから、&lt;br /&gt;
右線形言語は[[文脈自由言語]]の一種である。&lt;br /&gt;
&lt;br /&gt;
以下、項目[[形式言語]]、[[句構造言語]]において定められている言語上の演算や文法の等価性の定義などについては特に断らず用いる。&lt;br /&gt;
&lt;br /&gt;
==  正規言語の導入 ==&lt;br /&gt;
この節では'''正規言語'''を定義する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=definition |name=右線形文法 |label=def-right_linear_grammar }}&lt;br /&gt;
'''右線形文法（right linear grammar）'''とは&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# $\Sigma$ と互いに素な'''変数記号（variable）'''の空でない有限集合 $V$&lt;br /&gt;
# '''生成規則（production rule）'''と呼ばれる有限集合 $R \subseteq V \times (\kleenecl{\Sigma}V)\cup (\kleenecl{\Sigma})$&lt;br /&gt;
# '''開始記号(start symbol)'''または'''初期記号'''と呼ばれる $S\in V$&lt;br /&gt;
&lt;br /&gt;
の４つ組$(V, \Sigma, R, S)$である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
これは、[[句構造言語#def-phrase_structure_grammar | 句構造文法]]の一種である。また、[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]の一種である。&lt;br /&gt;
&lt;br /&gt;
[[句構造言語]]のときと同様、$\Sigma$ の元を'''終端記号(terminal)'''、$V$ の元を'''非終端記号(non-terminal)'''と呼ぶことも多い。&lt;br /&gt;
&lt;br /&gt;
以下では、元$(A, \alpha)\in R$ のことを$A\mathgen\alpha$と書く。&lt;br /&gt;
&lt;br /&gt;
[[句構造言語#def-derivation | 導出]]、[[句構造言語#def-phrase_structure_lang | 生成される言語]]などは&lt;br /&gt;
句構造言語と同様に定義される。&lt;br /&gt;
&lt;br /&gt;
'''正規言語'''とは何らかの右線形文法によって生成される言語のことを言う。&lt;br /&gt;
&lt;br /&gt;
==  正規言語の例 ==&lt;br /&gt;
この節では正規言語の例を紹介する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列全体 |label=ex-all_lang }}&lt;br /&gt;
$V=\left\{ S \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen\emptyword, S\mathgen 0S, S\mathgen 1S \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
$0$ と $1$ からなる有限記号列全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、$0$ と $1$ からなる有限記号列全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる。&lt;br /&gt;
&lt;br /&gt;
\begin{gather*}&lt;br /&gt;
S \Rightarrow \emptyword \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 0\emptyword = 0 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 1\emptyword = 1 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 00\emptyword = 00 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 01\emptyword = 01 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 10\emptyword = 10 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 11\emptyword = 11 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 000S \Rightarrow 000\emptyword = 000 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 001S \Rightarrow 001\emptyword = 001 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 010S \Rightarrow 010\emptyword = 010 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 011S \Rightarrow 011\emptyword = 011 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 100S \Rightarrow 100\emptyword = 100 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 101S \Rightarrow 101\emptyword = 101 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 110S \Rightarrow 110\emptyword = 110 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 111S \Rightarrow 111\emptyword = 111&lt;br /&gt;
\end{gather*}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体 |label=ex-only_three_one_lang }}&lt;br /&gt;
$V=\left\{ S, A_{1}, A_{2}, A_{3} \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen 0S, S\mathgen 1A_{1}, A_{1}\mathgen 0A_{1}, A_{1}\mathgen 1A_{2}, A_{2}\mathgen 0A_{2}, A_{2}\mathgen 1A_{3}, A_{3}\mathgen 0A_{3}, A_{3}\mathgen \emptyword \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
S &amp;amp;\Rightarrow 1A_{1} \Rightarrow 11A_{2} \Rightarrow 111A_{3} \Rightarrow 111\emptyword = 111 \\&lt;br /&gt;
S &amp;amp;\Rightarrow 0S \\&lt;br /&gt;
&amp;amp;\Rightarrow 01A_{1} \Rightarrow 010A_{1} \Rightarrow 0100A_{1} \\&lt;br /&gt;
&amp;amp;\Rightarrow 01001A_{2} \Rightarrow 010010A_{2} \Rightarrow 0100100A_{2} \Rightarrow 01001000A_{2} \\&lt;br /&gt;
&amp;amp;\Rightarrow 010010001A_{3} \Rightarrow 0100100010A_{3} \Rightarrow 01001000100A_{3} \Rightarrow 010010001000A_{3} \Rightarrow 0100100010000A_{3} \Rightarrow 0100100010000\emptyword =0100100010000&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=自然数の二進表現全体 |label=ex-bi_lang }}&lt;br /&gt;
$V=\left\{ S, A_{1} \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen 0, S\mathgen 1A_{1}, A_{1}\mathgen 0A_{1}, A_{1}\mathgen 1A_{1}, A_{1}\mathgen \emptyword \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
自然数の二進表現全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、自然数の二進表現全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる&lt;br /&gt;
&lt;br /&gt;
\begin{gather*}&lt;br /&gt;
S \Rightarrow 0 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 1\emptyword = 1 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 10\emptyword = 10 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 11\emptyword = 11 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 100\emptyword = 100 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 101\emptyword = 101 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 100\emptyword = 110 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 111\emptyword = 111 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 1000A_{1} \Rightarrow 1000\emptyword = 1000 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 1001A_{1} \Rightarrow 1001\emptyword = 1001 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 1010A_{1} \Rightarrow 1010\emptyword = 1010 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 1011A_{1} \Rightarrow 1011\emptyword = 1011 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 1100A_{1} \Rightarrow 1100\emptyword = 1100 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 1101A_{1} \Rightarrow 1101\emptyword = 1101 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 1110A_{1} \Rightarrow 1110\emptyword = 1110 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 1111A_{1} \Rightarrow 1111\emptyword = 1111&lt;br /&gt;
\end{gather*}&lt;br /&gt;
&lt;br /&gt;
== 正規言語のクラスの閉包性 その１ ==&lt;br /&gt;
この節では正規言語のクラスが[[形式言語#id_concatenation | 連接 ]]、和集合演算、[[形式言語#id_kleeneclosure | Kleene閉包 ]]によって閉じていることを述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop | name=正規言語のクラスの閉包性 その１ |label=prop-regular-exp }}&lt;br /&gt;
# 形式言語 $L_{1}$, $L_{2}$ が正規言語であるならば $L_{1}L_{2}$ も正規言語である。&lt;br /&gt;
# 形式言語 $L_{1}$, $L_{2}$ が正規言語であるならば $L_{1}\cup L_{2}$ も正規言語である。&lt;br /&gt;
# 形式言語 $L$ が正規言語であるならば $\kleenecl{L}$ も正規言語である。&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
1. 形式言語 $L_{1}$, $L_{2}$ が正規言語であると仮定する。&lt;br /&gt;
&lt;br /&gt;
このとき $L_{1}$, $L_{2}$ を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$L_{1}$ を生成する右線形文法を $G=(V_{1}, \Sigma, R_{1}, S_{1})$、&lt;br /&gt;
$L_{2}$ を生成する右線形文法を $G=(V_{2}, \Sigma, R_{2}, S_{2})$ とする。&lt;br /&gt;
このとき、$V_{1}\cap V_{2}=\emptyset$ と仮定しても&lt;br /&gt;
一般性を失わない（必要であれば、変数記号を適切に置き換えれば良い）。&lt;br /&gt;
&lt;br /&gt;
さて、&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
R_{1}^{(V)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R_{1}}{\gamma \in \kleenecl{\Sigma}V}  \\&lt;br /&gt;
R_{1}^{(0)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R_{1}}{\gamma \in \kleenecl{\Sigma}}  &lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$R_{1}=R_{1}^{(V)}\cup R_{1}^{(0)}$, $R_{1}^{(V)}\cap R_{1}^{(0)}=\emptyset$ である。&lt;br /&gt;
&lt;br /&gt;
\[ R_{1}^{(S_{2})}:=\mathsetintension{A\mathgen \gamma S_{2}}{A\mathgen \gamma \in R_{1}^{(0)}} \]&lt;br /&gt;
とすると、&lt;br /&gt;
$G=(V_{1}\cup V_{2}, \Sigma, R_{1}^{V}\cup R_{1}^{(S_{2})}\cup R_{2}, S_{1})$&lt;br /&gt;
は $L_{1}L_{2}$ を生成する右線形文法である。&lt;br /&gt;
&lt;br /&gt;
2. 形式言語 $L_{1}$, $L_{2}$ が正規言語であると仮定する。&lt;br /&gt;
&lt;br /&gt;
このとき $L_{1}$, $L_{2}$ を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$L_{1}$ を生成する右線形文法を $G=(V_{1}, \Sigma, R_{1}, S_{1})$、&lt;br /&gt;
$L_{2}$ を生成する右線形文法を $G=(V_{2}, \Sigma, R_{2}, S_{2})$ とする&lt;br /&gt;
（ただし、$V_{1}\cap V_{2}=\emptyset$ とする）。&lt;br /&gt;
&lt;br /&gt;
このとき、右線形文法&lt;br /&gt;
$G=(V_{1}\cup V_{2}\cup \mathsetextension{S}, \Sigma, R_{1}\cup R_{2}\cup \mathsetextension{S\mathgen S_{1}, S\mathgen S_{2}}, S)$&lt;br /&gt;
（ただし、$S\notin V_{1}\cup V_{2}$）は $L_{1}\cup L_{2}$ を生成する。&lt;br /&gt;
&lt;br /&gt;
3.&lt;br /&gt;
形式言語 $L$ が正規言語であると仮定する。&lt;br /&gt;
&lt;br /&gt;
このとき $L$ を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$L$ を生成する右線形文法を $G=(V, \Sigma, R, S)$ とする。&lt;br /&gt;
&lt;br /&gt;
さて、&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
R^{(V)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R}{\gamma \in \kleenecl{\Sigma}V} \\&lt;br /&gt;
R^{(0)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R}{\gamma \in \kleenecl{\Sigma}}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$R=R^{(V)}\cup R^{(0)}$, $R^{(V)}\cap R^{(0)}=\emptyset$ である。&lt;br /&gt;
&lt;br /&gt;
\[R^{(S)}:=\mathsetintension{A\mathgen \gamma S}{A\mathgen \gamma \in R, \gamma \in \kleenecl{\Sigma}}\]&lt;br /&gt;
とすると、右線形文法&lt;br /&gt;
$G=(V, \Sigma, R^{(V)}\cup R^{(S)}\cup \{S\mathgen \emptyword\}, S)$ は $\kleenecl{L}$ を生成する。&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
==  正規表現、有限オートマトンとの関係 ==&lt;br /&gt;
この節では正規言語、[[正規表現]]および[[有限オートマトン]]との関係を述べる。以下では[[正規表現]]と[[有限オートマトン]]の定義などは既知とする。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=theorem |label=thm-regularandNFA }}&lt;br /&gt;
言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $L=\interpret{\alpha}$ なる正規表現 $\alpha$ が存在する。&lt;br /&gt;
# $L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
この節ではこの定理を証明する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=lemma |label=lemma-of-thm-regularandNFA }}&lt;br /&gt;
正規言語 $G=(V, \Sigma, R, S)$ に対して、&lt;br /&gt;
$G$ と[[句構造言語#句構造文法の等価性 | 等価 ]]であって、&lt;br /&gt;
すべての生成規則の右辺が&lt;br /&gt;
$(\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
の元である右線形文法が存在する。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
正規言語 $G=(V, \Sigma, R, S)$ について、&lt;br /&gt;
$R=\{A_{0}\mathgen \alpha_{0}, \ldots, A_{n}\mathgen \alpha_{n}\}$ （ただし $n\in\mathnat$）&lt;br /&gt;
とする。&lt;br /&gt;
&lt;br /&gt;
$G_{i}=(V_{i}, \Sigma, R_{i}, S)$&lt;br /&gt;
（ただし $n=0, \ldots, n+1$）&lt;br /&gt;
を次のように定義する。&lt;br /&gt;
&lt;br /&gt;
* $G_{0}=G$&lt;br /&gt;
* $\alpha_{i}\in (\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
のとき、$G_{i+1}:=G_{i}$ とする。&lt;br /&gt;
* $\alpha_{i}\in \kleenecl{\Sigma} \setminus (\Sigma \cup\{\emptyword\})$ のとき、$\alpha_{i}=a_{0}\ldots a_{m}$ （ただし、$m$ は $1$ 以上の自然数であって、$a_{j}\in \Sigma$ for $j\in \mathnat$）とする。&lt;br /&gt;
** $V_{i+1}:=V_{i}\cup \{B_{0}, \ldots, B_{m}\}$ （ただし、各 $B_{j}$ は $B_{j}\notin V_{i}\cup \Sigma$ を満たす変数記号）。&lt;br /&gt;
** $R_{i+1}:=R_{i}\setminus \{A_{i}\mathgen \alpha_{i}\}\cup \{A_{i} \mathgen a_{0}B_{0}, B_{0} \mathgen a_{1}B_{1}, \ldots, B_{m-1} \mathgen a_{m}B_{m}, B_{m}\mathgen \emptyword\}$。&lt;br /&gt;
* $\alpha_{i}\in \kleenecl{\Sigma}V\setminus (\Sigma \cup\{\emptyword\})V$ のとき、$\alpha_{i}=a_{0}\ldots a_{m} A'_{i}$ （ただし、$m$ は $1$ 以上の自然数であって、$a_{j}\in \Sigma$ for $j\in \mathnat$）とする。&lt;br /&gt;
** $V_{i+1}:=V_{i}\cup \{B_{0}, \ldots, B_{m}\}$ （ただし、各 $B_{j}$ は $B_{j}\notin V_{i}\cup \Sigma$ を満たす変数記号）。&lt;br /&gt;
** $R_{i+1}:=R_{i}\setminus \{A_{i}\mathgen \alpha_{i}\}\cup \{A_{i} \mathgen a_{0}B_{0}, B_{0} \mathgen a_{1}B_{1}, \ldots, B_{m-1} \mathgen a_{m}B_{m}, B_{m}\mathgen A'_{i}\}$。&lt;br /&gt;
&lt;br /&gt;
各 $i$ に対して、 $L(G_{i})=L(G_{i+1})$ に注意すると&lt;br /&gt;
$G_{n+1}$ が求める文法であることがわかる。&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 | display=Proof of {{ref |type=theorem |label=thm-regularandNFA }}. }}&lt;br /&gt;
(2. $\Rightarrow$ 1.)&lt;br /&gt;
$L=\interpret{\alpha}$ なる正規表現 $\alpha$ が存在するとき、&lt;br /&gt;
$L$ を生成する右線形文法が存在する（つまり $L$ は正規言語である）ことを言えば良い。&lt;br /&gt;
&lt;br /&gt;
正規表現の構成についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
Case 1.&lt;br /&gt;
$L=\interpret{\emptyset}=\emptyset$ のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \emptyset, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 2.&lt;br /&gt;
$L=\interpret{\emptyword}=\{\emptyword\}$ のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \{S \mathgen \emptyword\}, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 3.&lt;br /&gt;
$L=\interpret{a}=\{a\}$ (ただし、$a\in \Sigma$) のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \{S \mathgen a\}, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 4.&lt;br /&gt;
$L=\interpret{\alpha\beta}=\interpret{\alpha}\cdot\interpret{\beta}$&lt;br /&gt;
（ただし、$\alpha$, $\beta$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$, $\interpret{\beta}$ は正規言語である。&lt;br /&gt;
{{ref |type=prop |label=prop-regular-exp }} の 1. より、&lt;br /&gt;
$\interpret{\alpha}\cdot\interpret{\beta}$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
Case 5.&lt;br /&gt;
$L=\interpret{\alpha +\beta}=\interpret{\alpha}\cup \interpret{\beta}$&lt;br /&gt;
（ただし、$\alpha$, $\beta$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$, $\interpret{\beta}$ は正規言語である。&lt;br /&gt;
{{ref |type=prop |label=prop-regular-exp }} の 2. より、&lt;br /&gt;
$\interpret{\alpha}\cup \interpret{\beta}$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
Case 6.&lt;br /&gt;
$L=\interpret{\kleenecl{\alpha}}=\kleenecl{\interpret{\alpha}}$&lt;br /&gt;
（ただし、$\alpha$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$ は正規言語である。&lt;br /&gt;
{{ref |type=prop |label=prop-regular-exp }} の 3. より、&lt;br /&gt;
$\kleenecl{\interpret{\alpha}}$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
以上、Case 1-6 より(2. $\Rightarrow$ 1.) は示された。&lt;br /&gt;
&lt;br /&gt;
(1. $\Rightarrow$ 3.)&lt;br /&gt;
$L$ が正規言語であるとき、{{ref |type=lemma |label=lemma-of-thm-regularandNFA }}から&lt;br /&gt;
すべての生成規則の右辺が&lt;br /&gt;
$(\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
の元である$L$ を生成する右線形文法が存在する。&lt;br /&gt;
この文法を $G=(V, \Sigma, R, S)$ とする。&lt;br /&gt;
&lt;br /&gt;
まず、有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \delta, q_{I}, F)$&lt;br /&gt;
を次のように定義する。&lt;br /&gt;
&lt;br /&gt;
* $Q=V \cup \{f\}$ （ただし、$f\notin V$）&lt;br /&gt;
* $q_{I}=S$&lt;br /&gt;
* $\Delta = \{(A, a, A') | A, A'\in V, a\in \Sigma\cup\{\emptyword\}, A \mathgen aA'\in R \} \cup \{ (A, a, f) | A\in V, a\in \Sigma\cup\{\emptyword\}, A \mathgen a\in R\} \}$&lt;br /&gt;
* $F=\{f\}$&lt;br /&gt;
&lt;br /&gt;
次に、$wA\in \kleenecl{\Sigma}V$&lt;br /&gt;
に対して以下の２条件は同値であることを示す。&lt;br /&gt;
&lt;br /&gt;
(a) $S$ から始まる&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G}\cdots \Rightarrow_{G} \alpha_{n}(=wA)\]&lt;br /&gt;
(ただし、$\alpha_{i}=w_{i}A_{i}$ for $1\leq i\leq n$)&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
&lt;br /&gt;
(b) 記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ A_{0}, A_{1}, \ldots, A_{n}\]&lt;br /&gt;
（ただし、$A_{0}=S$, $A_{n}=A$）が存在する。&lt;br /&gt;
&lt;br /&gt;
(a) $\Rightarrow$ (b) を $n$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$n=1$ のとき、&lt;br /&gt;
$w=a$ なる $a\in\Sigma\cup\{\emptyword\}$が存在し、&lt;br /&gt;
$S\mathgen aA \in R$ であるはずである。&lt;br /&gt;
このとき、$\mathautomaton{A}$ の定義から&lt;br /&gt;
$(S, a, A)\in \Delta$である。&lt;br /&gt;
ゆえに、記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A \]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n&amp;gt;1$ のとき、&lt;br /&gt;
$w=w'a$ （ただし、$a\in \Sigma\cup\{\emptyword\}$）とおく。&lt;br /&gt;
このとき、$G$ の生成規則の形から&lt;br /&gt;
$w_{n-1}=w'$, &lt;br /&gt;
$A_{n-1}\mathgen aA \in R$&lt;br /&gt;
である。&lt;br /&gt;
このとき、帰納法の仮定から&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n-1}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[S, A_{1}, \ldots, A_{n-1} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
$A_{n-1}\mathgen aA \in R$&lt;br /&gt;
であるから、&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$であることに注意すると&lt;br /&gt;
記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{1}, \ldots, A_{n-1}, A \]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
(b) $\Rightarrow$ (a) を $n$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$n=1$ のとき、&lt;br /&gt;
$w=a$ なる $a\in\Sigma\cup\{\emptyword\}$が存在し、&lt;br /&gt;
$(S, a, A)\in \Delta$ のはずである。&lt;br /&gt;
このとき、$\mathautomaton{A}$ の定義から&lt;br /&gt;
$S\mathgen aA \in R$ である。ゆえに&lt;br /&gt;
\[ S \Rightarrow_{G} aA \]&lt;br /&gt;
である。&lt;br /&gt;
&lt;br /&gt;
$n&amp;gt;1$ のとき、&lt;br /&gt;
記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[A_{0}, A_{1}, \ldots, A_{n-1}A_{n} \]&lt;br /&gt;
（ただし、$A_{0}=S$, $A_{n}=A$）が存在すると仮定する。&lt;br /&gt;
すると、&lt;br /&gt;
$w=w'a$,&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$&lt;br /&gt;
を満たす&lt;br /&gt;
$a\in\Sigma\cup\{\emptyword\}$, $w'\in\kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
すると、記号列 $w'$ による $S$ から $A_{n-1}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[A_{0}, A_{1}, \ldots, A_{n-1} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
帰納法の仮定から&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n-1}(=w'A_{n-1})\]&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$ であるから、&lt;br /&gt;
$A_{n-1} \mathgen  aA\in R$ であるので、&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G} \cdots \Rightarrow_{G} w'A_{n-1} \Rightarrow_{G} w'aA(=wA) \]&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
 &lt;br /&gt;
最後に $L=L(\mathautomaton{A})$ を示す。&lt;br /&gt;
&lt;br /&gt;
$w\in L$ を仮定する。&lt;br /&gt;
すると、導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} \Rightarrow_{G} w\]&lt;br /&gt;
が存在する。&lt;br /&gt;
$G$ の生成規則の形から&lt;br /&gt;
$w=w'a$, $\alpha_{n}=w'A_{n}$, $A_{n}\mathgen a \in R$&lt;br /&gt;
を満たす $A_{n}\in V$, $a\in \Sigma\cup\{\emptyword\}$, &lt;br /&gt;
$w'\in \kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
このとき、&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n}$ への $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, A_{1}, \ldots, A_{n} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
$A_{n}\mathgen a \in R$&lt;br /&gt;
であるから、&lt;br /&gt;
$(A_{n}, a, f)\in \Delta$&lt;br /&gt;
に注意すると、&lt;br /&gt;
記号列 $w'a=w$ による $S$ から $f$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, \ldots, A_{n}, f \]&lt;br /&gt;
が存在する。&lt;br /&gt;
ゆえに $w\in L(\mathautomaton{A})$ である。&lt;br /&gt;
&lt;br /&gt;
逆に、$w\in L(\mathautomaton{A})$ とする。&lt;br /&gt;
すると、&lt;br /&gt;
記号列 $w$ による $S$ から $f$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, A_{1}, \ldots, A_{n}, f\]&lt;br /&gt;
が存在する。&lt;br /&gt;
すると、&lt;br /&gt;
$w=w'a$, $(A_{n}, a, f) \in \Delta$&lt;br /&gt;
を満たす $a\in \Sigma\cup\{\emptyword\}$, &lt;br /&gt;
$w'\in \kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
また、&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, \ldots, A_{n} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
よって、導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} (=w'A_{n})\]&lt;br /&gt;
が存在する。&lt;br /&gt;
$(A_{n}, a, f) \in \Delta$ から&lt;br /&gt;
$A_{n}\mathgen a$ であるので、&lt;br /&gt;
$w$ の導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} \Rightarrow_{G} w (=w'a)\]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
以上より(1. $\Rightarrow$ 3.)は示された。&lt;br /&gt;
&lt;br /&gt;
(3. $\Rightarrow$ 2.)&lt;br /&gt;
$L$ を受理する有限オートマトンを&lt;br /&gt;
$\mathautomaton{A}=(\{q_{1}, q_{2}, \ldots, q_{n}\}, \Sigma, \Delta, q_{1}, \{q_{F_{0}}, q_{F_{1}}, \ldots, q_{F_{m}}\})$ とおく。&lt;br /&gt;
&lt;br /&gt;
簡単のため、以下&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\sum_{\alpha \in A} \alpha &amp;amp;= (\alpha_{0}+ \cdots + \alpha_{k}) \quad \text{（ただし、A は正規表現の空でない有限集合であって、A=\{a_{0}, \ldots, a_{k}\}）}, \\&lt;br /&gt;
Q_{ij}&amp;amp;=\{a\in \Sigma\cup\{\emptyword\} | (q_{i}, a, q_{j})\in \Delta\}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
という略記を用いる。&lt;br /&gt;
&lt;br /&gt;
正規表現 $\alpha^{(l)}_{ij}$ （ただし、$1\leq i, j \leq n$, $0\leq l \leq n$）を次のように帰納的に定める。&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\alpha^{(0)}_{ij}&amp;amp;=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
\emptyset, &amp;amp; \text{if Q_{ij}=\emptyset}, \\&lt;br /&gt;
\sum_{a\in Q_{ij}}a, &amp;amp; \text{if Q_{ij}\neq \emptyset, i\neq j}; \\&lt;br /&gt;
\kleenecl{\left(\sum_{a\in Q_{ij}}a\right)}, &amp;amp; \text{if Q_{ij}\neq \emptyset, i=j}; &lt;br /&gt;
\end{cases}\\&lt;br /&gt;
\alpha^{(l)}_{ij}&amp;amp;=\alpha^{(l-1)}_{ij} + \alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}, \quad \text{（ただし、1\leq l）}.&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
$w\in \interpret{\alpha^{(l)}_{ij}}$ であるとき、&lt;br /&gt;
記号列 $w$ による $q_{i}$ から $q_{j}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{0}}, q_{k_{1}}, \ldots, q_{k_{p}} \]&lt;br /&gt;
（ただし、$k_{0}=i$, $k_{p}=j$, $1\leq q\leq p-1$ のとき $1\leq k_{q} \leq l$）が存在することを $l$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$l=0$ については明らか。&lt;br /&gt;
&lt;br /&gt;
$l&amp;gt;0$ のとき、$w\in \interpret{\alpha^{(l)}_{ij}}$ であるとすると、&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{ij}}$ または&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}}$ である。&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{ij}}$ のときは帰納法の仮定より明らか。&lt;br /&gt;
&lt;br /&gt;
$w\in \interpret{ \alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}}$ とする。すると&lt;br /&gt;
$w_{1}\in \interpret{\alpha^{(l-1)}_{il}}$,&lt;br /&gt;
$w_{2}\in \interpret{\alpha^{(l-1)}_{ll}}$,&lt;br /&gt;
$w_{3}\in \interpret{\alpha^{(l-1)}_{lj}}$,&lt;br /&gt;
$w=w_{1}(w_{2})^{s}w_{3}$ （ただし、$s\in \mathnat$） を満たす記号列 $w_{1}$, $w_{2}$, $w_{3}$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から、&lt;br /&gt;
記号列 $w_{t}$ （$t=1, 2, 3$）による$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{t0}}, q_{k_{t1}}, \ldots, q_{k_{tp}} \]&lt;br /&gt;
（ただし、$k_{10}=i$, $k_{1p}=k_{20}=k_{2p}=k_{30}=l$, $k_{3p}=j$, $1\leq q\leq p-1$ のとき $1\leq k_{q} \leq l-1$）が存在する。&lt;br /&gt;
すると、&lt;br /&gt;
記号列 $w$ による $q_{i}$ から $q_{j}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{10}}, q_{k_{11}}, \ldots, q_{k_{1p}}, \overbrace{q_{k_{21}}, \ldots, q_{k_{2p}}}^{s}, q_{k_{31}}, \ldots, q_{k_{3p}} \]&lt;br /&gt;
が存在することがわかる。&lt;br /&gt;
&lt;br /&gt;
以上のことに注意すると、&lt;br /&gt;
\[ \alpha^{(n)}_{1F_{0}}+\alpha^{(n)}_{1F_{1}}+ \cdots + \alpha^{(n)}_{1F_{m}}\]&lt;br /&gt;
は $\mathautomaton{A}$ が受理する記号列全体である。&lt;br /&gt;
 &lt;br /&gt;
以上より(3. $\Rightarrow$ 2.)は示された。&lt;br /&gt;
{{end  |proof }}&lt;br /&gt;
&lt;br /&gt;
== Myhill-Nerodeの定理  ==&lt;br /&gt;
この節ではMyhill-Nerodeの定理について述べる。&lt;br /&gt;
この定理は正規言語の[[形式言語#def-quotient |左商]]による定式化とみなせる。&lt;br /&gt;
&lt;br /&gt;
{{theorem | type=theorem | name=Myhill-Nerodeの定理 | label=thm-Myhill-Nerode }}&lt;br /&gt;
$\Sigma$ 上の形式言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $\inverse{\kleenecl{\Sigma}}L$ は有限集合。&lt;br /&gt;
&lt;br /&gt;
{{begin  |proof | collapsible=1 }}&lt;br /&gt;
(1. $\Rightarrow$ 2.)&lt;br /&gt;
形式言語 $L$ は正規言語であると仮定する。&lt;br /&gt;
&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }} より、$L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
よって、[[有限オートマトン#prop-finite_automaton_non_emptyword | $L$ を受理する決定性有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が存在する]]。&lt;br /&gt;
&lt;br /&gt;
$\mathautomaton{A}$ は決定性有限オートマトンなので、任意の記号列 $w\in \kleenecl{\Sigma}$ に対して、次のいずれかが成り立つことに注意する。&lt;br /&gt;
# 記号列 $w\in \kleenecl{\Sigma}$ による $q_{I}$ から始まる $\mathautomaton{A}$ の状態遷移は存在しない。&lt;br /&gt;
# 記号列 $w\in \kleenecl{\Sigma}$ による $q_{I}$ から $q_{w} への$ $\mathautomaton{A}$ の状態遷移が存在し、$q_{w}$ は一意。&lt;br /&gt;
&lt;br /&gt;
前者のとき、$\inverse{w}L$ は空集合である。&lt;br /&gt;
後者のとき、決定性有限オートマトン $\mathautomaton{A}_{w}=(Q, \Sigma, \Delta, q_{w}, F)$ は $\inverse{w}L$ を受理する。&lt;br /&gt;
&lt;br /&gt;
$Q$ は有限集合であり、$q_{w} = q_{w'}$ ならば $\mathautomaton{A}_{w} = \mathautomaton{A}_{w'}$ に注意すると、&lt;br /&gt;
$\inverse{\kleenecl{\Sigma}}L$ の濃度は高々 $\mathcountfunc{Q} + 1$ である&lt;br /&gt;
（ただし、$\#$ は有限集合を受け取りそこに所属する元の個数を返す関数）。&lt;br /&gt;
&lt;br /&gt;
(2. $\Rightarrow$ 1.)&lt;br /&gt;
$\Sigma$ 上の形式言語 $L$ について $\inverse{\kleenecl{\Sigma}}L$ は有限集合と仮定する。&lt;br /&gt;
&lt;br /&gt;
集合 $\Delta_{L}$ と $F_{L}$ を次のように定義する。&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\Delta_{L} &amp;amp;:= \mathsetintension{(\inverse{w}L, a, \inverse{(wa)}L)}{w\in\kleenecl{\Sigma}} \\&lt;br /&gt;
F_{L} &amp;amp;:= \mathsetintension{L'\in \inverse{\kleenecl{\Sigma}}L}{\emptyword\in L'}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
$\inverse{\kleenecl{\Sigma}}L$ は有限集合であることから、&lt;br /&gt;
$\mathautomaton{A}_{L}=(\inverse{\kleenecl{\Sigma}}L, \Sigma, \Delta_{L}, L, F_{L})$&lt;br /&gt;
は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
$\mathautomaton{A}_{L}$ が受理する言語が $L$ であることを示す。&lt;br /&gt;
&lt;br /&gt;
$w\in L$ を仮定してする。$w$ が $\mathautomaton{A}_{L}$ に受理されることを示す。&lt;br /&gt;
&lt;br /&gt;
このとき、記号列 $w$ による $L$ から $\inverse{w}L$ への $\mathautomaton{A}_{L}$ の状態遷移が存在する。&lt;br /&gt;
$w\in L$ であるから、$\emptyword\in \inverse{w}L$。よって $\inverse{w}L\in F_{L}$。&lt;br /&gt;
ゆえに $w$ は $\mathautomaton{A}_{L}$ に受理される。&lt;br /&gt;
&lt;br /&gt;
$w$ が $\mathautomaton{A}_{L}$ に受理されることを仮定する。$w\in L$ を示す。&lt;br /&gt;
&lt;br /&gt;
$w$ が $\mathautomaton{A}_{L}$ に受理されることから&lt;br /&gt;
記号列 $w$ による $L$ から $\inverse{w}L$ への $\mathautomaton{A}_{L}$ の状態遷移が存在し、&lt;br /&gt;
$\inverse{w}L\in F_{L}$ である。よって $\emptyword\in \inverse{w}L$。これは $w\in L$ を意味する。&lt;br /&gt;
&lt;br /&gt;
以上より $\mathautomaton{A}_{L}$ が受理する言語は $L$ である。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
== 正規言語のクラスの閉包性 その２ ==&lt;br /&gt;
この節では正規言語のクラスが補集合演算、共通部分演算、鏡像、左商、右商によって閉じていることを述べる。&lt;br /&gt;
&amp;lt;!-- 代入についてもそのうち書く --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=prop-regular-exp }}&lt;br /&gt;
# $\kleenecl{\Sigma}$ 上の形式言語 $L$ が正規言語であるならば $\kleenecl{\Sigma}\setminus L$ も正規言語である。&lt;br /&gt;
# 形式言語 $L_{1}$, $L_{2}$ が正規言語であるならば $L_{1}\cap L_{2}$ も正規言語である。&lt;br /&gt;
# 形式言語 $L$ が正規言語であるならば $\mirrorim{L}=\mathsetintension{\mirrorim{w}}{w\in L}$ も正規言語である。&lt;br /&gt;
# $\kleenecl{\Sigma}$ 上の形式言語 $L$ が正規言語であるならば $w\in\kleenecl{\Sigma}$ による左商 $\inverse{w}L$ および右商 $L\inverse{w}$ はいずれも正規言語である。&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
1. 形式言語 $L$ は正規言語であると仮定する。&lt;br /&gt;
&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }} より、$L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
よって、[[有限オートマトン#prop-finite_automaton_non_emptyword | $L$ を受理する決定性有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が存在する]]。&lt;br /&gt;
&lt;br /&gt;
$q_{\infty}\notin Q$ とする。また、&lt;br /&gt;
\[&lt;br /&gt;
\Delta_{\infty}=\mathsetintension{(q,a,q_{\infty})}{\text{任意の$q'$に対して}(q,a,q')\notin \Delta} \cup \mathsetintension{(q_{\infty}, a, q_{\infty})}{a\in\Sigma}&lt;br /&gt;
\]&lt;br /&gt;
とする。&lt;br /&gt;
&lt;br /&gt;
すると決定性有限オートマトン $\mathautomaton{A}_{\infty}=(Q\cup\mathsetextension{q_{\infty}}, \Sigma, \Delta\cup\Delta_{\infty}, q_{I}, F)$ は $L$ を受理し、&lt;br /&gt;
任意の記号列にたいして、状態遷移を持つ。&lt;br /&gt;
このとき、$\mathautomaton{A}'=(Q\cup\mathsetextension{q_{\infty}}, \Sigma, \Delta\cup\Delta_{\infty}, q_{I}, {Q\cup\mathsetextension{q_{\infty}}\setminus F})$ は $\kleenecl{\Sigma}\setminus L$&lt;br /&gt;
を受理する決定性有限オートマトンである。よって、$\kleenecl{\Sigma}\setminus L$ は正規言語。&lt;br /&gt;
&lt;br /&gt;
2. $L_{1}$, $L_{2}$ を正規言語とする。&lt;br /&gt;
このとき、 $\kleenecl{\Sigma}\setminus L_{1}$, $\kleenecl{\Sigma}\setminus L_{2}$ もまた正規言語である。&lt;br /&gt;
{{ref |type=prop |label=prop-regular-exp }} の 2. より $L_{1}\cap L_{2} = \left(\kleenecl{\Sigma}\setminus L_{1}\right)\cup\left(\kleenecl{\Sigma}\setminus L_{2}\right)$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
3. $L$ を正規言語とする。{{ref |type=theorem |label=thm-regularandNFA }} より、&lt;br /&gt;
$L$ を受理する有限オートマトン &lt;br /&gt;
$\mathautomaton{A}=\left(Q, \Sigma, \Delta, q_{0}, F\right)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
このとき、集合 $\mirrorim{\Delta}$ を次のように定義する。&lt;br /&gt;
\[\mirrorim{\Delta} = \mathsetintension{ \left(q_{1}, a, q_{0} \right) }{\left(q_{0}, a, q_{1} \right) \in \Delta} \]&lt;br /&gt;
&lt;br /&gt;
$q\in F$ について、&lt;br /&gt;
$\mathautomaton{A}_{q}=\left(Q, \Sigma, \mirrorim{\Delta}, q, \mathsetextension{q_{0}}\right)$ &lt;br /&gt;
とおく。このとき、$L\left(\mathautomaton{A}_{q}\right)$ は正規言語である。また、&lt;br /&gt;
&lt;br /&gt;
\[\mirrorim{L} = \bigcup_{q\in F} L\left(\mathautomaton{A}_{q}\right)\]&lt;br /&gt;
&lt;br /&gt;
である。{{ref |type=prop |label=prop-regular-exp }} の 2. より $\mirrorim{L}$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
4.&lt;br /&gt;
形式言語 $L$ は正規言語であると仮定する。&lt;br /&gt;
&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }} より、$L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
よって、[[有限オートマトン#prop-finite_automaton_non_emptyword | $L$ を受理する決定性有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が存在する]]。&lt;br /&gt;
&lt;br /&gt;
$\mathautomaton{A}$ は決定性有限オートマトンなので、任意の記号列 $w\in \kleenecl{\Sigma}$ に対して、次のいずれかが成り立つことに注意する。&lt;br /&gt;
# 記号列 $w\in \kleenecl{\Sigma}$ による $q_{I}$ から始まる $\mathautomaton{A}$ の状態遷移は存在しない。&lt;br /&gt;
# 記号列 $w\in \kleenecl{\Sigma}$ による $q_{I}$ から $q_{w} への$ $\mathautomaton{A}$ の状態遷移が存在し、$q_{w}$ は一意。&lt;br /&gt;
&lt;br /&gt;
前者のとき、$\inverse{w}L$ は空集合である。このとき、$\inverse{w}L$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
後者のとき、決定性有限オートマトン $\mathautomaton{A}_{w}=(Q, \Sigma, \Delta, q_{w}, F)$ は $\inverse{w}L$ を受理する。&lt;br /&gt;
よって、$\inverse{w}L$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
さて、&lt;br /&gt;
\[L\inverse{w}=\mirrorim{\mirrorim{L\inverse{w}}}=\mirrorim{\mirrorim{\inverse{w}}\mirrorim{L}}\]&lt;br /&gt;
であるから、$L\inverse{w}$ も正規言語である。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
==  正規言語と左線形文法 ==&lt;br /&gt;
この節では正規言語と左線形文法との関係を述べる。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=definition |name=左線形文法 |label=def-left_linear_grammar }}&lt;br /&gt;
'''左線形文法（left linear grammar）'''とは&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# $\Sigma$ と互いに素な'''変数記号（variable）'''の有限集合 $V$&lt;br /&gt;
# '''生成規則（production rule）'''と呼ばれる有限集合 $R \subseteq V \times V\kleenecl{(\Sigma)}\cup \kleenecl{(\Sigma)}$&lt;br /&gt;
# '''開始記号(start symbol)'''または'''初期記号'''と呼ばれる $S\in V$&lt;br /&gt;
&lt;br /&gt;
の４つ組$(V, \Sigma, R, S)$である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
これは、[[句構造言語#def-phrase_structure_grammar | 句構造文法]]の一種である。また、[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]の一種である。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=thm-left_linear_grammar }}&lt;br /&gt;
言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $L$ を生成する左線形文法が存在する。&lt;br /&gt;
&lt;br /&gt;
==  正規言語ではない形式言語の例  ==&lt;br /&gt;
この節では正規言語ではない[[形式言語]]の例を紹介する。&lt;br /&gt;
&lt;br /&gt;
そのような例が存在すること自体は右線形文法が[[集合の濃度#具体的な濃度 | 高々可算個]]しかないことと[[形式言語]]の濃度が[[集合の濃度#具体的な濃度 | 非加算]]であることに注意すると、明らかである。&lt;br /&gt;
しかし、その具体例を構成し、正規言語ではないことを示すことはそれほど簡単ではない。このとき強力な武器となるのが[[有限オートマトン#pumping_lemma | 反復補題]]である。&lt;br /&gt;
&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]] については当該項目を参照せよ。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0^{n}1^{n}$ という形をした記号列全体 |label=ex-counter_example_reg_lang_n }}&lt;br /&gt;
$0^{n}1^{n}$ （ただし、$n\in\mathnat$）という形の記号列全体は正規言語ではない。しかしながら[[文脈自由言語]]ではある。この記号列全体を生成する[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]は[[文脈自由言語#ex-counter_example_reg_lang_n | この例]]を参照せよ。&lt;br /&gt;
&lt;br /&gt;
'''$0^{n}1^{n}$ という形の記号列全体が正規言語ではないことの証明'''&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
背理法により示す。&lt;br /&gt;
&lt;br /&gt;
$0^{n}1^{n}$ という形の記号列全体 $L$ が正規言語であると仮定する。&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }}より、$L=L(\mathautomaton{A})$ を満たす&lt;br /&gt;
有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n_{0}=|Q|$ とする。仮定より&lt;br /&gt;
$\mathautomaton{A}$ は $w=0^{n_{0}}1^{n_{0}}$ を受理する。&lt;br /&gt;
すると$\left|w\right|&amp;gt;n_{0}$ であるから&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]] より&lt;br /&gt;
次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w=xyz$。&lt;br /&gt;
# $\left|y\right|&amp;gt;0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は&lt;br /&gt;
$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n_{0}$。&lt;br /&gt;
&lt;br /&gt;
このとき、 $xy=0^{k}$ （ただし、$0\lt k\leq n_{0}$）&lt;br /&gt;
であることに注意する。&lt;br /&gt;
すると、 $x=0^{k_{0}}$, $y=0^{k_{1}}$&lt;br /&gt;
（ただし、$0\leq k_{0}\leq k$, $0\lt k_{1}\leq k$,&lt;br /&gt;
$k=k_{0}+k_{1}$）&lt;br /&gt;
を満たす自然数 $k_{0}$, $k_{1}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
さて、$\mathautomaton{A}$ は&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]]の条件から、&lt;br /&gt;
記号列 $xz$ を受理するはずである。&lt;br /&gt;
しかし、$xz=0^{n_{0}-k_{1}}b^{n_{0}}$, $n_{0}-k_{1}\lt n_{0}$&lt;br /&gt;
であるから $xz\notin L$ である。&lt;br /&gt;
これは $L=L(\mathautomaton{A})$ に矛盾する。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$w\mirrorim{w}$ という形をした記号列全体 |label=ex-counter_example_reg_lang_mirror }}&lt;br /&gt;
$w\mirrorim{w}$（ただし、$n\in\mathnat$）という形の記号列全体は正規言語ではない。しかしながら[[文脈自由言語]]ではある。この記号列全体を生成する[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]は[[文脈自由言語#ex-counter_example_reg_lang_mirror | この例]]を参照せよ。&lt;br /&gt;
'''$w\mirrorim{w}$ という形の記号列全体が正規言語ではないことの証明'''&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
背理法により示す。&lt;br /&gt;
&lt;br /&gt;
$w\mirrorim{w}$ という形の記号列全体 $L$ が正規言語であると仮定する。&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }}より、&lt;br /&gt;
$L=L(\mathautomaton{A})$ を満たす&lt;br /&gt;
有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n_{0}=|Q|$ とする。以下 $w_{0}=0^{n_{0}}1$ とする。&lt;br /&gt;
仮定より $\mathautomaton{A}$ は $w_{0}\mirrorim{w_{0}}$ を受理する。&lt;br /&gt;
すると $\left|w_{0}\mirrorim{w_{0}}\right|&amp;gt;n_{0}$ であるから&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題 ]] より&lt;br /&gt;
次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w_{0}\mirrorim{w_{0}}=xyz$。&lt;br /&gt;
# $\left|y\right|&amp;gt;0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は&lt;br /&gt;
$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n_{0}$。&lt;br /&gt;
&lt;br /&gt;
このとき、 $xy=0^{k}$ （ただし、$0\lt k\leq n_{0}$）&lt;br /&gt;
であることに注意する。&lt;br /&gt;
すると、 $x=0^{k_{0}}$, $y=0^{k_{1}}$&lt;br /&gt;
（ただし、$0\leq k_{0}\leq k$, $0\lt k_{1}\leq k$,&lt;br /&gt;
$k=k_{0}+k_{1}$）&lt;br /&gt;
を満たす自然数 $k_{0}$, $k_{1}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
さて、$\mathautomaton{A}$ は&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題 ]] の条件から、&lt;br /&gt;
記号列 $xz$ を受理するはずである。&lt;br /&gt;
しかし、$xz=0^{n_{0}-k_{1}}1\mirrorim{w_{0}}=0^{n_{0}-k_{1}}110^{n_{0}}$, $n_{0}-k_{1}\lt n_{0}$&lt;br /&gt;
であるから $xz\notin L$ である。&lt;br /&gt;
これは $L=L(\mathautomaton{A})$ に矛盾する。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
==  参考文献 ==&lt;br /&gt;
# 新屋 良磨、オートマトン理論再考、コンピュータ ソフトウェア、2017、34 巻、3 号、p. 3_3-3_35、公開日 2017/09/25、Print ISSN 0289-6540、https://doi.org/10.11309/jssst.34.3_3、https://www.jstage.jst.go.jp/article/jssst/34/3/34_3_3/_article/-char/ja&lt;br /&gt;
# 五十嵐喜英他、『[[数理情報科学シリーズ ２４ オートマトンと形式言語の基礎]]』、牧野書店、2011&lt;br /&gt;
&lt;br /&gt;
== 関連項目 ==&lt;br /&gt;
* [[形式言語]]&lt;br /&gt;
* [[正規表現]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
|+ Chomsky階層&lt;br /&gt;
! 文法のタイプ&lt;br /&gt;
! 言語のクラス&lt;br /&gt;
! 計算モデル&lt;br /&gt;
|-&lt;br /&gt;
! タイプ0&lt;br /&gt;
| [[句構造言語]]&lt;br /&gt;
| [[Turingマシン]]&lt;br /&gt;
|-&lt;br /&gt;
! タイプ1&lt;br /&gt;
| [[文脈依存言語]]&lt;br /&gt;
| [[線形有界オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ2&lt;br /&gt;
| [[文脈自由言語]]&lt;br /&gt;
| [[プッシュダウン・オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ3&lt;br /&gt;
| [[正規言語]]&lt;br /&gt;
| [[有限オートマトン]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E6%AD%A3%E8%A6%8F%E8%A8%80%E8%AA%9E&amp;diff=9393</id>
		<title>正規言語</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E6%AD%A3%E8%A6%8F%E8%A8%80%E8%AA%9E&amp;diff=9393"/>
		<updated>2021-12-10T16:36:16Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: Complement に対して正規言語が閉じていることを示した．&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{TOC |align=right |noautonum=1 }}&amp;lt;!-- 右寄せ連番無し目次をここに表示 --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Category:形式言語理論|セイキゲンゴ]]&lt;br /&gt;
{{begin |preamble}}&lt;br /&gt;
&amp;lt;!-- 参考文献 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 定理環境 --&amp;gt;&lt;br /&gt;
{{newtheorem |type=theorem |display=定理}}&lt;br /&gt;
{{newtheorem |type=lemma |display=補題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=definition |display=定義 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=prop |display=命題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=example |display=例 |family=theorem }}&lt;br /&gt;
&amp;lt;!-- MathJax commands --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\newcommand{\mathsetextension}[1]{%&lt;br /&gt;
\left\{ #1 \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathsetintension}[2]{%&lt;br /&gt;
\left\{ #1 \left| #2 \right.\right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathof}[2]{%&lt;br /&gt;
\mathop{#1}\left(#2\right)%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathderiv}{\mathrel{\mathop{\Rightarrow}^{*}}}&lt;br /&gt;
\newcommand{\mathgen}{\rightsquigarrow}&lt;br /&gt;
\newcommand{\mathgenfun}[1]{\mathbf{#1}}&lt;br /&gt;
\newcommand{\mirrorim}[1]{\overleftarrow{#1}}&lt;br /&gt;
\newcommand{\emptyword}{\varepsilon}&lt;br /&gt;
\newcommand{\kleenecl}[1]{{#1}^{*}}&lt;br /&gt;
\newcommand{\inverse}[1]{{#1}^{-1}}&lt;br /&gt;
\newcommand{\interpret}[1]{[\![#1]\!]}&lt;br /&gt;
\newcommand{\mathautomaton}[1]{\mathcal{#1}}&lt;br /&gt;
\newcommand{\mathnat}{\mathbb{N}}&lt;br /&gt;
\newcommand{\mathcountfunc}{\mathop{\#}}&lt;br /&gt;
&lt;br /&gt;
\newcommand{\qed}{\blacksquare}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
{{end |preamble}}&lt;br /&gt;
'''正規言語（regular language）'''とは右線形文法(right linear grammar)または左線形文法(left linear grammar)によって定められる形式言語である。&lt;br /&gt;
&lt;br /&gt;
右線形文法は句構造文法の一種であるから、&lt;br /&gt;
右線形言語は[[句構造言語]]の一種である。&lt;br /&gt;
&lt;br /&gt;
また、右線形文法は文脈自由文法の一種であるから、&lt;br /&gt;
右線形言語は[[文脈自由言語]]の一種である。&lt;br /&gt;
&lt;br /&gt;
以下、項目[[形式言語]]、[[句構造言語]]において定められている言語上の演算や文法の等価性の定義などについては特に断らず用いる。&lt;br /&gt;
&lt;br /&gt;
==  正規言語の導入 ==&lt;br /&gt;
この節では'''正規言語'''を定義する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=definition |name=右線形文法 |label=def-right_linear_grammar }}&lt;br /&gt;
'''右線形文法（right linear grammar）'''とは&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# $\Sigma$ と互いに素な'''変数記号（variable）'''の空でない有限集合 $V$&lt;br /&gt;
# '''生成規則（production rule）'''と呼ばれる有限集合 $R \subseteq V \times (\kleenecl{\Sigma}V)\cup (\kleenecl{\Sigma})$&lt;br /&gt;
# '''開始記号(start symbol)'''または'''初期記号'''と呼ばれる $S\in V$&lt;br /&gt;
&lt;br /&gt;
の４つ組$(V, \Sigma, R, S)$である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
これは、[[句構造言語#def-phrase_structure_grammar | 句構造文法]]の一種である。また、[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]の一種である。&lt;br /&gt;
&lt;br /&gt;
[[句構造言語]]のときと同様、$\Sigma$ の元を'''終端記号(terminal)'''、$V$ の元を'''非終端記号(non-terminal)'''と呼ぶことも多い。&lt;br /&gt;
&lt;br /&gt;
以下では、元$(A, \alpha)\in R$ のことを$A\mathgen\alpha$と書く。&lt;br /&gt;
&lt;br /&gt;
[[句構造言語#def-derivation | 導出]]、[[句構造言語#def-phrase_structure_lang | 生成される言語]]などは&lt;br /&gt;
句構造言語と同様に定義される。&lt;br /&gt;
&lt;br /&gt;
'''正規言語'''とは何らかの右線形文法によって生成される言語のことを言う。&lt;br /&gt;
&lt;br /&gt;
==  正規言語の例 ==&lt;br /&gt;
この節では正規言語の例を紹介する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列全体 |label=ex-all_lang }}&lt;br /&gt;
$V=\left\{ S \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen\emptyword, S\mathgen 0S, S\mathgen 1S \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
$0$ と $1$ からなる有限記号列全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、$0$ と $1$ からなる有限記号列全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる。&lt;br /&gt;
&lt;br /&gt;
\begin{gather*}&lt;br /&gt;
S \Rightarrow \emptyword \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 0\emptyword = 0 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 1\emptyword = 1 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 00\emptyword = 00 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 01\emptyword = 01 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 10\emptyword = 10 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 11\emptyword = 11 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 000S \Rightarrow 000\emptyword = 000 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 001S \Rightarrow 001\emptyword = 001 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 010S \Rightarrow 010\emptyword = 010 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 011S \Rightarrow 011\emptyword = 011 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 100S \Rightarrow 100\emptyword = 100 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 101S \Rightarrow 101\emptyword = 101 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 110S \Rightarrow 110\emptyword = 110 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 111S \Rightarrow 111\emptyword = 111&lt;br /&gt;
\end{gather*}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体 |label=ex-only_three_one_lang }}&lt;br /&gt;
$V=\left\{ S, A_{1}, A_{2}, A_{3} \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen 0S, S\mathgen 1A_{1}, A_{1}\mathgen 0A_{1}, A_{1}\mathgen 1A_{2}, A_{2}\mathgen 0A_{2}, A_{2}\mathgen 1A_{3}, A_{3}\mathgen 0A_{3}, A_{3}\mathgen \emptyword \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
S &amp;amp;\Rightarrow 1A_{1} \Rightarrow 11A_{2} \Rightarrow 111A_{3} \Rightarrow 111\emptyword = 111 \\&lt;br /&gt;
S &amp;amp;\Rightarrow 0S \\&lt;br /&gt;
&amp;amp;\Rightarrow 01A_{1} \Rightarrow 010A_{1} \Rightarrow 0100A_{1} \\&lt;br /&gt;
&amp;amp;\Rightarrow 01001A_{2} \Rightarrow 010010A_{2} \Rightarrow 0100100A_{2} \Rightarrow 01001000A_{2} \\&lt;br /&gt;
&amp;amp;\Rightarrow 010010001A_{3} \Rightarrow 0100100010A_{3} \Rightarrow 01001000100A_{3} \Rightarrow 010010001000A_{3} \Rightarrow 0100100010000A_{3} \Rightarrow 0100100010000\emptyword =0100100010000&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=自然数の二進表現全体 |label=ex-bi_lang }}&lt;br /&gt;
$V=\left\{ S, A_{1} \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen 0, S\mathgen 1A_{1}, A_{1}\mathgen 0A_{1}, A_{1}\mathgen 1A_{1}, A_{1}\mathgen \emptyword \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
自然数の二進表現全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、自然数の二進表現全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる&lt;br /&gt;
&lt;br /&gt;
\begin{gather*}&lt;br /&gt;
S \Rightarrow 0 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 1\emptyword = 1 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 10\emptyword = 10 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 11\emptyword = 11 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 100\emptyword = 100 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 101\emptyword = 101 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 100\emptyword = 110 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 111\emptyword = 111 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 1000A_{1} \Rightarrow 1000\emptyword = 1000 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 1001A_{1} \Rightarrow 1001\emptyword = 1001 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 1010A_{1} \Rightarrow 1010\emptyword = 1010 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 1011A_{1} \Rightarrow 1011\emptyword = 1011 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 1100A_{1} \Rightarrow 1100\emptyword = 1100 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 1101A_{1} \Rightarrow 1101\emptyword = 1101 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 1110A_{1} \Rightarrow 1110\emptyword = 1110 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 1111A_{1} \Rightarrow 1111\emptyword = 1111&lt;br /&gt;
\end{gather*}&lt;br /&gt;
&lt;br /&gt;
== 正規言語のクラスの閉包性 その１ ==&lt;br /&gt;
この節では正規言語のクラスが[[形式言語#id_concatenation | 連接 ]]、和集合演算、[[形式言語#id_kleeneclosure | Kleene閉包 ]]によって閉じていることを述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop | name=正規言語のクラスの閉包性 その１ |label=prop-regular-exp }}&lt;br /&gt;
# 形式言語 $L_{1}$, $L_{2}$ が正規言語であるならば $L_{1}L_{2}$ も正規言語である。&lt;br /&gt;
# 形式言語 $L_{1}$, $L_{2}$ が正規言語であるならば $L_{1}\cup L_{2}$ も正規言語である。&lt;br /&gt;
# 形式言語 $L$ が正規言語であるならば $\kleenecl{L}$ も正規言語である。&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
1. 形式言語 $L_{1}$, $L_{2}$ が正規言語であると仮定する。&lt;br /&gt;
&lt;br /&gt;
このとき $L_{1}$, $L_{2}$ を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$L_{1}$ を生成する右線形文法を $G=(V_{1}, \Sigma, R_{1}, S_{1})$、&lt;br /&gt;
$L_{2}$ を生成する右線形文法を $G=(V_{2}, \Sigma, R_{2}, S_{2})$ とする。&lt;br /&gt;
このとき、$V_{1}\cap V_{2}=\emptyset$ と仮定しても&lt;br /&gt;
一般性を失わない（必要であれば、変数記号を適切に置き換えれば良い）。&lt;br /&gt;
&lt;br /&gt;
さて、&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
R_{1}^{(V)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R_{1}}{\gamma \in \kleenecl{\Sigma}V}  \\&lt;br /&gt;
R_{1}^{(0)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R_{1}}{\gamma \in \kleenecl{\Sigma}}  &lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$R_{1}=R_{1}^{(V)}\cup R_{1}^{(0)}$, $R_{1}^{(V)}\cap R_{1}^{(0)}=\emptyset$ である。&lt;br /&gt;
\[R_{1}^{(S_{2})}:=\mathsetintension{A\mathgen \gamma S_{2}}{A\mathgen \gamma \in R_{1}^{(0)}\]&lt;br /&gt;
とすると、&lt;br /&gt;
$G=(V_{1}\cup V_{2}, \Sigma, R_{1}^{V}\cup R_{1}^{(S_{2})}\cup R_{2}, S_{1})$&lt;br /&gt;
は $L_{1}L_{2}$ を生成する右線形文法である。&lt;br /&gt;
&lt;br /&gt;
2. 形式言語 $L_{1}$, $L_{2}$ が正規言語であると仮定する。&lt;br /&gt;
&lt;br /&gt;
このとき $L_{1}$, $L_{2}$ を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$L_{1}$ を生成する右線形文法を $G=(V_{1}, \Sigma, R_{1}, S_{1})$、&lt;br /&gt;
$L_{2}$ を生成する右線形文法を $G=(V_{2}, \Sigma, R_{2}, S_{2})$ とする&lt;br /&gt;
（ただし、$V_{1}\cap V_{2}=\emptyset$ とする）。&lt;br /&gt;
&lt;br /&gt;
このとき、右線形文法&lt;br /&gt;
$G=(V_{1}\cup V_{2}\cup \mathsetextension{S}, \Sigma, R_{1}\cup R_{2}\cup \mathsetextension{S\mathgen S_{1}, S\mathgen S_{2}}, S)$&lt;br /&gt;
（ただし、$S\notin V_{1}\cup V_{2}$）は $L_{1}\cup L_{2}$ を生成する。&lt;br /&gt;
&lt;br /&gt;
3.&lt;br /&gt;
形式言語 $L$ が正規言語であると仮定する。&lt;br /&gt;
&lt;br /&gt;
このとき $L$ を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$L$ を生成する右線形文法を $G=(V, \Sigma, R, S)$ とする。&lt;br /&gt;
&lt;br /&gt;
さて、&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
R^{(V)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R}{\gamma \in \kleenecl{\Sigma}V} \\&lt;br /&gt;
R^{(0)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R}{\gamma \in \kleenecl{\Sigma}}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$R=R^{(V)}\cup R^{(0)}$, $R^{(V)}\cap R^{(0)}=\emptyset$ である。&lt;br /&gt;
&lt;br /&gt;
\[R^{(S)}:=\mathsetintension{A\mathgen \gamma S}{A\mathgen \gamma \in R, \gamma \in \kleenecl{\Sigma}}\]&lt;br /&gt;
とすると、右線形文法&lt;br /&gt;
$G=(V, \Sigma, R^{(V)}\cup R^{(S)}\cup \{S\mathgen \emptyword\}, S)$ は $\kleenecl{L}$ を生成する。&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
==  正規表現、有限オートマトンとの関係 ==&lt;br /&gt;
この節では正規言語、[[正規表現]]および[[有限オートマトン]]との関係を述べる。以下では[[正規表現]]と[[有限オートマトン]]の定義などは既知とする。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=theorem |label=thm-regularandNFA }}&lt;br /&gt;
言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $L=\interpret{\alpha}$ なる正規表現 $\alpha$ が存在する。&lt;br /&gt;
# $L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
この節ではこの定理を証明する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=lemma |label=lemma-of-thm-regularandNFA }}&lt;br /&gt;
正規言語 $G=(V, \Sigma, R, S)$ に対して、&lt;br /&gt;
$G$ と[[句構造言語#句構造文法の等価性 | 等価 ]]であって、&lt;br /&gt;
すべての生成規則の右辺が&lt;br /&gt;
$(\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
の元である右線形文法が存在する。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
正規言語 $G=(V, \Sigma, R, S)$ について、&lt;br /&gt;
$R=\{A_{0}\mathgen \alpha_{0}, \ldots, A_{n}\mathgen \alpha_{n}\}$ （ただし $n\in\mathnat$）&lt;br /&gt;
とする。&lt;br /&gt;
&lt;br /&gt;
$G_{i}=(V_{i}, \Sigma, R_{i}, S)$&lt;br /&gt;
（ただし $n=0, \ldots, n+1$）&lt;br /&gt;
を次のように定義する。&lt;br /&gt;
&lt;br /&gt;
* $G_{0}=G$&lt;br /&gt;
* $\alpha_{i}\in (\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
のとき、$G_{i+1}:=G_{i}$ とする。&lt;br /&gt;
* $\alpha_{i}\in \kleenecl{\Sigma} \setminus (\Sigma \cup\{\emptyword\})$ のとき、$\alpha_{i}=a_{0}\ldots a_{m}$ （ただし、$m$ は $1$ 以上の自然数であって、$a_{j}\in \Sigma$ for $j\in \mathnat$）とする。&lt;br /&gt;
** $V_{i+1}:=V_{i}\cup \{B_{0}, \ldots, B_{m}\}$ （ただし、各 $B_{j}$ は $B_{j}\notin V_{i}\cup \Sigma$ を満たす変数記号）。&lt;br /&gt;
** $R_{i+1}:=R_{i}\setminus \{A_{i}\mathgen \alpha_{i}\}\cup \{A_{i} \mathgen a_{0}B_{0}, B_{0} \mathgen a_{1}B_{1}, \ldots, B_{m-1} \mathgen a_{m}B_{m}, B_{m}\mathgen \emptyword\}$。&lt;br /&gt;
* $\alpha_{i}\in \kleenecl{\Sigma}V\setminus (\Sigma \cup\{\emptyword\})V$ のとき、$\alpha_{i}=a_{0}\ldots a_{m} A'_{i}$ （ただし、$m$ は $1$ 以上の自然数であって、$a_{j}\in \Sigma$ for $j\in \mathnat$）とする。&lt;br /&gt;
** $V_{i+1}:=V_{i}\cup \{B_{0}, \ldots, B_{m}\}$ （ただし、各 $B_{j}$ は $B_{j}\notin V_{i}\cup \Sigma$ を満たす変数記号）。&lt;br /&gt;
** $R_{i+1}:=R_{i}\setminus \{A_{i}\mathgen \alpha_{i}\}\cup \{A_{i} \mathgen a_{0}B_{0}, B_{0} \mathgen a_{1}B_{1}, \ldots, B_{m-1} \mathgen a_{m}B_{m}, B_{m}\mathgen A'_{i}\}$。&lt;br /&gt;
&lt;br /&gt;
各 $i$ に対して、 $L(G_{i})=L(G_{i+1})$ に注意すると&lt;br /&gt;
$G_{n+1}$ が求める文法であることがわかる。&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 | display=Proof of {{ref |type=theorem |label=thm-regularandNFA }}. }}&lt;br /&gt;
(2. $\Rightarrow$ 1.)&lt;br /&gt;
$L=\interpret{\alpha}$ なる正規表現 $\alpha$ が存在するとき、&lt;br /&gt;
$L$ を生成する右線形文法が存在する（つまり $L$ は正規言語である）ことを言えば良い。&lt;br /&gt;
&lt;br /&gt;
正規表現の構成についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
Case 1.&lt;br /&gt;
$L=\interpret{\emptyset}=\emptyset$ のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \emptyset, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 2.&lt;br /&gt;
$L=\interpret{\emptyword}=\{\emptyword\}$ のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \{S \mathgen \emptyword\}, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 3.&lt;br /&gt;
$L=\interpret{a}=\{a\}$ (ただし、$a\in \Sigma$) のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \{S \mathgen a\}, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 4.&lt;br /&gt;
$L=\interpret{\alpha\beta}=\interpret{\alpha}\cdot\interpret{\beta}$&lt;br /&gt;
（ただし、$\alpha$, $\beta$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$, $\interpret{\beta}$ は正規言語である。&lt;br /&gt;
{{ref |type=prop |label=prop-regular-exp }} の 1. より、&lt;br /&gt;
$\interpret{\alpha}\cdot\interpret{\beta}$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
Case 5.&lt;br /&gt;
$L=\interpret{\alpha +\beta}=\interpret{\alpha}\cup \interpret{\beta}$&lt;br /&gt;
（ただし、$\alpha$, $\beta$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$, $\interpret{\beta}$ は正規言語である。&lt;br /&gt;
{{ref |type=prop |label=prop-regular-exp }} の 2. より、&lt;br /&gt;
$\interpret{\alpha}\cup \interpret{\beta}$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
Case 6.&lt;br /&gt;
$L=\interpret{\kleenecl{\alpha}}=\kleenecl{\interpret{\alpha}}$&lt;br /&gt;
（ただし、$\alpha$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$ は正規言語である。&lt;br /&gt;
{{ref |type=prop |label=prop-regular-exp }} の 3. より、&lt;br /&gt;
$\kleenecl{\interpret{\alpha}}$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
以上、Case 1-6 より(2. $\Rightarrow$ 1.) は示された。&lt;br /&gt;
&lt;br /&gt;
(1. $\Rightarrow$ 3.)&lt;br /&gt;
$L$ が正規言語であるとき、{{ref |type=lemma |label=lemma-of-thm-regularandNFA }}から&lt;br /&gt;
すべての生成規則の右辺が&lt;br /&gt;
$(\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
の元である$L$ を生成する右線形文法が存在する。&lt;br /&gt;
この文法を $G=(V, \Sigma, R, S)$ とする。&lt;br /&gt;
&lt;br /&gt;
まず、有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \delta, q_{I}, F)$&lt;br /&gt;
を次のように定義する。&lt;br /&gt;
&lt;br /&gt;
* $Q=V \cup \{f\}$ （ただし、$f\notin V$）&lt;br /&gt;
* $q_{I}=S$&lt;br /&gt;
* $\Delta = \{(A, a, A') | A, A'\in V, a\in \Sigma\cup\{\emptyword\}, A \mathgen aA'\in R \} \cup \{ (A, a, f) | A\in V, a\in \Sigma\cup\{\emptyword\}, A \mathgen a\in R\} \}$&lt;br /&gt;
* $F=\{f\}$&lt;br /&gt;
&lt;br /&gt;
次に、$wA\in \kleenecl{\Sigma}V$&lt;br /&gt;
に対して以下の２条件は同値であることを示す。&lt;br /&gt;
&lt;br /&gt;
(a) $S$ から始まる&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G}\cdots \Rightarrow_{G} \alpha_{n}(=wA)\]&lt;br /&gt;
(ただし、$\alpha_{i}=w_{i}A_{i}$ for $1\leq i\leq n$)&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
&lt;br /&gt;
(b) 記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ A_{0}, A_{1}, \ldots, A_{n}\]&lt;br /&gt;
（ただし、$A_{0}=S$, $A_{n}=A$）が存在する。&lt;br /&gt;
&lt;br /&gt;
(a) $\Rightarrow$ (b) を $n$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$n=1$ のとき、&lt;br /&gt;
$w=a$ なる $a\in\Sigma\cup\{\emptyword\}$が存在し、&lt;br /&gt;
$S\mathgen aA \in R$ であるはずである。&lt;br /&gt;
このとき、$\mathautomaton{A}$ の定義から&lt;br /&gt;
$(S, a, A)\in \Delta$である。&lt;br /&gt;
ゆえに、記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A \]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n&amp;gt;1$ のとき、&lt;br /&gt;
$w=w'a$ （ただし、$a\in \Sigma\cup\{\emptyword\}$）とおく。&lt;br /&gt;
このとき、$G$ の生成規則の形から&lt;br /&gt;
$w_{n-1}=w'$, &lt;br /&gt;
$A_{n-1}\mathgen aA \in R$&lt;br /&gt;
である。&lt;br /&gt;
このとき、帰納法の仮定から&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n-1}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[S, A_{1}, \ldots, A_{n-1} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
$A_{n-1}\mathgen aA \in R$&lt;br /&gt;
であるから、&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$であることに注意すると&lt;br /&gt;
記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{1}, \ldots, A_{n-1}, A \]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
(b) $\Rightarrow$ (a) を $n$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$n=1$ のとき、&lt;br /&gt;
$w=a$ なる $a\in\Sigma\cup\{\emptyword\}$が存在し、&lt;br /&gt;
$(S, a, A)\in \Delta$ のはずである。&lt;br /&gt;
このとき、$\mathautomaton{A}$ の定義から&lt;br /&gt;
$S\mathgen aA \in R$ である。ゆえに&lt;br /&gt;
\[ S \Rightarrow_{G} aA \]&lt;br /&gt;
である。&lt;br /&gt;
&lt;br /&gt;
$n&amp;gt;1$ のとき、&lt;br /&gt;
記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[A_{0}, A_{1}, \ldots, A_{n-1}A_{n} \]&lt;br /&gt;
（ただし、$A_{0}=S$, $A_{n}=A$）が存在すると仮定する。&lt;br /&gt;
すると、&lt;br /&gt;
$w=w'a$,&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$&lt;br /&gt;
を満たす&lt;br /&gt;
$a\in\Sigma\cup\{\emptyword\}$, $w'\in\kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
すると、記号列 $w'$ による $S$ から $A_{n-1}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[A_{0}, A_{1}, \ldots, A_{n-1} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
帰納法の仮定から&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n-1}(=w'A_{n-1})\]&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$ であるから、&lt;br /&gt;
$A_{n-1} \mathgen  aA\in R$ であるので、&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G} \cdots \Rightarrow_{G} w'A_{n-1} \Rightarrow_{G} w'aA(=wA) \]&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
 &lt;br /&gt;
最後に $L=L(\mathautomaton{A})$ を示す。&lt;br /&gt;
&lt;br /&gt;
$w\in L$ を仮定する。&lt;br /&gt;
すると、導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} \Rightarrow_{G} w\]&lt;br /&gt;
が存在する。&lt;br /&gt;
$G$ の生成規則の形から&lt;br /&gt;
$w=w'a$, $\alpha_{n}=w'A_{n}$, $A_{n}\mathgen a \in R$&lt;br /&gt;
を満たす $A_{n}\in V$, $a\in \Sigma\cup\{\emptyword\}$, &lt;br /&gt;
$w'\in \kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
このとき、&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n}$ への $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, A_{1}, \ldots, A_{n} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
$A_{n}\mathgen a \in R$&lt;br /&gt;
であるから、&lt;br /&gt;
$(A_{n}, a, f)\in \Delta$&lt;br /&gt;
に注意すると、&lt;br /&gt;
記号列 $w'a=w$ による $S$ から $f$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, \ldots, A_{n}, f \]&lt;br /&gt;
が存在する。&lt;br /&gt;
ゆえに $w\in L(\mathautomaton{A})$ である。&lt;br /&gt;
&lt;br /&gt;
逆に、$w\in L(\mathautomaton{A})$ とする。&lt;br /&gt;
すると、&lt;br /&gt;
記号列 $w$ による $S$ から $f$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, A_{1}, \ldots, A_{n}, f\]&lt;br /&gt;
が存在する。&lt;br /&gt;
すると、&lt;br /&gt;
$w=w'a$, $(A_{n}, a, f) \in \Delta$&lt;br /&gt;
を満たす $a\in \Sigma\cup\{\emptyword\}$, &lt;br /&gt;
$w'\in \kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
また、&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, \ldots, A_{n} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
よって、導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} (=w'A_{n})\]&lt;br /&gt;
が存在する。&lt;br /&gt;
$(A_{n}, a, f) \in \Delta$ から&lt;br /&gt;
$A_{n}\mathgen a$ であるので、&lt;br /&gt;
$w$ の導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} \Rightarrow_{G} w (=w'a)\]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
以上より(1. $\Rightarrow$ 3.)は示された。&lt;br /&gt;
&lt;br /&gt;
(3. $\Rightarrow$ 2.)&lt;br /&gt;
$L$ を受理する有限オートマトンを&lt;br /&gt;
$\mathautomaton{A}=(\{q_{1}, q_{2}, \ldots, q_{n}\}, \Sigma, \Delta, q_{1}, \{q_{F_{0}}, q_{F_{1}}, \ldots, q_{F_{m}}\})$ とおく。&lt;br /&gt;
&lt;br /&gt;
簡単のため、以下&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\sum_{\alpha \in A} \alpha &amp;amp;= (\alpha_{0}+ \cdots + \alpha_{k}) \quad \text{（ただし、A は正規表現の空でない有限集合であって、A=\{a_{0}, \ldots, a_{k}\}）}, \\&lt;br /&gt;
Q_{ij}&amp;amp;=\{a\in \Sigma\cup\{\emptyword\} | (q_{i}, a, q_{j})\in \Delta\}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
という略記を用いる。&lt;br /&gt;
&lt;br /&gt;
正規表現 $\alpha^{(l)}_{ij}$ （ただし、$1\leq i, j \leq n$, $0\leq l \leq n$）を次のように帰納的に定める。&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\alpha^{(0)}_{ij}&amp;amp;=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
\emptyset, &amp;amp; \text{if Q_{ij}=\emptyset}, \\&lt;br /&gt;
\sum_{a\in Q_{ij}}a, &amp;amp; \text{if Q_{ij}\neq \emptyset, i\neq j}; \\&lt;br /&gt;
\kleenecl{\left(\sum_{a\in Q_{ij}}a\right)}, &amp;amp; \text{if Q_{ij}\neq \emptyset, i=j}; &lt;br /&gt;
\end{cases}\\&lt;br /&gt;
\alpha^{(l)}_{ij}&amp;amp;=\alpha^{(l-1)}_{ij} + \alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}, \quad \text{（ただし、1\leq l）}.&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
$w\in \interpret{\alpha^{(l)}_{ij}}$ であるとき、&lt;br /&gt;
記号列 $w$ による $q_{i}$ から $q_{j}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{0}}, q_{k_{1}}, \ldots, q_{k_{p}} \]&lt;br /&gt;
（ただし、$k_{0}=i$, $k_{p}=j$, $1\leq q\leq p-1$ のとき $1\leq k_{q} \leq l$）が存在することを $l$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$l=0$ については明らか。&lt;br /&gt;
&lt;br /&gt;
$l&amp;gt;0$ のとき、$w\in \interpret{\alpha^{(l)}_{ij}}$ であるとすると、&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{ij}}$ または&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}}$ である。&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{ij}}$ のときは帰納法の仮定より明らか。&lt;br /&gt;
&lt;br /&gt;
$w\in \interpret{ \alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}}$ とする。すると&lt;br /&gt;
$w_{1}\in \interpret{\alpha^{(l-1)}_{il}}$,&lt;br /&gt;
$w_{2}\in \interpret{\alpha^{(l-1)}_{ll}}$,&lt;br /&gt;
$w_{3}\in \interpret{\alpha^{(l-1)}_{lj}}$,&lt;br /&gt;
$w=w_{1}(w_{2})^{s}w_{3}$ （ただし、$s\in \mathnat$） を満たす記号列 $w_{1}$, $w_{2}$, $w_{3}$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から、&lt;br /&gt;
記号列 $w_{t}$ （$t=1, 2, 3$）による$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{t0}}, q_{k_{t1}}, \ldots, q_{k_{tp}} \]&lt;br /&gt;
（ただし、$k_{10}=i$, $k_{1p}=k_{20}=k_{2p}=k_{30}=l$, $k_{3p}=j$, $1\leq q\leq p-1$ のとき $1\leq k_{q} \leq l-1$）が存在する。&lt;br /&gt;
すると、&lt;br /&gt;
記号列 $w$ による $q_{i}$ から $q_{j}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{10}}, q_{k_{11}}, \ldots, q_{k_{1p}}, \overbrace{q_{k_{21}}, \ldots, q_{k_{2p}}}^{s}, q_{k_{31}}, \ldots, q_{k_{3p}} \]&lt;br /&gt;
が存在することがわかる。&lt;br /&gt;
&lt;br /&gt;
以上のことに注意すると、&lt;br /&gt;
\[ \alpha^{(n)}_{1F_{0}}+\alpha^{(n)}_{1F_{1}}+ \cdots + \alpha^{(n)}_{1F_{m}}\]&lt;br /&gt;
は $\mathautomaton{A}$ が受理する記号列全体である。&lt;br /&gt;
 &lt;br /&gt;
以上より(3. $\Rightarrow$ 2.)は示された。&lt;br /&gt;
{{end  |proof }}&lt;br /&gt;
&lt;br /&gt;
== Myhill-Nerodeの定理  ==&lt;br /&gt;
この節ではMyhill-Nerodeの定理について述べる。&lt;br /&gt;
この定理は正規言語の[[形式言語#def-quotient |左商]]による定式化とみなせる。&lt;br /&gt;
&lt;br /&gt;
{{theorem | type=theorem | name=Myhill-Nerodeの定理 | label=thm-Myhill-Nerode }}&lt;br /&gt;
$\Sigma$ 上の形式言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $\inverse{\kleenecl{\Sigma}}L$ は有限集合。&lt;br /&gt;
&lt;br /&gt;
{{begin  |proof | collapsible=1 }}&lt;br /&gt;
(1. $\Rightarrow$ 2.)&lt;br /&gt;
形式言語 $L$ は正規言語であると仮定する。&lt;br /&gt;
&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }} より、$L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
よって、[[有限オートマトン#prop-finite_automaton_non_emptyword | $L$ を受理する決定性有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が存在する]]。&lt;br /&gt;
&lt;br /&gt;
$\mathautomaton{A}$ は決定性有限オートマトンなので、任意の記号列 $w\in \kleenecl{\Sigma}$ に対して、次のいずれかが成り立つことに注意する。&lt;br /&gt;
# 記号列 $w\in \kleenecl{\Sigma}$ による $q_{I}$ から始まる $\mathautomaton{A}$ の状態遷移は存在しない。&lt;br /&gt;
# 記号列 $w\in \kleenecl{\Sigma}$ による $q_{I}$ から $q_{w} への$ $\mathautomaton{A}$ の状態遷移が存在し、$q_{w}$ は一意。&lt;br /&gt;
&lt;br /&gt;
前者のとき、$\inverse{w}L$ は空集合である。&lt;br /&gt;
後者のとき、決定性有限オートマトン $\mathautomaton{A}_{w}=(Q, \Sigma, \Delta, q_{w}, F)$ は $\inverse{w}L$ を受理する。&lt;br /&gt;
&lt;br /&gt;
$Q$ は有限集合であり、$q_{w} = q_{w'}$ ならば $\mathautomaton{A}_{w} = \mathautomaton{A}_{w'}$ に注意すると、&lt;br /&gt;
$\inverse{\kleenecl{\Sigma}}L$ の濃度は高々 $\mathcountfunc{Q} + 1$ である&lt;br /&gt;
（ただし、$\#$ は有限集合を受け取りそこに所属する元の個数を返す関数）。&lt;br /&gt;
&lt;br /&gt;
(2. $\Rightarrow$ 1.)&lt;br /&gt;
$\Sigma$ 上の形式言語 $L$ について $\inverse{\kleenecl{\Sigma}}L$ は有限集合と仮定する。&lt;br /&gt;
&lt;br /&gt;
集合 $\Delta_{L}$ と $F_{L}$ を次のように定義する。&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\Delta_{L} &amp;amp;:= \mathsetintension{(\inverse{w}L, a, \inverse{(wa)}L)}{w\in\kleenecl{\Sigma}} \\&lt;br /&gt;
F_{L} &amp;amp;:= \mathsetintension{L'\in \inverse{\kleenecl{\Sigma}}L}{\emptyword\in L'}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
$\inverse{\kleenecl{\Sigma}}L$ は有限集合であることから、&lt;br /&gt;
$\mathautomaton{A}_{L}=(\inverse{\kleenecl{\Sigma}}L, \Sigma, \Delta_{L}, L, F_{L})$&lt;br /&gt;
は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
$\mathautomaton{A}_{L}$ が受理する言語が $L$ であることを示す。&lt;br /&gt;
&lt;br /&gt;
$w\in L$ を仮定してする。$w$ が $\mathautomaton{A}_{L}$ に受理されることを示す。&lt;br /&gt;
&lt;br /&gt;
このとき、記号列 $w$ による $L$ から $\inverse{w}L$ への $\mathautomaton{A}_{L}$ の状態遷移が存在する。&lt;br /&gt;
$w\in L$ であるから、$\emptyword\in \inverse{w}L$。よって $\inverse{w}L\in F_{L}$。&lt;br /&gt;
ゆえに $w$ は $\mathautomaton{A}_{L}$ に受理される。&lt;br /&gt;
&lt;br /&gt;
$w$ が $\mathautomaton{A}_{L}$ に受理されることを仮定する。$w\in L$ を示す。&lt;br /&gt;
&lt;br /&gt;
$w$ が $\mathautomaton{A}_{L}$ に受理されることから&lt;br /&gt;
記号列 $w$ による $L$ から $\inverse{w}L$ への $\mathautomaton{A}_{L}$ の状態遷移が存在し、&lt;br /&gt;
$\inverse{w}L\in F_{L}$ である。よって $\emptyword\in \inverse{w}L$。これは $w\in L$ を意味する。&lt;br /&gt;
&lt;br /&gt;
以上より $\mathautomaton{A}_{L}$ が受理する言語は $L$ である。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
== 正規言語のクラスの閉包性 その２ ==&lt;br /&gt;
この節では正規言語のクラスが補集合演算、共通部分演算、鏡像、左商、右商によって閉じていることを述べる。&lt;br /&gt;
&amp;lt;!-- 代入についてもそのうち書く --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=prop-regular-exp }}&lt;br /&gt;
# $\kleenecl{\Sigma}$ 上の形式言語 $L$ が正規言語であるならば $\kleenecl{\Sigma}\setminus L$ も正規言語である。&lt;br /&gt;
# 形式言語 $L_{1}$, $L_{2}$ が正規言語であるならば $L_{1}\cap L_{2}$ も正規言語である。&lt;br /&gt;
# 形式言語 $L$ が正規言語であるならば $\mirrorim{L}=\mathsetintension{\mirrorim{w}}{w\in L}$ も正規言語である。&lt;br /&gt;
# $\kleenecl{\Sigma}$ 上の形式言語 $L$ が正規言語であるならば $w\in\kleenecl{\Sigma}$ による左商 $\inverse{w}L$ および右商 $L\inverse{w}$ はいずれも正規言語である。&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
1. 形式言語 $L$ は正規言語であると仮定する。&lt;br /&gt;
&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }} より、$L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
よって、[[有限オートマトン#prop-finite_automaton_non_emptyword | $L$ を受理する決定性有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が存在する]]。&lt;br /&gt;
&lt;br /&gt;
$q_{\infty}\notin Q$ とする。また、&lt;br /&gt;
\[&lt;br /&gt;
\Delta_{\infty}=\mathsetintension{(q,a,q_{\infty})}{\text{任意の$q'$に対して}(q,a,q')\notin \Delta} \cup \mathsetintension{(q_{\infty}, a, q_{\infty})}{a\in\Sigma}&lt;br /&gt;
\]&lt;br /&gt;
とする。&lt;br /&gt;
&lt;br /&gt;
すると決定性有限オートマトン $\mathautomaton{A}_{\infty}=(Q\cup\mathsetextension{q_{\infty}}, \Sigma, \Delta\cup\Delta_{\infty}, q_{I}, F)$ は $L$ を受理し、&lt;br /&gt;
任意の記号列にたいして、状態遷移を持つ。&lt;br /&gt;
このとき、$\mathautomaton{A}'=(Q\cup\mathsetextension{q_{\infty}}, \Sigma, \Delta\cup\Delta_{\infty}, q_{I}, {Q\cup\mathsetextension{q_{\infty}}\setminus F})$ は $\kleenecl{\Sigma}\setminus L$&lt;br /&gt;
を受理する決定性有限オートマトンである。よって、$\kleenecl{\Sigma}\setminus L$ は正規言語。&lt;br /&gt;
&lt;br /&gt;
2. $L_{1}$, $L_{2}$ を正規言語とする。&lt;br /&gt;
このとき、 $\kleenecl{\Sigma}\setminus L_{1}$, $\kleenecl{\Sigma}\setminus L_{2}$ もまた正規言語である。&lt;br /&gt;
{{ref |type=prop |label=prop-regular-exp }} の 2. より $L_{1}\cap L_{2} = \left(\kleenecl{\Sigma}\setminus L_{1}\right)\cup\left(\kleenecl{\Sigma}\setminus L_{2}\right)$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
3. $L$ を正規言語とする。{{ref |type=theorem |label=thm-regularandNFA }} より、&lt;br /&gt;
$L$ を受理する有限オートマトン &lt;br /&gt;
$\mathautomaton{A}=\left(Q, \Sigma, \Delta, q_{0}, F\right)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
このとき、集合 $\mirrorim{\Delta}$ を次のように定義する。&lt;br /&gt;
\[\mirrorim{\Delta} = \mathsetintension{ \left(q_{1}, a, q_{0} \right) }{\left(q_{0}, a, q_{1} \right) \in \Delta} \]&lt;br /&gt;
&lt;br /&gt;
$q\in F$ について、&lt;br /&gt;
$\mathautomaton{A}_{q}=\left(Q, \Sigma, \mirrorim{\Delta}, q, \mathsetextension{q_{0}}\right)$ &lt;br /&gt;
とおく。このとき、$L\left(\mathautomaton{A}_{q}\right)$ は正規言語である。また、&lt;br /&gt;
&lt;br /&gt;
\[\mirrorim{L} = \bigcup_{q\in F} L\left(\mathautomaton{A}_{q}\right)\]&lt;br /&gt;
&lt;br /&gt;
である。{{ref |type=prop |label=prop-regular-exp }} の 2. より $\mirrorim{L}$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
4.&lt;br /&gt;
形式言語 $L$ は正規言語であると仮定する。&lt;br /&gt;
&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }} より、$L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
よって、[[有限オートマトン#prop-finite_automaton_non_emptyword | $L$ を受理する決定性有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が存在する]]。&lt;br /&gt;
&lt;br /&gt;
$\mathautomaton{A}$ は決定性有限オートマトンなので、任意の記号列 $w\in \kleenecl{\Sigma}$ に対して、次のいずれかが成り立つことに注意する。&lt;br /&gt;
# 記号列 $w\in \kleenecl{\Sigma}$ による $q_{I}$ から始まる $\mathautomaton{A}$ の状態遷移は存在しない。&lt;br /&gt;
# 記号列 $w\in \kleenecl{\Sigma}$ による $q_{I}$ から $q_{w} への$ $\mathautomaton{A}$ の状態遷移が存在し、$q_{w}$ は一意。&lt;br /&gt;
&lt;br /&gt;
前者のとき、$\inverse{w}L$ は空集合である。このとき、$\inverse{w}L$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
後者のとき、決定性有限オートマトン $\mathautomaton{A}_{w}=(Q, \Sigma, \Delta, q_{w}, F)$ は $\inverse{w}L$ を受理する。&lt;br /&gt;
よって、$\inverse{w}L$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
さて、&lt;br /&gt;
\[L\inverse{w}=\mirrorim{\mirrorim{L\inverse{w}}}=\mirrorim{\mirrorim{\inverse{w}}\mirrorim{L}}\]&lt;br /&gt;
であるから、$L\inverse{w}$ も正規言語である。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
==  正規言語と左線形文法 ==&lt;br /&gt;
この節では正規言語と左線形文法との関係を述べる。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=definition |name=左線形文法 |label=def-left_linear_grammar }}&lt;br /&gt;
'''左線形文法（left linear grammar）'''とは&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# $\Sigma$ と互いに素な'''変数記号（variable）'''の有限集合 $V$&lt;br /&gt;
# '''生成規則（production rule）'''と呼ばれる有限集合 $R \subseteq V \times V\kleenecl{(\Sigma)}\cup \kleenecl{(\Sigma)}$&lt;br /&gt;
# '''開始記号(start symbol)'''または'''初期記号'''と呼ばれる $S\in V$&lt;br /&gt;
&lt;br /&gt;
の４つ組$(V, \Sigma, R, S)$である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
これは、[[句構造言語#def-phrase_structure_grammar | 句構造文法]]の一種である。また、[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]の一種である。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=thm-left_linear_grammar }}&lt;br /&gt;
言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $L$ を生成する左線形文法が存在する。&lt;br /&gt;
&lt;br /&gt;
==  正規言語ではない形式言語の例  ==&lt;br /&gt;
この節では正規言語ではない[[形式言語]]の例を紹介する。&lt;br /&gt;
&lt;br /&gt;
そのような例が存在すること自体は右線形文法が[[集合の濃度#具体的な濃度 | 高々可算個]]しかないことと[[形式言語]]の濃度が[[集合の濃度#具体的な濃度 | 非加算]]であることに注意すると、明らかである。&lt;br /&gt;
しかし、その具体例を構成し、正規言語ではないことを示すことはそれほど簡単ではない。このとき強力な武器となるのが[[有限オートマトン#pumping_lemma | 反復補題]]である。&lt;br /&gt;
&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]] については当該項目を参照せよ。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0^{n}1^{n}$ という形をした記号列全体 |label=ex-counter_example_reg_lang_n }}&lt;br /&gt;
$0^{n}1^{n}$ （ただし、$n\in\mathnat$）という形の記号列全体は正規言語ではない。しかしながら[[文脈自由言語]]ではある。この記号列全体を生成する[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]は[[文脈自由言語#ex-counter_example_reg_lang_n | この例]]を参照せよ。&lt;br /&gt;
&lt;br /&gt;
'''$0^{n}1^{n}$ という形の記号列全体が正規言語ではないことの証明'''&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
背理法により示す。&lt;br /&gt;
&lt;br /&gt;
$0^{n}1^{n}$ という形の記号列全体 $L$ が正規言語であると仮定する。&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }}より、$L=L(\mathautomaton{A})$ を満たす&lt;br /&gt;
有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n_{0}=|Q|$ とする。仮定より&lt;br /&gt;
$\mathautomaton{A}$ は $w=0^{n_{0}}1^{n_{0}}$ を受理する。&lt;br /&gt;
すると$\left|w\right|&amp;gt;n_{0}$ であるから&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]] より&lt;br /&gt;
次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w=xyz$。&lt;br /&gt;
# $\left|y\right|&amp;gt;0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は&lt;br /&gt;
$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n_{0}$。&lt;br /&gt;
&lt;br /&gt;
このとき、 $xy=0^{k}$ （ただし、$0\lt k\leq n_{0}$）&lt;br /&gt;
であることに注意する。&lt;br /&gt;
すると、 $x=0^{k_{0}}$, $y=0^{k_{1}}$&lt;br /&gt;
（ただし、$0\leq k_{0}\leq k$, $0\lt k_{1}\leq k$,&lt;br /&gt;
$k=k_{0}+k_{1}$）&lt;br /&gt;
を満たす自然数 $k_{0}$, $k_{1}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
さて、$\mathautomaton{A}$ は&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]]の条件から、&lt;br /&gt;
記号列 $xz$ を受理するはずである。&lt;br /&gt;
しかし、$xz=0^{n_{0}-k_{1}}b^{n_{0}}$, $n_{0}-k_{1}\lt n_{0}$&lt;br /&gt;
であるから $xz\notin L$ である。&lt;br /&gt;
これは $L=L(\mathautomaton{A})$ に矛盾する。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$w\mirrorim{w}$ という形をした記号列全体 |label=ex-counter_example_reg_lang_mirror }}&lt;br /&gt;
$w\mirrorim{w}$（ただし、$n\in\mathnat$）という形の記号列全体は正規言語ではない。しかしながら[[文脈自由言語]]ではある。この記号列全体を生成する[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]は[[文脈自由言語#ex-counter_example_reg_lang_mirror | この例]]を参照せよ。&lt;br /&gt;
'''$w\mirrorim{w}$ という形の記号列全体が正規言語ではないことの証明'''&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
背理法により示す。&lt;br /&gt;
&lt;br /&gt;
$w\mirrorim{w}$ という形の記号列全体 $L$ が正規言語であると仮定する。&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }}より、&lt;br /&gt;
$L=L(\mathautomaton{A})$ を満たす&lt;br /&gt;
有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n_{0}=|Q|$ とする。以下 $w_{0}=0^{n_{0}}1$ とする。&lt;br /&gt;
仮定より $\mathautomaton{A}$ は $w_{0}\mirrorim{w_{0}}$ を受理する。&lt;br /&gt;
すると $\left|w_{0}\mirrorim{w_{0}}\right|&amp;gt;n_{0}$ であるから&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題 ]] より&lt;br /&gt;
次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w_{0}\mirrorim{w_{0}}=xyz$。&lt;br /&gt;
# $\left|y\right|&amp;gt;0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は&lt;br /&gt;
$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n_{0}$。&lt;br /&gt;
&lt;br /&gt;
このとき、 $xy=0^{k}$ （ただし、$0\lt k\leq n_{0}$）&lt;br /&gt;
であることに注意する。&lt;br /&gt;
すると、 $x=0^{k_{0}}$, $y=0^{k_{1}}$&lt;br /&gt;
（ただし、$0\leq k_{0}\leq k$, $0\lt k_{1}\leq k$,&lt;br /&gt;
$k=k_{0}+k_{1}$）&lt;br /&gt;
を満たす自然数 $k_{0}$, $k_{1}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
さて、$\mathautomaton{A}$ は&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題 ]] の条件から、&lt;br /&gt;
記号列 $xz$ を受理するはずである。&lt;br /&gt;
しかし、$xz=0^{n_{0}-k_{1}}1\mirrorim{w_{0}}=0^{n_{0}-k_{1}}110^{n_{0}}$, $n_{0}-k_{1}\lt n_{0}$&lt;br /&gt;
であるから $xz\notin L$ である。&lt;br /&gt;
これは $L=L(\mathautomaton{A})$ に矛盾する。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
==  参考文献 ==&lt;br /&gt;
# 新屋 良磨、オートマトン理論再考、コンピュータ ソフトウェア、2017、34 巻、3 号、p. 3_3-3_35、公開日 2017/09/25、Print ISSN 0289-6540、https://doi.org/10.11309/jssst.34.3_3、https://www.jstage.jst.go.jp/article/jssst/34/3/34_3_3/_article/-char/ja&lt;br /&gt;
# 五十嵐喜英他、『[[数理情報科学シリーズ ２４ オートマトンと形式言語の基礎]]』、牧野書店、2011&lt;br /&gt;
&lt;br /&gt;
== 関連項目 ==&lt;br /&gt;
* [[形式言語]]&lt;br /&gt;
* [[正規表現]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
|+ Chomsky階層&lt;br /&gt;
! 文法のタイプ&lt;br /&gt;
! 言語のクラス&lt;br /&gt;
! 計算モデル&lt;br /&gt;
|-&lt;br /&gt;
! タイプ0&lt;br /&gt;
| [[句構造言語]]&lt;br /&gt;
| [[Turingマシン]]&lt;br /&gt;
|-&lt;br /&gt;
! タイプ1&lt;br /&gt;
| [[文脈依存言語]]&lt;br /&gt;
| [[線形有界オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ2&lt;br /&gt;
| [[文脈自由言語]]&lt;br /&gt;
| [[プッシュダウン・オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ3&lt;br /&gt;
| [[正規言語]]&lt;br /&gt;
| [[有限オートマトン]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E6%AD%A3%E8%A6%8F%E8%A8%80%E8%AA%9E&amp;diff=8944</id>
		<title>正規言語</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E6%AD%A3%E8%A6%8F%E8%A8%80%E8%AA%9E&amp;diff=8944"/>
		<updated>2021-10-29T16:06:25Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: Fix a typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{TOC |align=right |noautonum=1 }}&amp;lt;!-- 右寄せ連番無し目次をここに表示 --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Category:形式言語理論|セイキゲンゴ]]&lt;br /&gt;
{{begin |preamble}}&lt;br /&gt;
&amp;lt;!-- 参考文献 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 定理環境 --&amp;gt;&lt;br /&gt;
{{newtheorem |type=theorem |display=定理}}&lt;br /&gt;
{{newtheorem |type=lemma |display=補題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=definition |display=定義 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=prop |display=命題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=example |display=例 |family=theorem }}&lt;br /&gt;
&amp;lt;!-- MathJax commands --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\newcommand{\mathsetextension}[1]{%&lt;br /&gt;
\left\{ #1 \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathsetintension}[2]{%&lt;br /&gt;
\left\{ #1 \left| #2 \right.\right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathof}[2]{%&lt;br /&gt;
\mathop{#1}\left(#2\right)%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathderiv}{\mathrel{\mathop{\Rightarrow}^{*}}}&lt;br /&gt;
\newcommand{\mathgen}{\rightsquigarrow}&lt;br /&gt;
\newcommand{\mathgenfun}[1]{\mathbf{#1}}&lt;br /&gt;
\newcommand{\mirrorim}[1]{\overleftarrow{#1}}&lt;br /&gt;
\newcommand{\emptyword}{\varepsilon}&lt;br /&gt;
\newcommand{\kleenecl}[1]{{#1}^{*}}&lt;br /&gt;
\newcommand{\inverse}[1]{{#1}^{-1}}&lt;br /&gt;
\newcommand{\interpret}[1]{[\![#1]\!]}&lt;br /&gt;
\newcommand{\mathautomaton}[1]{\mathcal{#1}}&lt;br /&gt;
\newcommand{\mathnat}{\mathbb{N}}&lt;br /&gt;
\newcommand{\mathcountfunc}{\mathop{\#}}&lt;br /&gt;
&lt;br /&gt;
\newcommand{\qed}{\blacksquare}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
{{end |preamble}}&lt;br /&gt;
'''正規言語（regular language）'''とは右線形文法(right linear grammar)または左線形文法(left linear grammar)によって定められる形式言語である。&lt;br /&gt;
&lt;br /&gt;
右線形文法は句構造文法の一種であるから、&lt;br /&gt;
右線形言語は[[句構造言語]]の一種である。&lt;br /&gt;
&lt;br /&gt;
また、右線形文法は文脈自由文法の一種であるから、&lt;br /&gt;
右線形言語は[[文脈自由言語]]の一種である。&lt;br /&gt;
&lt;br /&gt;
以下、項目[[形式言語]]、[[句構造言語]]において定められている言語上の演算や文法の等価性の定義などについては特に断らず用いる。&lt;br /&gt;
&lt;br /&gt;
==  正規言語の導入 ==&lt;br /&gt;
この節では'''正規言語'''を定義する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=definition |name=右線形文法 |label=def-right_linear_grammar }}&lt;br /&gt;
'''右線形文法（right linear grammar）'''とは&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# $\Sigma$ と互いに素な'''変数記号（variable）'''の空でない有限集合 $V$&lt;br /&gt;
# '''生成規則（production rule）'''と呼ばれる有限集合 $R \subseteq V \times (\kleenecl{\Sigma}V)\cup (\kleenecl{\Sigma})$&lt;br /&gt;
# '''開始記号(start symbol)'''または'''初期記号'''と呼ばれる $S\in V$&lt;br /&gt;
&lt;br /&gt;
の４つ組$(V, \Sigma, R, S)$である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
これは、[[句構造言語#def-phrase_structure_grammar | 句構造文法]]の一種である。また、[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]の一種である。&lt;br /&gt;
&lt;br /&gt;
[[句構造言語]]のときと同様、$\Sigma$ の元を'''終端記号(terminal)'''、$V$ の元を'''非終端記号(non-terminal)'''と呼ぶことも多い。&lt;br /&gt;
&lt;br /&gt;
以下では、元$(A, \alpha)\in R$ のことを$A\mathgen\alpha$と書く。&lt;br /&gt;
&lt;br /&gt;
[[句構造言語#def-derivation | 導出]]、[[句構造言語#def-phrase_structure_lang | 生成される言語]]などは&lt;br /&gt;
句構造言語と同様に定義される。&lt;br /&gt;
&lt;br /&gt;
'''正規言語'''とは何らかの右線形文法によって生成される言語のことを言う。&lt;br /&gt;
&lt;br /&gt;
==  正規言語の例 ==&lt;br /&gt;
この節では正規言語の例を紹介する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列全体 |label=ex-all_lang }}&lt;br /&gt;
$V=\left\{ S \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen\emptyword, S\mathgen 0S, S\mathgen 1S \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
$0$ と $1$ からなる有限記号列全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、$0$ と $1$ からなる有限記号列全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる。&lt;br /&gt;
&lt;br /&gt;
\begin{gather*}&lt;br /&gt;
S \Rightarrow \emptyword \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 0\emptyword = 0 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 1\emptyword = 1 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 00\emptyword = 00 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 01\emptyword = 01 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 10\emptyword = 10 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 11\emptyword = 11 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 000S \Rightarrow 000\emptyword = 000 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 001S \Rightarrow 001\emptyword = 001 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 010S \Rightarrow 010\emptyword = 010 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 011S \Rightarrow 011\emptyword = 011 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 100S \Rightarrow 100\emptyword = 100 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 101S \Rightarrow 101\emptyword = 101 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 110S \Rightarrow 110\emptyword = 110 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 111S \Rightarrow 111\emptyword = 111&lt;br /&gt;
\end{gather*}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体 |label=ex-only_three_one_lang }}&lt;br /&gt;
$V=\left\{ S, A_{1}, A_{2}, A_{3} \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen 0S, S\mathgen 1A_{1}, A_{1}\mathgen 0A_{1}, A_{1}\mathgen 1A_{2}, A_{2}\mathgen 0A_{2}, A_{2}\mathgen 1A_{3}, A_{3}\mathgen 0A_{3}, A_{3}\mathgen \emptyword \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
S &amp;amp;\Rightarrow 1A_{1} \Rightarrow 11A_{2} \Rightarrow 111A_{3} \Rightarrow 111\emptyword = 111 \\&lt;br /&gt;
S &amp;amp;\Rightarrow 0S \\&lt;br /&gt;
&amp;amp;\Rightarrow 01A_{1} \Rightarrow 010A_{1} \Rightarrow 0100A_{1} \\&lt;br /&gt;
&amp;amp;\Rightarrow 01001A_{2} \Rightarrow 010010A_{2} \Rightarrow 0100100A_{2} \Rightarrow 01001000A_{2} \\&lt;br /&gt;
&amp;amp;\Rightarrow 010010001A_{3} \Rightarrow 0100100010A_{3} \Rightarrow 01001000100A_{3} \Rightarrow 010010001000A_{3} \Rightarrow 0100100010000A_{3} \Rightarrow 0100100010000\emptyword =0100100010000&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=自然数の二進表現全体 |label=ex-bi_lang }}&lt;br /&gt;
$V=\left\{ S, A_{1} \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen 0, S\mathgen 1A_{1}, A_{1}\mathgen 0A_{1}, A_{1}\mathgen 1A_{1}, A_{1}\mathgen \emptyword \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
自然数の二進表現全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、自然数の二進表現全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる&lt;br /&gt;
&lt;br /&gt;
\begin{gather*}&lt;br /&gt;
S \Rightarrow 0 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 1\emptyword = 1 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 10\emptyword = 10 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 11\emptyword = 11 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 100\emptyword = 100 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 101\emptyword = 101 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 100\emptyword = 110 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 111\emptyword = 111 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 1000A_{1} \Rightarrow 1000\emptyword = 1000 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 1001A_{1} \Rightarrow 1001\emptyword = 1001 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 1010A_{1} \Rightarrow 1010\emptyword = 1010 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 1011A_{1} \Rightarrow 1011\emptyword = 1011 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 1100A_{1} \Rightarrow 1100\emptyword = 1100 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 1101A_{1} \Rightarrow 1101\emptyword = 1101 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 1110A_{1} \Rightarrow 1110\emptyword = 1110 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 1111A_{1} \Rightarrow 1111\emptyword = 1111&lt;br /&gt;
\end{gather*}&lt;br /&gt;
&lt;br /&gt;
== 正規言語のクラスの閉包性 その１ ==&lt;br /&gt;
この節では正規言語のクラスが[[形式言語#id_concatenation | 連接 ]]，和集合演算，[[形式言語#id_kleeneclosure | Kleene閉包 ]]によって閉じていることを述べる．&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop | name=正規言語のクラスの閉包性 その１ |label=prop-regular-exp }}&lt;br /&gt;
# 形式言語 $L_{1}$, $L_{2}$ が正規言語であるならば $L_{1}L_{2}$ も正規言語である。&lt;br /&gt;
# 形式言語 $L_{1}$, $L_{2}$ が正規言語であるならば $L_{1}\cup L_{2}$ も正規言語である。&lt;br /&gt;
# 形式言語 $L$ が正規言語であるならば $\kleenecl{L}$ も正規言語である。&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
1. 形式言語 $L_{1}$, $L_{2}$ が正規言語であると仮定する．&lt;br /&gt;
&lt;br /&gt;
このとき $L_{1}$, $L_{2}$ を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$L_{1}$ を生成する右線形文法を $G=(V_{1}, \Sigma, R_{1}, S_{1})$、&lt;br /&gt;
$L_{2}$ を生成する右線形文法を $G=(V_{2}, \Sigma, R_{2}, S_{2})$ とする。&lt;br /&gt;
このとき、$V_{1}\cap V_{2}=\emptyset$ と仮定しても&lt;br /&gt;
一般性を失わない（必要であれば、変数記号を適切に置き換えれば良い）。&lt;br /&gt;
&lt;br /&gt;
さて、&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
R_{1}^{(V)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R_{1}}{\gamma \in \kleenecl{\Sigma}V}  \\&lt;br /&gt;
R_{1}^{(0)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R_{1}}{\gamma \in \kleenecl{\Sigma}}  &lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$R_{1}=R_{1}^{(V)}\cup R_{1}^{(0)}$, $R_{1}^{(V)}\cap R_{1}^{(0)}=\emptyset$ である。&lt;br /&gt;
\[R_{1}^{(S_{2})}:=\mathsetintension{A\mathgen \gamma S_{2}}{A\mathgen \gamma \in R_{1}^{(0)}\]&lt;br /&gt;
とすると、&lt;br /&gt;
$G=(V_{1}\cup V_{2}, \Sigma, R_{1}^{V}\cup R_{1}^{(S_{2})}\cup R_{2}, S_{1})$&lt;br /&gt;
は $L_{1}L_{2}$ を生成する右線形文法である。&lt;br /&gt;
&lt;br /&gt;
2. 形式言語 $L_{1}$, $L_{2}$ が正規言語であると仮定する．&lt;br /&gt;
&lt;br /&gt;
このとき $L_{1}$, $L_{2}$ を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$L_{1}$ を生成する右線形文法を $G=(V_{1}, \Sigma, R_{1}, S_{1})$、&lt;br /&gt;
$L_{2}$ を生成する右線形文法を $G=(V_{2}, \Sigma, R_{2}, S_{2})$ とする&lt;br /&gt;
（ただし，$V_{1}\cap V_{2}=\emptyset$ とする）。&lt;br /&gt;
&lt;br /&gt;
このとき、右線形文法&lt;br /&gt;
$G=(V_{1}\cup V_{2}\cup \mathsetextension{S}, \Sigma, R_{1}\cup R_{2}\cup \mathsetextension{S\mathgen S_{1}, S\mathgen S_{2}}, S)$&lt;br /&gt;
（ただし、$S\notin V_{1}\cup V_{2}$）は $L_{1}\cup L_{2}$ を生成する。&lt;br /&gt;
&lt;br /&gt;
3.&lt;br /&gt;
形式言語 $L$ が正規言語であると仮定する．&lt;br /&gt;
&lt;br /&gt;
このとき $L$ を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$L$ を生成する右線形文法を $G=(V, \Sigma, R, S)$ とする。&lt;br /&gt;
&lt;br /&gt;
さて、&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
R^{(V)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R}{\gamma \in \kleenecl{\Sigma}V} \\&lt;br /&gt;
R^{(0)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R}{\gamma \in \kleenecl{\Sigma}}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$R=R^{(V)}\cup R^{(0)}$, $R^{(V)}\cap R^{(0)}=\emptyset$ である。&lt;br /&gt;
&lt;br /&gt;
\[R^{(S)}:=\mathsetintension{A\mathgen \gamma S}{A\mathgen \gamma \in R, \gamma \in \kleenecl{\Sigma}}\]&lt;br /&gt;
とすると、右線形文法&lt;br /&gt;
$G=(V, \Sigma, R^{(V)}\cup R^{(S)}\cup \{S\mathgen \emptyword\}, S)$ は $\kleenecl{L}$ を生成する。&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
==  正規表現、有限オートマトンとの関係 ==&lt;br /&gt;
この節では正規言語、[[正規表現]]および[[有限オートマトン]]との関係を述べる。以下では[[正規表現]]と[[有限オートマトン]]の定義などは既知とする。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=theorem |label=thm-regularandNFA }}&lt;br /&gt;
言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $L=\interpret{\alpha}$ なる正規表現 $\alpha$ が存在する。&lt;br /&gt;
# $L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
この節ではこの定理を証明する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=lemma |label=lemma-of-thm-regularandNFA }}&lt;br /&gt;
正規言語 $G=(V, \Sigma, R, S)$ に対して、&lt;br /&gt;
$G$ と[[句構造言語#句構造文法の等価性 | 等価 ]]であって、&lt;br /&gt;
すべての生成規則の右辺が&lt;br /&gt;
$(\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
の元である右線形文法が存在する。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
正規言語 $G=(V, \Sigma, R, S)$ について、&lt;br /&gt;
$R=\{A_{0}\mathgen \alpha_{0}, \ldots, A_{n}\mathgen \alpha_{n}\}$ （ただし $n\in\mathnat$）&lt;br /&gt;
とする。&lt;br /&gt;
&lt;br /&gt;
$G_{i}=(V_{i}, \Sigma, R_{i}, S)$&lt;br /&gt;
（ただし $n=0, \ldots, n+1$）&lt;br /&gt;
を次のように定義する。&lt;br /&gt;
&lt;br /&gt;
* $G_{0}=G$&lt;br /&gt;
* $\alpha_{i}\in (\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
のとき、$G_{i+1}:=G_{i}$ とする。&lt;br /&gt;
* $\alpha_{i}\in \kleenecl{\Sigma} \setminus (\Sigma \cup\{\emptyword\})$ のとき、$\alpha_{i}=a_{0}\ldots a_{m}$ （ただし、$m$ は $1$ 以上の自然数であって、$a_{j}\in \Sigma$ for $j\in \mathnat$）とする。&lt;br /&gt;
** $V_{i+1}:=V_{i}\cup \{B_{0}, \ldots, B_{m}\}$ （ただし、各 $B_{j}$ は $B_{j}\notin V_{i}\cup \Sigma$ を満たす変数記号）。&lt;br /&gt;
** $R_{i+1}:=R_{i}\setminus \{A_{i}\mathgen \alpha_{i}\}\cup \{A_{i} \mathgen a_{0}B_{0}, B_{0} \mathgen a_{1}B_{1}, \ldots, B_{m-1} \mathgen a_{m}B_{m}, B_{m}\mathgen \emptyword\}$。&lt;br /&gt;
* $\alpha_{i}\in \kleenecl{\Sigma}V\setminus (\Sigma \cup\{\emptyword\})V$ のとき、$\alpha_{i}=a_{0}\ldots a_{m} A'_{i}$ （ただし、$m$ は $1$ 以上の自然数であって、$a_{j}\in \Sigma$ for $j\in \mathnat$）とする。&lt;br /&gt;
** $V_{i+1}:=V_{i}\cup \{B_{0}, \ldots, B_{m}\}$ （ただし、各 $B_{j}$ は $B_{j}\notin V_{i}\cup \Sigma$ を満たす変数記号）。&lt;br /&gt;
** $R_{i+1}:=R_{i}\setminus \{A_{i}\mathgen \alpha_{i}\}\cup \{A_{i} \mathgen a_{0}B_{0}, B_{0} \mathgen a_{1}B_{1}, \ldots, B_{m-1} \mathgen a_{m}B_{m}, B_{m}\mathgen A'_{i}\}$。&lt;br /&gt;
&lt;br /&gt;
各 $i$ に対して、 $L(G_{i})=L(G_{i+1})$ に注意すると&lt;br /&gt;
$G_{n+1}$ が求める文法であることがわかる。&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 | display=Proof of {{ref |type=theorem |label=thm-regularandNFA }}. }}&lt;br /&gt;
(2. $\Rightarrow$ 1.)&lt;br /&gt;
$L=\interpret{\alpha}$ なる正規表現 $\alpha$ が存在するとき、&lt;br /&gt;
$L$ を生成する右線形文法が存在する（つまり $L$ は正規言語である）ことを言えば良い。&lt;br /&gt;
&lt;br /&gt;
正規表現の構成についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
Case 1.&lt;br /&gt;
$L=\interpret{\emptyset}=\emptyset$ のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \emptyset, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 2.&lt;br /&gt;
$L=\interpret{\emptyword}=\{\emptyword\}$ のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \{S \mathgen \emptyword\}, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 3.&lt;br /&gt;
$L=\interpret{a}=\{a\}$ (ただし、$a\in \Sigma$) のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \{S \mathgen a\}, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 4.&lt;br /&gt;
$L=\interpret{\alpha\beta}=\interpret{\alpha}\cdot\interpret{\beta}$&lt;br /&gt;
（ただし、$\alpha$, $\beta$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$, $\interpret{\beta}$ は正規言語である。&lt;br /&gt;
{{ref |type=prop |label=prop-regular-exp }} の 1. より、&lt;br /&gt;
$\interpret{\alpha}\cdot\interpret{\beta}$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
Case 5.&lt;br /&gt;
$L=\interpret{\alpha +\beta}=\interpret{\alpha}\cup \interpret{\beta}$&lt;br /&gt;
（ただし、$\alpha$, $\beta$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$, $\interpret{\beta}$ は正規言語である。&lt;br /&gt;
{{ref |type=prop |label=prop-regular-exp }} の 2. より、&lt;br /&gt;
$\interpret{\alpha}\cup \interpret{\beta}$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
Case 6.&lt;br /&gt;
$L=\interpret{\kleenecl{\alpha}}=\kleenecl{\interpret{\alpha}}$&lt;br /&gt;
（ただし、$\alpha$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$ は正規言語である。&lt;br /&gt;
{{ref |type=prop |label=prop-regular-exp }} の 3. より、&lt;br /&gt;
$\kleenecl{\interpret{\alpha}}$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
以上、Case 1-6 より(2. $\Rightarrow$ 1.) は示された。&lt;br /&gt;
&lt;br /&gt;
(1. $\Rightarrow$ 3.)&lt;br /&gt;
$L$ が正規言語であるとき、{{ref |type=lemma |label=lemma-of-thm-regularandNFA }}から&lt;br /&gt;
すべての生成規則の右辺が&lt;br /&gt;
$(\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
の元である$L$ を生成する右線形文法が存在する。&lt;br /&gt;
この文法を $G=(V, \Sigma, R, S)$ とする。&lt;br /&gt;
&lt;br /&gt;
まず、有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \delta, q_{I}, F)$&lt;br /&gt;
を次のように定義する。&lt;br /&gt;
&lt;br /&gt;
* $Q=V \cup \{f\}$ （ただし、$f\notin V$）&lt;br /&gt;
* $q_{I}=S$&lt;br /&gt;
* $\Delta = \{(A, a, A') | A, A'\in V, a\in \Sigma\cup\{\emptyword\}, A \mathgen aA'\in R \} \cup \{ (A, a, f) | A\in V, a\in \Sigma\cup\{\emptyword\}, A \mathgen a\in R\} \}$&lt;br /&gt;
* $F=\{f\}$&lt;br /&gt;
&lt;br /&gt;
次に、$wA\in \kleenecl{\Sigma}V$&lt;br /&gt;
に対して以下の２条件は同値であることを示す。&lt;br /&gt;
&lt;br /&gt;
(a) $S$ から始まる&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G}\cdots \Rightarrow_{G} \alpha_{n}(=wA)\]&lt;br /&gt;
(ただし、$\alpha_{i}=w_{i}A_{i}$ for $1\leq i\leq n$)&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
&lt;br /&gt;
(b) 記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ A_{0}, A_{1}, \ldots, A_{n}\]&lt;br /&gt;
（ただし、$A_{0}=S$, $A_{n}=A$）が存在する。&lt;br /&gt;
&lt;br /&gt;
(a) $\Rightarrow$ (b) を $n$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$n=1$ のとき、&lt;br /&gt;
$w=a$ なる $a\in\Sigma\cup\{\emptyword\}$が存在し、&lt;br /&gt;
$S\mathgen aA \in R$ であるはずである。&lt;br /&gt;
このとき、$\mathautomaton{A}$ の定義から&lt;br /&gt;
$(S, a, A)\in \Delta$である。&lt;br /&gt;
ゆえに、記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A \]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n&amp;gt;1$ のとき、&lt;br /&gt;
$w=w'a$ （ただし、$a\in \Sigma\cup\{\emptyword\}$）とおく。&lt;br /&gt;
このとき、$G$ の生成規則の形から&lt;br /&gt;
$w_{n-1}=w'$, &lt;br /&gt;
$A_{n-1}\mathgen aA \in R$&lt;br /&gt;
である。&lt;br /&gt;
このとき、帰納法の仮定から&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n-1}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[S, A_{1}, \ldots, A_{n-1} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
$A_{n-1}\mathgen aA \in R$&lt;br /&gt;
であるから、&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$であることに注意すると&lt;br /&gt;
記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{1}, \ldots, A_{n-1}, A \]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
(b) $\Rightarrow$ (a) を $n$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$n=1$ のとき、&lt;br /&gt;
$w=a$ なる $a\in\Sigma\cup\{\emptyword\}$が存在し、&lt;br /&gt;
$(S, a, A)\in \Delta$ のはずである。&lt;br /&gt;
このとき、$\mathautomaton{A}$ の定義から&lt;br /&gt;
$S\mathgen aA \in R$ である。ゆえに&lt;br /&gt;
\[ S \Rightarrow_{G} aA \]&lt;br /&gt;
である。&lt;br /&gt;
&lt;br /&gt;
$n&amp;gt;1$ のとき、&lt;br /&gt;
記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[A_{0}, A_{1}, \ldots, A_{n-1}A_{n} \]&lt;br /&gt;
（ただし、$A_{0}=S$, $A_{n}=A$）が存在すると仮定する。&lt;br /&gt;
すると、&lt;br /&gt;
$w=w'a$,&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$&lt;br /&gt;
を満たす&lt;br /&gt;
$a\in\Sigma\cup\{\emptyword\}$, $w'\in\kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
すると、記号列 $w'$ による $S$ から $A_{n-1}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[A_{0}, A_{1}, \ldots, A_{n-1} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
帰納法の仮定から&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n-1}(=w'A_{n-1})\]&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$ であるから、&lt;br /&gt;
$A_{n-1} \mathgen  aA\in R$ であるので、&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G} \cdots \Rightarrow_{G} w'A_{n-1} \Rightarrow_{G} w'aA(=wA) \]&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
 &lt;br /&gt;
最後に $L=L(\mathautomaton{A})$ を示す。&lt;br /&gt;
&lt;br /&gt;
$w\in L$ を仮定する。&lt;br /&gt;
すると、導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} \Rightarrow_{G} w\]&lt;br /&gt;
が存在する。&lt;br /&gt;
$G$ の生成規則の形から&lt;br /&gt;
$w=w'a$, $\alpha_{n}=w'A_{n}$, $A_{n}\mathgen a \in R$&lt;br /&gt;
を満たす $A_{n}\in V$, $a\in \Sigma\cup\{\emptyword\}$, &lt;br /&gt;
$w'\in \kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
このとき、&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n}$ への $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, A_{1}, \ldots, A_{n} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
$A_{n}\mathgen a \in R$&lt;br /&gt;
であるから、&lt;br /&gt;
$(A_{n}, a, f)\in \Delta$&lt;br /&gt;
に注意すると、&lt;br /&gt;
記号列 $w'a=w$ による $S$ から $f$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, \ldots, A_{n}, f \]&lt;br /&gt;
が存在する。&lt;br /&gt;
ゆえに $w\in L(\mathautomaton{A})$ である。&lt;br /&gt;
&lt;br /&gt;
逆に、$w\in L(\mathautomaton{A})$ とする。&lt;br /&gt;
すると、&lt;br /&gt;
記号列 $w$ による $S$ から $f$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, A_{1}, \ldots, A_{n}, f\]&lt;br /&gt;
が存在する。&lt;br /&gt;
すると、&lt;br /&gt;
$w=w'a$, $(A_{n}, a, f) \in \Delta$&lt;br /&gt;
を満たす $a\in \Sigma\cup\{\emptyword\}$, &lt;br /&gt;
$w'\in \kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
また、&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, \ldots, A_{n} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
よって、導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} (=w'A_{n})\]&lt;br /&gt;
が存在する。&lt;br /&gt;
$(A_{n}, a, f) \in \Delta$ から&lt;br /&gt;
$A_{n}\mathgen a$ であるので、&lt;br /&gt;
$w$ の導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} \Rightarrow_{G} w (=w'a)\]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
以上より(1. $\Rightarrow$ 3.)は示された。&lt;br /&gt;
&lt;br /&gt;
(3. $\Rightarrow$ 2.)&lt;br /&gt;
$L$ を受理する有限オートマトンを&lt;br /&gt;
$\mathautomaton{A}=(\{q_{1}, q_{2}, \ldots, q_{n}\}, \Sigma, \Delta, q_{1}, \{q_{F_{0}}, q_{F_{1}}, \ldots, q_{F_{m}}\})$ とおく。&lt;br /&gt;
&lt;br /&gt;
簡単のため、以下&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\sum_{\alpha \in A} \alpha &amp;amp;= (\alpha_{0}+ \cdots + \alpha_{k}) \quad \text{（ただし、A は正規表現の空でない有限集合であって、A=\{a_{0}, \ldots, a_{k}\}）}, \\&lt;br /&gt;
Q_{ij}&amp;amp;=\{a\in \Sigma\cup\{\emptyword\} | (q_{i}, a, q_{j})\in \Delta\}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
という略記を用いる。&lt;br /&gt;
&lt;br /&gt;
正規表現 $\alpha^{(l)}_{ij}$ （ただし、$1\leq i, j \leq n$, $0\leq l \leq n$）を次のように帰納的に定める。&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\alpha^{(0)}_{ij}&amp;amp;=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
\emptyset, &amp;amp; \text{if Q_{ij}=\emptyset}, \\&lt;br /&gt;
\sum_{a\in Q_{ij}}a, &amp;amp; \text{if Q_{ij}\neq \emptyset, i\neq j}; \\&lt;br /&gt;
\kleenecl{\left(\sum_{a\in Q_{ij}}a\right)}, &amp;amp; \text{if Q_{ij}\neq \emptyset, i=j}; &lt;br /&gt;
\end{cases}\\&lt;br /&gt;
\alpha^{(l)}_{ij}&amp;amp;=\alpha^{(l-1)}_{ij} + \alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}, \quad \text{（ただし、1\leq l）}.&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
$w\in \interpret{\alpha^{(l)}_{ij}}$ であるとき、&lt;br /&gt;
記号列 $w$ による $q_{i}$ から $q_{j}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{0}}, q_{k_{1}}, \ldots, q_{k_{p}} \]&lt;br /&gt;
（ただし、$k_{0}=i$, $k_{p}=j$, $1\leq q\leq p-1$ のとき $1\leq k_{q} \leq l$）が存在することを $l$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$l=0$ については明らか。&lt;br /&gt;
&lt;br /&gt;
$l&amp;gt;0$ のとき、$w\in \interpret{\alpha^{(l)}_{ij}}$ であるとすると、&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{ij}}$ または&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}}$ である。&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{ij}}$ のときは帰納法の仮定より明らか。&lt;br /&gt;
&lt;br /&gt;
$w\in \interpret{ \alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}}$ とする。すると&lt;br /&gt;
$w_{1}\in \interpret{\alpha^{(l-1)}_{il}}$,&lt;br /&gt;
$w_{2}\in \interpret{\alpha^{(l-1)}_{ll}}$,&lt;br /&gt;
$w_{3}\in \interpret{\alpha^{(l-1)}_{lj}}$,&lt;br /&gt;
$w=w_{1}(w_{2})^{s}w_{3}$ （ただし、$s\in \mathnat$） を満たす記号列 $w_{1}$, $w_{2}$, $w_{3}$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から、&lt;br /&gt;
記号列 $w_{t}$ （$t=1, 2, 3$）による$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{t0}}, q_{k_{t1}}, \ldots, q_{k_{tp}} \]&lt;br /&gt;
（ただし、$k_{10}=i$, $k_{1p}=k_{20}=k_{2p}=k_{30}=l$, $k_{3p}=j$, $1\leq q\leq p-1$ のとき $1\leq k_{q} \leq l-1$）が存在する。&lt;br /&gt;
すると、&lt;br /&gt;
記号列 $w$ による $q_{i}$ から $q_{j}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{10}}, q_{k_{11}}, \ldots, q_{k_{1p}}, \overbrace{q_{k_{21}}, \ldots, q_{k_{2p}}}^{s}, q_{k_{31}}, \ldots, q_{k_{3p}} \]&lt;br /&gt;
が存在することがわかる。&lt;br /&gt;
&lt;br /&gt;
以上のことに注意すると、&lt;br /&gt;
\[ \alpha^{(n)}_{1F_{0}}+\alpha^{(n)}_{1F_{1}}+ \cdots + \alpha^{(n)}_{1F_{m}}\]&lt;br /&gt;
は $\mathautomaton{A}$ が受理する記号列全体である。&lt;br /&gt;
 &lt;br /&gt;
以上より(3. $\Rightarrow$ 2.)は示された。&lt;br /&gt;
{{end  |proof }}&lt;br /&gt;
&lt;br /&gt;
== Myhill-Nerodeの定理  ==&lt;br /&gt;
この節ではMyhill-Nerodeの定理について述べる．&lt;br /&gt;
この定理は正規言語の[[形式言語#def-quotient |左商]]による定式化とみなせる．&lt;br /&gt;
&lt;br /&gt;
{{theorem | type=theorem | name=Myhill-Nerodeの定理 | label=thm-Myhill-Nerode }}&lt;br /&gt;
$\Sigma$ 上の形式言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $\inverse{\kleenecl{\Sigma}}L$ は有限集合。&lt;br /&gt;
&lt;br /&gt;
{{begin  |proof | collapsible=1 }}&lt;br /&gt;
(1. $\Rightarrow$ 2.)&lt;br /&gt;
形式言語 $L$ は正規言語であると仮定する。&lt;br /&gt;
&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }} より、$L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
よって、[[有限オートマトン#prop-finite_automaton_non_emptyword | $L$ を受理する決定性有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が存在する]]。&lt;br /&gt;
&lt;br /&gt;
$\mathautomaton{A}$ は決定性有限オートマトンなので、任意の記号列 $w\in \kleenecl{\Sigma}$ に対して、次のいずれかが成り立つことに注意する．&lt;br /&gt;
# 記号列 $w\in \kleenecl{\Sigma}$ による $q_{I}$ から始まる $\mathautomaton{A}$ の状態遷移は存在しない。&lt;br /&gt;
# 記号列 $w\in \kleenecl{\Sigma}$ による $q_{I}$ から $q_{w} への$ $\mathautomaton{A}$ の状態遷移が存在し、$q_{w}$ は一意。&lt;br /&gt;
&lt;br /&gt;
前者のとき、$\inverse{w}L$ は空集合である。&lt;br /&gt;
後者のとき、決定性有限オートマトン $\mathautomaton{A}_{w}=(Q, \Sigma, \Delta, q_{w}, F)$ は $\inverse{w}L$ を受理する。&lt;br /&gt;
&lt;br /&gt;
$Q$ は有限集合であり、$q_{w} = q_{w'}$ ならば $\mathautomaton{A}_{w} = \mathautomaton{A}_{w'}$ に注意すると、&lt;br /&gt;
$\inverse{\kleenecl{\Sigma}}L$ の濃度は高々 $\mathcountfunc{Q} + 1$ である&lt;br /&gt;
（ただし、$\#$ は有限集合を受け取りそこに所属する元の個数を返す関数）。&lt;br /&gt;
&lt;br /&gt;
(2. $\Rightarrow$ 1.)&lt;br /&gt;
$\Sigma$ 上の形式言語 $L$ について $\inverse{\kleenecl{\Sigma}}L$ は有限集合と仮定する。&lt;br /&gt;
&lt;br /&gt;
集合 $\Delta_{L}$ と $F_{L}$ を次のように定義する。&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\Delta_{L} &amp;amp;:= \mathsetintension{(\inverse{w}L, a, \inverse{wa}L)}{w\in\kleenecl{\Sigma}} \\&lt;br /&gt;
F_{L} &amp;amp;:= \mathsetintension{L'\in \inverse{\kleenecl{\Sigma}}L}{\emptyword\in L'}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
$\inverse{\kleenecl{\Sigma}}L$ は有限集合であることから、&lt;br /&gt;
$\mathautomaton{A}_{L}=(\inverse{\kleenecl{\Sigma}}L, \Sigma, \Delta_{L}, L, F_{L})$&lt;br /&gt;
は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
$\mathautomaton{A}_{L}$ が受理する言語が $L$ であることを示す。&lt;br /&gt;
&lt;br /&gt;
$w\in L$ を仮定してする。$w$ が $\mathautomaton{A}_{L}$ に受理されることを示す。&lt;br /&gt;
&lt;br /&gt;
このとき、記号列 $w$ による $L$ から $\inverse{w}L$ への $\mathautomaton{A}_{L}$ の状態遷移が存在する。&lt;br /&gt;
$w\in L$ であるから、$\emptyword\in \inverse{w}L$。よって $\inverse{w}L\in F_{L}$。&lt;br /&gt;
ゆえに $w$ は $\mathautomaton{A}_{L}$ に受理される。&lt;br /&gt;
&lt;br /&gt;
$w$ が $\mathautomaton{A}_{L}$ に受理されることを仮定する。$w\in L$ を示す。&lt;br /&gt;
&lt;br /&gt;
$w$ が $\mathautomaton{A}_{L}$ に受理されることから&lt;br /&gt;
記号列 $w$ による $L$ から $\inverse{w}L$ への $\mathautomaton{A}_{L}$ の状態遷移が存在し、&lt;br /&gt;
$\inverse{w}L\in F_{L}$ である。よって $\emptyword\in \inverse{w}L$。これは $w\in L$ を意味する。&lt;br /&gt;
&lt;br /&gt;
以上より $\mathautomaton{A}_{L}$ が受理する言語は $L$ である。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
== 正規言語のクラスの閉包性 その２ ==&lt;br /&gt;
この節では正規言語のクラスが補集合演算，共通部分演算，鏡像，左商，右商によって閉じていることを述べる．&lt;br /&gt;
&amp;lt;!-- 代入についてもそのうち書く --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=prop-regular-exp }}&lt;br /&gt;
# $\kleenecl{\Sigma}$ 上の形式言語 $L$ が正規言語であるならば $\kleenecl{\Sigma}\setminus L$ も正規言語である。&lt;br /&gt;
# 形式言語 $L_{1}$, $L_{2}$ が正規言語であるならば $L_{1}\cap L_{2}$ も正規言語である。&lt;br /&gt;
# 形式言語 $L$ が正規言語であるならば $\mirrorim{L}=\mathsetintension{\mirrorim{w}}{w\in L}$ も正規言語である。&lt;br /&gt;
# $\kleenecl{\Sigma}$ 上の形式言語 $L$ が正規言語であるならば $w\in\kleenecl{\Sigma}$ による左商 $\inverse{w}L$ および右商 $L\inverse{w}$ はいずれも正規言語である。&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
1. Now writing......&lt;br /&gt;
&lt;br /&gt;
2. $L_{1}$, $L_{2}$ を正規言語とする。&lt;br /&gt;
このとき、 $\kleenecl{\Sigma}\setminus L_{1}$, $\kleenecl{\Sigma}\setminus L_{2}$ もまた正規言語である。&lt;br /&gt;
{{ref |type=prop |label=prop-regular-exp }} の 2. より $L_{1}\cap L_{2} = \left(\kleenecl{\Sigma}\setminus L_{1}\right)\cup\left(\kleenecl{\Sigma}\setminus L_{2}\right)$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
3. $L$ を正規言語とする。{{ref |type=theorem |label=thm-regularandNFA }} より、&lt;br /&gt;
$L$ を受理する有限オートマトン &lt;br /&gt;
$\mathautomaton{A}=\left(Q, \Sigma, \Delta, q_{0}, F\right)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
このとき，集合 $\mirrorim{\Delta}$ を次のように定義する．&lt;br /&gt;
\[\mirrorim{\Delta} = \mathsetintension{ \left(q_{1}, a, q_{0} \right) }{\left(q_{0}, a, q_{1} \right) \in \Delta} \]&lt;br /&gt;
&lt;br /&gt;
$q\in F$ について、&lt;br /&gt;
$\mathautomaton{A}_{q}=\left(Q, \Sigma, \mirrorim{\Delta}, q, \mathsetextension{q_{0}}\right)$ &lt;br /&gt;
とおく。このとき、$L\left(\mathautomaton{A}_{q}\right)$ は正規言語である。また、&lt;br /&gt;
&lt;br /&gt;
\[\mirrorim{L} = \bigcup_{q\in F} L\left(\mathautomaton{A}_{q}\right)\]&lt;br /&gt;
&lt;br /&gt;
である。{{ref |type=prop |label=prop-regular-exp }} の 2. より $\mirrorim{L}$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
4.&lt;br /&gt;
形式言語 $L$ は正規言語であると仮定する。&lt;br /&gt;
&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }} より、$L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
よって、[[有限オートマトン#prop-finite_automaton_non_emptyword | $L$ を受理する決定性有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が存在する]]。&lt;br /&gt;
&lt;br /&gt;
$\mathautomaton{A}$ は決定性有限オートマトンなので、任意の記号列 $w\in \kleenecl{\Sigma}$ に対して、次のいずれかが成り立つことに注意する．&lt;br /&gt;
# 記号列 $w\in \kleenecl{\Sigma}$ による $q_{I}$ から始まる $\mathautomaton{A}$ の状態遷移は存在しない。&lt;br /&gt;
# 記号列 $w\in \kleenecl{\Sigma}$ による $q_{I}$ から $q_{w} への$ $\mathautomaton{A}$ の状態遷移が存在し、$q_{w}$ は一意。&lt;br /&gt;
&lt;br /&gt;
前者のとき、$\inverse{w}L$ は空集合である。このとき、$\inverse{w}L$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
後者のとき、決定性有限オートマトン $\mathautomaton{A}_{w}=(Q, \Sigma, \Delta, q_{w}, F)$ は $\inverse{w}L$ を受理する。&lt;br /&gt;
よって、$\inverse{w}L$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
さて、&lt;br /&gt;
\[L\inverse{w}=\mirrorim{\mirrorim{L\inverse{w}}}=\mirrorim{\mirrorim{\inverse{w}}\mirrorim{L}}\]&lt;br /&gt;
であるから、$L\inverse{w}$ も正規言語である。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
==  正規言語と左線形文法 ==&lt;br /&gt;
この節では正規言語と左線形文法との関係を述べる。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=definition |name=左線形文法 |label=def-left_linear_grammar }}&lt;br /&gt;
'''左線形文法（left linear grammar）'''とは&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# $\Sigma$ と互いに素な'''変数記号（variable）'''の有限集合 $V$&lt;br /&gt;
# '''生成規則（production rule）'''と呼ばれる有限集合 $R \subseteq V \times V\kleenecl{(\Sigma)}\cup \kleenecl{(\Sigma)}$&lt;br /&gt;
# '''開始記号(start symbol)'''または'''初期記号'''と呼ばれる $S\in V$&lt;br /&gt;
&lt;br /&gt;
の４つ組$(V, \Sigma, R, S)$である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
これは、[[句構造言語#def-phrase_structure_grammar | 句構造文法]]の一種である。また、[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]の一種である。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=thm-left_linear_grammar }}&lt;br /&gt;
言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $L$ を生成する左線形文法が存在する。&lt;br /&gt;
&lt;br /&gt;
==  正規言語ではない形式言語の例  ==&lt;br /&gt;
この節では正規言語ではない[[形式言語]]の例を紹介する。&lt;br /&gt;
&lt;br /&gt;
そのような例が存在すること自体は右線形文法が[[集合の濃度#具体的な濃度 | 高々可算個]]しかないことと[[形式言語]]の濃度が[[集合の濃度#具体的な濃度 | 非加算]]であることに注意すると、明らかである。&lt;br /&gt;
しかし、その具体例を構成し、正規言語ではないことを示すことはそれほど簡単ではない。このとき強力な武器となるのが[[有限オートマトン#pumping_lemma | 反復補題]]である。&lt;br /&gt;
&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]] については当該項目を参照せよ。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0^{n}1^{n}$ という形をした記号列全体 |label=ex-counter_example_reg_lang_n }}&lt;br /&gt;
$0^{n}1^{n}$ （ただし、$n\in\mathnat$）という形の記号列全体は正規言語ではない。しかしながら[[文脈自由言語]]ではある．この記号列全体を生成する[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]は[[文脈自由言語#ex-counter_example_reg_lang_n | この例]]を参照せよ．&lt;br /&gt;
&lt;br /&gt;
'''$0^{n}1^{n}$ という形の記号列全体が正規言語ではないことの証明'''&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
背理法により示す。&lt;br /&gt;
&lt;br /&gt;
$0^{n}1^{n}$ という形の記号列全体 $L$ が正規言語であると仮定する。&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }}より、$L=L(\mathautomaton{A})$ を満たす&lt;br /&gt;
有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n_{0}=|Q|$ とする。仮定より&lt;br /&gt;
$\mathautomaton{A}$ は $w=0^{n_{0}}1^{n_{0}}$ を受理する。&lt;br /&gt;
すると$\left|w\right|&amp;gt;n_{0}$ であるから&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]] より&lt;br /&gt;
次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w=xyz$。&lt;br /&gt;
# $\left|y\right|&amp;gt;0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は&lt;br /&gt;
$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n_{0}$。&lt;br /&gt;
&lt;br /&gt;
このとき、 $xy=0^{k}$ （ただし、$0\lt k\leq n_{0}$）&lt;br /&gt;
であることに注意する。&lt;br /&gt;
すると、 $x=0^{k_{0}}$, $y=0^{k_{1}}$&lt;br /&gt;
（ただし、$0\leq k_{0}\leq k$, $0\lt k_{1}\leq k$,&lt;br /&gt;
$k=k_{0}+k_{1}$）&lt;br /&gt;
を満たす自然数 $k_{0}$, $k_{1}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
さて、$\mathautomaton{A}$ は&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]]の条件から、&lt;br /&gt;
記号列 $xz$ を受理するはずである。&lt;br /&gt;
しかし、$xz=0^{n_{0}-k_{1}}b^{n_{0}}$, $n_{0}-k_{1}\lt n_{0}$&lt;br /&gt;
であるから $xz\notin L$ である。&lt;br /&gt;
これは $L=L(\mathautomaton{A})$ に矛盾する。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$w\mirrorim{w}$ という形をした記号列全体 |label=ex-counter_example_reg_lang_mirror }}&lt;br /&gt;
$w\mirrorim{w}$（ただし、$n\in\mathnat$）という形の記号列全体は正規言語ではない。しかしながら[[文脈自由言語]]ではある．この記号列全体を生成する[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]は[[文脈自由言語#ex-counter_example_reg_lang_mirror | この例]]を参照せよ．&lt;br /&gt;
'''$w\mirrorim{w}$ という形の記号列全体が正規言語ではないことの証明'''&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
背理法により示す。&lt;br /&gt;
&lt;br /&gt;
$w\mirrorim{w}$ という形の記号列全体 $L$ が正規言語であると仮定する。&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }}より、&lt;br /&gt;
$L=L(\mathautomaton{A})$ を満たす&lt;br /&gt;
有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n_{0}=|Q|$ とする。以下 $w_{0}=0^{n_{0}}1$ とする。&lt;br /&gt;
仮定より $\mathautomaton{A}$ は $w_{0}\mirrorim{w_{0}}$ を受理する。&lt;br /&gt;
すると $\left|w_{0}\mirrorim{w_{0}}\right|&amp;gt;n_{0}$ であるから&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題 ]] より&lt;br /&gt;
次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w_{0}\mirrorim{w_{0}}=xyz$。&lt;br /&gt;
# $\left|y\right|&amp;gt;0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は&lt;br /&gt;
$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n_{0}$。&lt;br /&gt;
&lt;br /&gt;
このとき、 $xy=0^{k}$ （ただし、$0\lt k\leq n_{0}$）&lt;br /&gt;
であることに注意する。&lt;br /&gt;
すると、 $x=0^{k_{0}}$, $y=0^{k_{1}}$&lt;br /&gt;
（ただし、$0\leq k_{0}\leq k$, $0\lt k_{1}\leq k$,&lt;br /&gt;
$k=k_{0}+k_{1}$）&lt;br /&gt;
を満たす自然数 $k_{0}$, $k_{1}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
さて、$\mathautomaton{A}$ は&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題 ]] の条件から、&lt;br /&gt;
記号列 $xz$ を受理するはずである。&lt;br /&gt;
しかし、$xz=0^{n_{0}-k_{1}}1\mirrorim{w_{0}}=0^{n_{0}-k_{1}}110^{n_{0}}$, $n_{0}-k_{1}\lt n_{0}$&lt;br /&gt;
であるから $xz\notin L$ である。&lt;br /&gt;
これは $L=L(\mathautomaton{A})$ に矛盾する。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
==  参考文献 ==&lt;br /&gt;
# 新屋 良磨、オートマトン理論再考、コンピュータ ソフトウェア、2017、34 巻、3 号、p. 3_3-3_35、公開日 2017/09/25、Print ISSN 0289-6540、https://doi.org/10.11309/jssst.34.3_3、https://www.jstage.jst.go.jp/article/jssst/34/3/34_3_3/_article/-char/ja&lt;br /&gt;
# 五十嵐喜英他、『[[数理情報科学シリーズ ２４ オートマトンと形式言語の基礎]]』、牧野書店、2011&lt;br /&gt;
&lt;br /&gt;
== 関連項目 ==&lt;br /&gt;
* [[形式言語]]&lt;br /&gt;
* [[正規表現]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
|+ Chomsky階層&lt;br /&gt;
! 文法のタイプ&lt;br /&gt;
! 言語のクラス&lt;br /&gt;
! 計算モデル&lt;br /&gt;
|-&lt;br /&gt;
! タイプ0&lt;br /&gt;
| [[句構造言語]]&lt;br /&gt;
| [[Turingマシン]]&lt;br /&gt;
|-&lt;br /&gt;
! タイプ1&lt;br /&gt;
| [[文脈依存言語]]&lt;br /&gt;
| [[線形有界オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ2&lt;br /&gt;
| [[文脈自由言語]]&lt;br /&gt;
| [[プッシュダウン・オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ3&lt;br /&gt;
| [[正規言語]]&lt;br /&gt;
| [[有限オートマトン]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E6%AD%A3%E8%A6%8F%E8%A8%80%E8%AA%9E&amp;diff=8923</id>
		<title>正規言語</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E6%AD%A3%E8%A6%8F%E8%A8%80%E8%AA%9E&amp;diff=8923"/>
		<updated>2021-10-29T08:24:18Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: Prove closureness&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{TOC |align=right |noautonum=1 }}&amp;lt;!-- 右寄せ連番無し目次をここに表示 --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Category:形式言語理論|セイキゲンゴ]]&lt;br /&gt;
{{begin |preamble}}&lt;br /&gt;
&amp;lt;!-- 参考文献 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 定理環境 --&amp;gt;&lt;br /&gt;
{{newtheorem |type=theorem |display=定理}}&lt;br /&gt;
{{newtheorem |type=lemma |display=補題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=definition |display=定義 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=prop |display=命題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=example |display=例 |family=theorem }}&lt;br /&gt;
&amp;lt;!-- MathJax commands --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\newcommand{\mathsetextension}[1]{%&lt;br /&gt;
\left\{ #1 \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathsetintension}[2]{%&lt;br /&gt;
\left\{ #1 \left| #2 \right.\right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathof}[2]{%&lt;br /&gt;
\mathop{#1}\left(#2\right)%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathderiv}{\mathrel{\mathop{\Rightarrow}^{*}}}&lt;br /&gt;
\newcommand{\mathgen}{\rightsquigarrow}&lt;br /&gt;
\newcommand{\mathgenfun}[1]{\mathbf{#1}}&lt;br /&gt;
\newcommand{\mirrorim}[1]{\overleftarrow{#1}}&lt;br /&gt;
\newcommand{\emptyword}{\varepsilon}&lt;br /&gt;
\newcommand{\kleenecl}[1]{{#1}^{*}}&lt;br /&gt;
\newcommand{\inverse}[1]{{#1}^{-1}}&lt;br /&gt;
\newcommand{\interpret}[1]{[\![#1]\!]}&lt;br /&gt;
\newcommand{\mathautomaton}[1]{\mathcal{#1}}&lt;br /&gt;
\newcommand{\mathnat}{\mathbb{N}}&lt;br /&gt;
\newcommand{\mathcountfunc}{\mathop{\#}}&lt;br /&gt;
&lt;br /&gt;
\newcommand{\qed}{\blacksquare}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
{{end |preamble}}&lt;br /&gt;
'''正規言語（regular language）'''とは右線形文法(right linear grammar)または左線形文法(left linear grammar)によって定められる形式言語である。&lt;br /&gt;
&lt;br /&gt;
右線形文法は句構造文法の一種であるから、&lt;br /&gt;
右線形言語は[[句構造言語]]の一種である。&lt;br /&gt;
&lt;br /&gt;
また、右線形文法は文脈自由文法の一種であるから、&lt;br /&gt;
右線形言語は[[文脈自由言語]]の一種である。&lt;br /&gt;
&lt;br /&gt;
以下、項目[[形式言語]]、[[句構造言語]]において定められている言語上の演算や文法の等価性の定義などについては特に断らず用いる。&lt;br /&gt;
&lt;br /&gt;
==  正規言語の導入 ==&lt;br /&gt;
この節では'''正規言語'''を定義する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=definition |name=右線形文法 |label=def-right_linear_grammar }}&lt;br /&gt;
'''右線形文法（right linear grammar）'''とは&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# $\Sigma$ と互いに素な'''変数記号（variable）'''の空でない有限集合 $V$&lt;br /&gt;
# '''生成規則（production rule）'''と呼ばれる有限集合 $R \subseteq V \times (\kleenecl{\Sigma}V)\cup (\kleenecl{\Sigma})$&lt;br /&gt;
# '''開始記号(start symbol)'''または'''初期記号'''と呼ばれる $S\in V$&lt;br /&gt;
&lt;br /&gt;
の４つ組$(V, \Sigma, R, S)$である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
これは、[[句構造言語#def-phrase_structure_grammar | 句構造文法]]の一種である。また、[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]の一種である。&lt;br /&gt;
&lt;br /&gt;
[[句構造言語]]のときと同様、$\Sigma$ の元を'''終端記号(terminal)'''、$V$ の元を'''非終端記号(non-terminal)'''と呼ぶことも多い。&lt;br /&gt;
&lt;br /&gt;
以下では、元$(A, \alpha)\in R$ のことを$A\mathgen\alpha$と書く。&lt;br /&gt;
&lt;br /&gt;
[[句構造言語#def-derivation | 導出]]、[[句構造言語#def-phrase_structure_lang | 生成される言語]]などは&lt;br /&gt;
句構造言語と同様に定義される。&lt;br /&gt;
&lt;br /&gt;
'''正規言語'''とは何らかの右線形文法によって生成される言語のことを言う。&lt;br /&gt;
&lt;br /&gt;
==  正規言語の例 ==&lt;br /&gt;
この節では正規言語の例を紹介する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列全体 |label=ex-all_lang }}&lt;br /&gt;
$V=\left\{ S \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen\emptyword, S\mathgen 0S, S\mathgen 1S \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
$0$ と $1$ からなる有限記号列全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、$0$ と $1$ からなる有限記号列全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる。&lt;br /&gt;
&lt;br /&gt;
\begin{gather*}&lt;br /&gt;
S \Rightarrow \emptyword \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 0\emptyword = 0 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 1\emptyword = 1 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 00\emptyword = 00 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 01\emptyword = 01 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 10\emptyword = 10 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 11\emptyword = 11 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 000S \Rightarrow 000\emptyword = 000 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 001S \Rightarrow 001\emptyword = 001 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 010S \Rightarrow 010\emptyword = 010 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 011S \Rightarrow 011\emptyword = 011 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 100S \Rightarrow 100\emptyword = 100 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 101S \Rightarrow 101\emptyword = 101 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 110S \Rightarrow 110\emptyword = 110 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 111S \Rightarrow 111\emptyword = 111&lt;br /&gt;
\end{gather*}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体 |label=ex-only_three_one_lang }}&lt;br /&gt;
$V=\left\{ S, A_{1}, A_{2}, A_{3} \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen 0S, S\mathgen 1A_{1}, A_{1}\mathgen 0A_{1}, A_{1}\mathgen 1A_{2}, A_{2}\mathgen 0A_{2}, A_{2}\mathgen 1A_{3}, A_{3}\mathgen 0A_{3}, A_{3}\mathgen \emptyword \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
S &amp;amp;\Rightarrow 1A_{1} \Rightarrow 11A_{2} \Rightarrow 111A_{3} \Rightarrow 111\emptyword = 111 \\&lt;br /&gt;
S &amp;amp;\Rightarrow 0S \\&lt;br /&gt;
&amp;amp;\Rightarrow 01A_{1} \Rightarrow 010A_{1} \Rightarrow 0100A_{1} \\&lt;br /&gt;
&amp;amp;\Rightarrow 01001A_{2} \Rightarrow 010010A_{2} \Rightarrow 0100100A_{2} \Rightarrow 01001000A_{2} \\&lt;br /&gt;
&amp;amp;\Rightarrow 010010001A_{3} \Rightarrow 0100100010A_{3} \Rightarrow 01001000100A_{3} \Rightarrow 010010001000A_{3} \Rightarrow 0100100010000A_{3} \Rightarrow 0100100010000\emptyword =0100100010000&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=自然数の二進表現全体 |label=ex-bi_lang }}&lt;br /&gt;
$V=\left\{ S, A_{1} \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen 0, S\mathgen 1A_{1}, A_{1}\mathgen 0A_{1}, A_{1}\mathgen 1A_{1}, A_{1}\mathgen \emptyword \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
自然数の二進表現全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、自然数の二進表現全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる&lt;br /&gt;
&lt;br /&gt;
\begin{gather*}&lt;br /&gt;
S \Rightarrow 0 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 1\emptyword = 1 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 10\emptyword = 10 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 11\emptyword = 11 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 100\emptyword = 100 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 101\emptyword = 101 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 100\emptyword = 110 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 111\emptyword = 111 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 1000A_{1} \Rightarrow 1000\emptyword = 1000 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 1001A_{1} \Rightarrow 1001\emptyword = 1001 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 1010A_{1} \Rightarrow 1010\emptyword = 1010 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 1011A_{1} \Rightarrow 1011\emptyword = 1011 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 1100A_{1} \Rightarrow 1100\emptyword = 1100 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 1101A_{1} \Rightarrow 1101\emptyword = 1101 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 1110A_{1} \Rightarrow 1110\emptyword = 1110 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 1111A_{1} \Rightarrow 1111\emptyword = 1111&lt;br /&gt;
\end{gather*}&lt;br /&gt;
&lt;br /&gt;
== 正規言語のクラスの閉包性 その１ ==&lt;br /&gt;
この節では正規言語のクラスが[[形式言語#id_concatenation | 連接 ]]，和集合演算，[[形式言語#id_kleeneclosure | Kleene閉包 ]]によって閉じていることを述べる．&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop | name=正規言語のクラスの閉包性 その１ |label=prop-regular-exp }}&lt;br /&gt;
# 形式言語 $L_{1}$, $L_{2}$ が正規言語であるならば $L_{1}L_{2}$ も正規言語である。&lt;br /&gt;
# 形式言語 $L_{1}$, $L_{2}$ が正規言語であるならば $L_{1}\cup L_{2}$ も正規言語である。&lt;br /&gt;
# 形式言語 $L$ が正規言語であるならば $\kleenecl{L}$ も正規言語である。&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
1. 形式言語 $L_{1}$, $L_{2}$ が正規言語であると仮定する．&lt;br /&gt;
&lt;br /&gt;
このとき $L_{1}$, $L_{2}$ を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$L_{1}$ を生成する右線形文法を $G=(V_{1}, \Sigma, R_{1}, S_{1})$、&lt;br /&gt;
$L_{2}$ を生成する右線形文法を $G=(V_{2}, \Sigma, R_{2}, S_{2})$ とする。&lt;br /&gt;
このとき、$V_{1}\cap V_{2}=\emptyset$ と仮定しても&lt;br /&gt;
一般性を失わない（必要であれば、変数記号を適切に置き換えれば良い）。&lt;br /&gt;
&lt;br /&gt;
さて、&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
R_{1}^{(V)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R_{1}}{\gamma \in \kleenecl{\Sigma}V}  \\&lt;br /&gt;
R_{1}^{(0)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R_{1}}{\gamma \in \kleenecl{\Sigma}}  &lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$R_{1}=R_{1}^{(V)}\cup R_{1}^{(0)}$, $R_{1}^{(V)}\cap R_{1}^{(0)}=\emptyset$ である。&lt;br /&gt;
\[R_{1}^{(S_{2})}:=\mathsetintension{A\mathgen \gamma S_{2}}{A\mathgen \gamma \in R_{1}^{(0)}\]&lt;br /&gt;
とすると、&lt;br /&gt;
$G=(V_{1}\cup V_{2}, \Sigma, R_{1}^{V}\cup R_{1}^{(S_{2})}\cup R_{2}, S_{1})$&lt;br /&gt;
は $L_{1}L_{2}$ を生成する右線形文法である。&lt;br /&gt;
&lt;br /&gt;
2. 形式言語 $L_{1}$, $L_{2}$ が正規言語であると仮定する．&lt;br /&gt;
&lt;br /&gt;
このとき $L_{1}$, $L_{2}$ を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$L_{1}$ を生成する右線形文法を $G=(V_{1}, \Sigma, R_{1}, S_{1})$、&lt;br /&gt;
$L_{2}$ を生成する右線形文法を $G=(V_{2}, \Sigma, R_{2}, S_{2})$ とする&lt;br /&gt;
（ただし，$V_{1}\cap V_{2}=\emptyset$ とする）。&lt;br /&gt;
&lt;br /&gt;
このとき、右線形文法&lt;br /&gt;
$G=(V_{1}\cup V_{2}\cup \mathsetextension{S}, \Sigma, R_{1}\cup R_{2}\cup \mathsetextension{S\mathgen S_{1}, S\mathgen S_{2}}, S)$&lt;br /&gt;
（ただし、$S\notin V_{1}\cup V_{2}$）は $L_{1}\cup L_{2}$ を生成する。&lt;br /&gt;
&lt;br /&gt;
3.&lt;br /&gt;
形式言語 $L$ が正規言語であると仮定する．&lt;br /&gt;
&lt;br /&gt;
このとき $L$ を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$L$ を生成する右線形文法を $G=(V, \Sigma, R, S)$ とする。&lt;br /&gt;
&lt;br /&gt;
さて、&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
R^{(V)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R}{\gamma \in \kleenecl{\Sigma}V} \\&lt;br /&gt;
R^{(0)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R}{\gamma \in \kleenecl{\Sigma}}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$R=R^{(V)}\cup R^{(0)}$, $R^{(V)}\cap R^{(0)}=\emptyset$ である。&lt;br /&gt;
&lt;br /&gt;
\[R^{(S)}:=\mathsetintension{A\mathgen \gamma S}{A\mathgen \gamma \in R, \gamma \in \kleenecl{\Sigma}}\]&lt;br /&gt;
とすると、右線形文法&lt;br /&gt;
$G=(V, \Sigma, R^{(V)}\cup R^{(S)}\cup \{S\mathgen \emptyword\}, S)$ は $\kleenecl{L}$ を生成する。&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
==  正規表現、有限オートマトンとの関係 ==&lt;br /&gt;
この節では正規言語、[[正規表現]]および[[有限オートマトン]]との関係を述べる。以下では[[正規表現]]と[[有限オートマトン]]の定義などは既知とする。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=theorem |label=thm-regularandNFA }}&lt;br /&gt;
言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $L=\interpret{\alpha}$ なる正規表現 $\alpha$ が存在する。&lt;br /&gt;
# $L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
この節ではこの定理を証明する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=lemma |label=lemma-of-thm-regularandNFA }}&lt;br /&gt;
正規言語 $G=(V, \Sigma, R, S)$ に対して、&lt;br /&gt;
$G$ と[[句構造言語#句構造文法の等価性 | 等価 ]]であって、&lt;br /&gt;
すべての生成規則の右辺が&lt;br /&gt;
$(\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
の元である右線形文法が存在する。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
正規言語 $G=(V, \Sigma, R, S)$ について、&lt;br /&gt;
$R=\{A_{0}\mathgen \alpha_{0}, \ldots, A_{n}\mathgen \alpha_{n}\}$ （ただし $n\in\mathnat$）&lt;br /&gt;
とする。&lt;br /&gt;
&lt;br /&gt;
$G_{i}=(V_{i}, \Sigma, R_{i}, S)$&lt;br /&gt;
（ただし $n=0, \ldots, n+1$）&lt;br /&gt;
を次のように定義する。&lt;br /&gt;
&lt;br /&gt;
* $G_{0}=G$&lt;br /&gt;
* $\alpha_{i}\in (\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
のとき、$G_{i+1}:=G_{i}$ とする。&lt;br /&gt;
* $\alpha_{i}\in \kleenecl{\Sigma} \setminus (\Sigma \cup\{\emptyword\})$ のとき、$\alpha_{i}=a_{0}\ldots a_{m}$ （ただし、$m$ は $1$ 以上の自然数であって、$a_{j}\in \Sigma$ for $j\in \mathnat$）とする。&lt;br /&gt;
** $V_{i+1}:=V_{i}\cup \{B_{0}, \ldots, B_{m}\}$ （ただし、各 $B_{j}$ は $B_{j}\notin V_{i}\cup \Sigma$ を満たす変数記号）。&lt;br /&gt;
** $R_{i+1}:=R_{i}\setminus \{A_{i}\mathgen \alpha_{i}\}\cup \{A_{i} \mathgen a_{0}B_{0}, B_{0} \mathgen a_{1}B_{1}, \ldots, B_{m-1} \mathgen a_{m}B_{m}, B_{m}\mathgen \emptyword\}$。&lt;br /&gt;
* $\alpha_{i}\in \kleenecl{\Sigma}V\setminus (\Sigma \cup\{\emptyword\})V$ のとき、$\alpha_{i}=a_{0}\ldots a_{m} A'_{i}$ （ただし、$m$ は $1$ 以上の自然数であって、$a_{j}\in \Sigma$ for $j\in \mathnat$）とする。&lt;br /&gt;
** $V_{i+1}:=V_{i}\cup \{B_{0}, \ldots, B_{m}\}$ （ただし、各 $B_{j}$ は $B_{j}\notin V_{i}\cup \Sigma$ を満たす変数記号）。&lt;br /&gt;
** $R_{i+1}:=R_{i}\setminus \{A_{i}\mathgen \alpha_{i}\}\cup \{A_{i} \mathgen a_{0}B_{0}, B_{0} \mathgen a_{1}B_{1}, \ldots, B_{m-1} \mathgen a_{m}B_{m}, B_{m}\mathgen A'_{i}\}$。&lt;br /&gt;
&lt;br /&gt;
各 $i$ に対して、 $L(G_{i})=L(G_{i+1})$ に注意すると&lt;br /&gt;
$G_{n+1}$ が求める文法であることがわかる。&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 | display=Proof of {{ref |type=theorem |label=thm-regularandNFA }}. }}&lt;br /&gt;
(2. $\Rightarrow$ 1.)&lt;br /&gt;
$L=\interpret{\alpha}$ なる正規表現 $\alpha$ が存在するとき、&lt;br /&gt;
$L$ を生成する右線形文法が存在する（つまり $L$ は正規言語である）ことを言えば良い。&lt;br /&gt;
&lt;br /&gt;
正規表現の構成についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
Case 1.&lt;br /&gt;
$L=\interpret{\emptyset}=\emptyset$ のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \emptyset, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 2.&lt;br /&gt;
$L=\interpret{\emptyword}=\{\emptyword\}$ のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \{S \mathgen \emptyword\}, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 3.&lt;br /&gt;
$L=\interpret{a}=\{a\}$ (ただし、$a\in \Sigma$) のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \{S \mathgen a\}, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 4.&lt;br /&gt;
$L=\interpret{\alpha\beta}=\interpret{\alpha}\cdot\interpret{\beta}$&lt;br /&gt;
（ただし、$\alpha$, $\beta$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$, $\interpret{\beta}$ は正規言語である。&lt;br /&gt;
{{ref |type=prop |label=prop-regular-exp }} の 1. より、&lt;br /&gt;
$\interpret{\alpha}\cdot\interpret{\beta}$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
Case 5.&lt;br /&gt;
$L=\interpret{\alpha +\beta}=\interpret{\alpha}\cup \interpret{\beta}$&lt;br /&gt;
（ただし、$\alpha$, $\beta$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$, $\interpret{\beta}$ は正規言語である。&lt;br /&gt;
{{ref |type=prop |label=prop-regular-exp }} の 2. より、&lt;br /&gt;
$\interpret{\alpha}\cup \interpret{\beta}$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
Case 6.&lt;br /&gt;
$L=\interpret{\kleenecl{\alpha}}=\kleenecl{\interpret{\alpha}}$&lt;br /&gt;
（ただし、$\alpha$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$ は正規言語である。&lt;br /&gt;
{{ref |type=prop |label=prop-regular-exp }} の 3. より、&lt;br /&gt;
$\kleenecl{\interpret{\alpha}}$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
以上、Case 1-6 より(2. $\Rightarrow$ 1.) は示された。&lt;br /&gt;
&lt;br /&gt;
(1. $\Rightarrow$ 3.)&lt;br /&gt;
$L$ が正規言語であるとき、{{ref |type=lemma |label=lemma-of-thm-regularandNFA }}から&lt;br /&gt;
すべての生成規則の右辺が&lt;br /&gt;
$(\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
の元である$L$ を生成する右線形文法が存在する。&lt;br /&gt;
この文法を $G=(V, \Sigma, R, S)$ とする。&lt;br /&gt;
&lt;br /&gt;
まず、有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \delta, q_{I}, F)$&lt;br /&gt;
を次のように定義する。&lt;br /&gt;
&lt;br /&gt;
* $Q=V \cup \{f\}$ （ただし、$f\notin V$）&lt;br /&gt;
* $q_{I}=S$&lt;br /&gt;
* $\Delta = \{(A, a, A') | A, A'\in V, a\in \Sigma\cup\{\emptyword\}, A \mathgen aA'\in R \} \cup \{ (A, a, f) | A\in V, a\in \Sigma\cup\{\emptyword\}, A \mathgen a\in R\} \}$&lt;br /&gt;
* $F=\{f\}$&lt;br /&gt;
&lt;br /&gt;
次に、$wA\in \kleenecl{\Sigma}V$&lt;br /&gt;
に対して以下の２条件は同値であることを示す。&lt;br /&gt;
&lt;br /&gt;
(a) $S$ から始まる&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G}\cdots \Rightarrow_{G} \alpha_{n}(=wA)\]&lt;br /&gt;
(ただし、$\alpha_{i}=w_{i}A_{i}$ for $1\leq i\leq n$)&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
&lt;br /&gt;
(b) 記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ A_{0}, A_{1}, \ldots, A_{n}\]&lt;br /&gt;
（ただし、$A_{0}=S$, $A_{n}=A$）が存在する。&lt;br /&gt;
&lt;br /&gt;
(a) $\Rightarrow$ (b) を $n$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$n=1$ のとき、&lt;br /&gt;
$w=a$ なる $a\in\Sigma\cup\{\emptyword\}$が存在し、&lt;br /&gt;
$S\mathgen aA \in R$ であるはずである。&lt;br /&gt;
このとき、$\mathautomaton{A}$ の定義から&lt;br /&gt;
$(S, a, A)\in \Delta$である。&lt;br /&gt;
ゆえに、記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A \]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n&amp;gt;1$ のとき、&lt;br /&gt;
$w=w'a$ （ただし、$a\in \Sigma\cup\{\emptyword\}$）とおく。&lt;br /&gt;
このとき、$G$ の生成規則の形から&lt;br /&gt;
$w_{n-1}=w'$, &lt;br /&gt;
$A_{n-1}\mathgen aA \in R$&lt;br /&gt;
である。&lt;br /&gt;
このとき、帰納法の仮定から&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n-1}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[S, A_{1}, \ldots, A_{n-1} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
$A_{n-1}\mathgen aA \in R$&lt;br /&gt;
であるから、&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$であることに注意すると&lt;br /&gt;
記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{1}, \ldots, A_{n-1}, A \]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
(b) $\Rightarrow$ (a) を $n$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$n=1$ のとき、&lt;br /&gt;
$w=a$ なる $a\in\Sigma\cup\{\emptyword\}$が存在し、&lt;br /&gt;
$(S, a, A)\in \Delta$ のはずである。&lt;br /&gt;
このとき、$\mathautomaton{A}$ の定義から&lt;br /&gt;
$S\mathgen aA \in R$ である。ゆえに&lt;br /&gt;
\[ S \Rightarrow_{G} aA \]&lt;br /&gt;
である。&lt;br /&gt;
&lt;br /&gt;
$n&amp;gt;1$ のとき、&lt;br /&gt;
記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[A_{0}, A_{1}, \ldots, A_{n-1}A_{n} \]&lt;br /&gt;
（ただし、$A_{0}=S$, $A_{n}=A$）が存在すると仮定する。&lt;br /&gt;
すると、&lt;br /&gt;
$w=w'a$,&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$&lt;br /&gt;
を満たす&lt;br /&gt;
$a\in\Sigma\cup\{\emptyword\}$, $w'\in\kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
すると、記号列 $w'$ による $S$ から $A_{n-1}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[A_{0}, A_{1}, \ldots, A_{n-1} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
帰納法の仮定から&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n-1}(=w'A_{n-1})\]&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$ であるから、&lt;br /&gt;
$A_{n-1} \mathgen  aA\in R$ であるので、&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G} \cdots \Rightarrow_{G} w'A_{n-1} \Rightarrow_{G} w'aA(=wA) \]&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
 &lt;br /&gt;
最後に $L=L(\mathautomaton{A})$ を示す。&lt;br /&gt;
&lt;br /&gt;
$w\in L$ を仮定する。&lt;br /&gt;
すると、導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} \Rightarrow_{G} w\]&lt;br /&gt;
が存在する。&lt;br /&gt;
$G$ の生成規則の形から&lt;br /&gt;
$w=w'a$, $\alpha_{n}=w'A_{n}$, $A_{n}\mathgen a \in R$&lt;br /&gt;
を満たす $A_{n}\in V$, $a\in \Sigma\cup\{\emptyword\}$, &lt;br /&gt;
$w'\in \kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
このとき、&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n}$ への $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, A_{1}, \ldots, A_{n} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
$A_{n}\mathgen a \in R$&lt;br /&gt;
であるから、&lt;br /&gt;
$(A_{n}, a, f)\in \Delta$&lt;br /&gt;
に注意すると、&lt;br /&gt;
記号列 $w'a=w$ による $S$ から $f$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, \ldots, A_{n}, f \]&lt;br /&gt;
が存在する。&lt;br /&gt;
ゆえに $w\in L(\mathautomaton{A})$ である。&lt;br /&gt;
&lt;br /&gt;
逆に、$w\in L(\mathautomaton{A})$ とする。&lt;br /&gt;
すると、&lt;br /&gt;
記号列 $w$ による $S$ から $f$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, A_{1}, \ldots, A_{n}, f\]&lt;br /&gt;
が存在する。&lt;br /&gt;
すると、&lt;br /&gt;
$w=w'a$, $(A_{n}, a, f) \in \Delta$&lt;br /&gt;
を満たす $a\in \Sigma\cup\{\emptyword\}$, &lt;br /&gt;
$w'\in \kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
また、&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, \ldots, A_{n} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
よって、導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} (=w'A_{n})\]&lt;br /&gt;
が存在する。&lt;br /&gt;
$(A_{n}, a, f) \in \Delta$ から&lt;br /&gt;
$A_{n}\mathgen a$ であるので、&lt;br /&gt;
$w$ の導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} \Rightarrow_{G} w (=w'a)\]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
以上より(1. $\Rightarrow$ 3.)は示された。&lt;br /&gt;
&lt;br /&gt;
(3. $\Rightarrow$ 2.)&lt;br /&gt;
$L$ を受理する有限オートマトンを&lt;br /&gt;
$\mathautomaton{A}=(\{q_{1}, q_{2}, \ldots, q_{n}\}, \Sigma, \Delta, q_{1}, \{q_{F_{0}}, q_{F_{1}}, \ldots, q_{F_{m}}\})$ とおく。&lt;br /&gt;
&lt;br /&gt;
簡単のため、以下&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\sum_{\alpha \in A} \alpha &amp;amp;= (\alpha_{0}+ \cdots + \alpha_{k}) \quad \text{（ただし、A は正規表現の空でない有限集合であって、A=\{a_{0}, \ldots, a_{k}\}）}, \\&lt;br /&gt;
Q_{ij}&amp;amp;=\{a\in \Sigma\cup\{\emptyword\} | (q_{i}, a, q_{j})\in \Delta\}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
という略記を用いる。&lt;br /&gt;
&lt;br /&gt;
正規表現 $\alpha^{(l)}_{ij}$ （ただし、$1\leq i, j \leq n$, $0\leq l \leq n$）を次のように帰納的に定める。&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\alpha^{(0)}_{ij}&amp;amp;=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
\emptyset, &amp;amp; \text{if Q_{ij}=\emptyset}, \\&lt;br /&gt;
\sum_{a\in Q_{ij}}a, &amp;amp; \text{if Q_{ij}\neq \emptyset, i\neq j}; \\&lt;br /&gt;
\kleenecl{\left(\sum_{a\in Q_{ij}}a\right)}, &amp;amp; \text{if Q_{ij}\neq \emptyset, i=j}; &lt;br /&gt;
\end{cases}\\&lt;br /&gt;
\alpha^{(l)}_{ij}&amp;amp;=\alpha^{(l-1)}_{ij} + \alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}, \quad \text{（ただし、1\leq l）}.&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
$w\in \interpret{\alpha^{(l)}_{ij}}$ であるとき、&lt;br /&gt;
記号列 $w$ による $q_{i}$ から $q_{j}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{0}}, q_{k_{1}}, \ldots, q_{k_{p}} \]&lt;br /&gt;
（ただし、$k_{0}=i$, $k_{p}=j$, $1\leq q\leq p-1$ のとき $1\leq k_{q} \leq l$）が存在することを $l$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$l=0$ については明らか。&lt;br /&gt;
&lt;br /&gt;
$l&amp;gt;0$ のとき、$w\in \interpret{\alpha^{(l)}_{ij}}$ であるとすると、&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{ij}}$ または&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}}$ である。&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{ij}}$ のときは帰納法の仮定より明らか。&lt;br /&gt;
&lt;br /&gt;
$w\in \interpret{ \alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}}$ とする。すると&lt;br /&gt;
$w_{1}\in \interpret{\alpha^{(l-1)}_{il}}$,&lt;br /&gt;
$w_{2}\in \interpret{\alpha^{(l-1)}_{ll}}$,&lt;br /&gt;
$w_{3}\in \interpret{\alpha^{(l-1)}_{lj}}$,&lt;br /&gt;
$w=w_{1}(w_{2})^{s}w_{3}$ （ただし、$s\in \mathnat$） を満たす記号列 $w_{1}$, $w_{2}$, $w_{3}$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から、&lt;br /&gt;
記号列 $w_{t}$ （$t=1, 2, 3$）による$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{t0}}, q_{k_{t1}}, \ldots, q_{k_{tp}} \]&lt;br /&gt;
（ただし、$k_{10}=i$, $k_{1p}=k_{20}=k_{2p}=k_{30}=l$, $k_{3p}=j$, $1\leq q\leq p-1$ のとき $1\leq k_{q} \leq l-1$）が存在する。&lt;br /&gt;
すると、&lt;br /&gt;
記号列 $w$ による $q_{i}$ から $q_{j}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{10}}, q_{k_{11}}, \ldots, q_{k_{1p}}, \overbrace{q_{k_{21}}, \ldots, q_{k_{2p}}}^{s}, q_{k_{31}}, \ldots, q_{k_{3p}} \]&lt;br /&gt;
が存在することがわかる。&lt;br /&gt;
&lt;br /&gt;
以上のことに注意すると、&lt;br /&gt;
\[ \alpha^{(n)}_{1F_{0}}+\alpha^{(n)}_{1F_{1}}+ \cdots + \alpha^{(n)}_{1F_{m}}\]&lt;br /&gt;
は $\mathautomaton{A}$ が受理する記号列全体である。&lt;br /&gt;
 &lt;br /&gt;
以上より(3. $\Rightarrow$ 2.)は示された。&lt;br /&gt;
{{end  |proof }}&lt;br /&gt;
&lt;br /&gt;
== Myhill-Nerodeの定理  ==&lt;br /&gt;
この節ではMyhill-Nerodeの定理について述べる．&lt;br /&gt;
この定理は正規言語の[[形式言語#def-quotient |左商]]による定式化とみなせる．&lt;br /&gt;
&lt;br /&gt;
{{theorem | type=theorem | name=Myhill-Nerodeの定理 | label=thm-Myhill-Nerode }}&lt;br /&gt;
$\Sigma$ 上の形式言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $\inverse{\kleenecl{\Sigma}}L$ は有限集合。&lt;br /&gt;
&lt;br /&gt;
{{begin  |proof | collapsible=1 }}&lt;br /&gt;
(1. $\Rightarrow$ 2.)&lt;br /&gt;
形式言語 $L$ は正規言語であると仮定する。&lt;br /&gt;
&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }} より、$L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
よって、[[有限オートマトン#prop-finite_automaton_non_emptyword | $L$ を受理する決定性有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が存在する]]。&lt;br /&gt;
&lt;br /&gt;
$\mathautomaton{A}$ は決定性有限オートマトンなので、任意の記号列 $w\in \kleenecl{\Sigma}$ に対して、次のいずれかが成り立つことに注意する．&lt;br /&gt;
# 記号列 $w\in \kleenecl{\Sigma}$ による $q_{I}$ から始まる $\mathautomaton{A}$ の状態遷移は存在しない。&lt;br /&gt;
# 記号列 $w\in \kleenecl{\Sigma}$ による $q_{I}$ から $q_{w} への$ $\mathautomaton{A}$ の状態遷移が存在し、$q_{w}$ は一意。&lt;br /&gt;
&lt;br /&gt;
前者のとき、$\inverse{w}L$ は空集合である。&lt;br /&gt;
後者のとき、決定性有限オートマトン $\mathautomaton{A}_{w}=(Q, \Sigma, \Delta, q_{w}, F)$ は $\inverse{w}L$ を受理する。&lt;br /&gt;
&lt;br /&gt;
$Q$ は有限集合であり、$q_{w} = q_{w'}$ ならば $\mathautomaton{A}_{w} = \mathautomaton{A}_{w'}$ に注意すると、&lt;br /&gt;
$\inverse{\kleenecl{\Sigma}}L$ の濃度は高々 $\mathcountfunc{Q} + 1$ である&lt;br /&gt;
（ただし、$\#$ は有限集合を受け取りそこに所属する元の個数を返す関数）。&lt;br /&gt;
&lt;br /&gt;
(2. $\Rightarrow$ 1.)&lt;br /&gt;
$\Sigma$ 上の形式言語 $L$ について $\inverse{\kleenecl{\Sigma}}L$ は有限集合と仮定する。&lt;br /&gt;
&lt;br /&gt;
集合 $\Delta_{L}$ と $F_{L}$ を次のように定義する。&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\Delta_{L} &amp;amp;:= \mathsetintension{(\inverse{w}L, a, \inverse{wa}L)}{w\in\kleenecl{\Sigma}} \\&lt;br /&gt;
F_{L} &amp;amp;:= \mathsetintension{L'\in \inverse{\kleenecl{\Sigma}}L}{\emptyword\in L'}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
$\inverse{\kleenecl{\Sigma}}L$ は有限集合であることから、&lt;br /&gt;
$\mathautomaton{A}_{L}=(\inverse{\kleenecl{\Sigma}}L, \Sigma, \Delta_{L}, L, F_{L})$&lt;br /&gt;
は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
$\mathautomaton{A}_{L}$ が受理する言語が $L$ であることを示す。&lt;br /&gt;
&lt;br /&gt;
$w\in L$ を仮定してする。$w$ が $\mathautomaton{A}_{L}$ に受理されることを示す。&lt;br /&gt;
&lt;br /&gt;
このとき、記号列 $w$ による $L$ から $\inverse{w}L$ への $\mathautomaton{A}_{L}$ の状態遷移が存在する。&lt;br /&gt;
$w\in L$ であるから、$\emptyword\in \inverse{w}L$。よって $\inverse{w}L\in F_{L}$。&lt;br /&gt;
ゆえに $w$ は $\mathautomaton{A}_{L}$ に受理される。&lt;br /&gt;
&lt;br /&gt;
$w$ が $\mathautomaton{A}_{L}$ に受理されることを仮定する。$w\in L$ を示す。&lt;br /&gt;
&lt;br /&gt;
$w$ が $\mathautomaton{A}_{L}$ に受理されることから&lt;br /&gt;
記号列 $w$ による $L$ から $\inverse{w}L$ への $\mathautomaton{A}_{L}$ の状態遷移が存在し、&lt;br /&gt;
$\inverse{w}L\in F_{L}$ である。よって $\emptyword\in \inverse{w}L$。これは $w\in L$ を意味する。&lt;br /&gt;
&lt;br /&gt;
以上より $\mathautomaton{A}_{L}$ が受理する言語は $L$ である。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
== 正規言語のクラスの閉包性 その２ ==&lt;br /&gt;
この節では正規言語のクラスが補集合演算，共通部分演算，鏡像，左商，右商によって閉じていることを述べる．&lt;br /&gt;
&amp;lt;!-- 代入についてもそのうち書く --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=prop-regular-exp }}&lt;br /&gt;
# $\kleenecl{\Sigma}$ 上の形式言語 $L$ が正規言語であるならば $\kleenecl{\Sigma}\setminus L$ も正規言語である。&lt;br /&gt;
# 形式言語 $L_{1}$, $L_{2}$ が正規言語であるならば $L_{1}\cap L_{2}$ も正規言語である。&lt;br /&gt;
# 形式言語 $L$ が正規言語であるならば $\mirrorim{L}=\mathsetintension{\mirrorim{w}}{w\in L}$ も正規言語である。&lt;br /&gt;
# $\kleenecl{\Sigma}$ 上の形式言語 $L$ が正規言語であるならば $w\in\kleenecl{\Sigma}$ による左商 $\inverse{w}L$ および右商 $L\inverse{w}$ はいずれも正規言語である。&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
1. Now writing......&lt;br /&gt;
&lt;br /&gt;
2. $L_{1}$, $L_{2}$ を正規言語とする。&lt;br /&gt;
このとき、 $\kleenecl{\Sigma}\setminus L_{1}$, $\kleenecl{\Sigma}\setminus L_{2}$ もまた正規言語である。&lt;br /&gt;
{{ref |type=prop |label=prop-regular-exp }} の 2. より $L_{1}\cap L_{2} = \left(\kleenecl{\Sigma}\setminus L_{1}\right)\cup\left(\kleenecl{\Sigma}\setminus L_{2}\right)$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
3. $L$ を正規言語とする。{{ref |type=theorem |label=thm-regularandNFA }} より、&lt;br /&gt;
$L$ を受理する有限オートマトン &lt;br /&gt;
$\mathautomaton{A}=\left(Q, \Sigma, \Delta, q_{0}, F\right)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
このとき，集合 $\mirrorim{\Delta}$ を次のように定義する．&lt;br /&gt;
\[\mirrorim{\Delta} = \mathsetintension{ \left(q_{1}, a, q_{0} \right) }{\left(q_{0}, a, q_{1} \right) \in \Delta} \]&lt;br /&gt;
&lt;br /&gt;
$q\in F$ について、&lt;br /&gt;
$\mathautomaton{A}_{q}=\left(Q, \Sigma, \Delta, q, \mathsetextension{q_{0}}\right)$ &lt;br /&gt;
とおく。このとき、$L\left(\mathautomaton{A}_{q}\right)$ は正規言語である。また、&lt;br /&gt;
&lt;br /&gt;
\[\mirrorim{L} = \bigcup_{q\in F} L\left(\mathautomaton{A}_{q}\right)\]&lt;br /&gt;
&lt;br /&gt;
である。{{ref |type=prop |label=prop-regular-exp }} の 2. より $\mirrorim{L}$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
4.&lt;br /&gt;
形式言語 $L$ は正規言語であると仮定する。&lt;br /&gt;
&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }} より、$L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
よって、[[有限オートマトン#prop-finite_automaton_non_emptyword | $L$ を受理する決定性有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が存在する]]。&lt;br /&gt;
&lt;br /&gt;
$\mathautomaton{A}$ は決定性有限オートマトンなので、任意の記号列 $w\in \kleenecl{\Sigma}$ に対して、次のいずれかが成り立つことに注意する．&lt;br /&gt;
# 記号列 $w\in \kleenecl{\Sigma}$ による $q_{I}$ から始まる $\mathautomaton{A}$ の状態遷移は存在しない。&lt;br /&gt;
# 記号列 $w\in \kleenecl{\Sigma}$ による $q_{I}$ から $q_{w} への$ $\mathautomaton{A}$ の状態遷移が存在し、$q_{w}$ は一意。&lt;br /&gt;
&lt;br /&gt;
前者のとき、$\inverse{w}L$ は空集合である。このとき、$\inverse{w}L$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
後者のとき、決定性有限オートマトン $\mathautomaton{A}_{w}=(Q, \Sigma, \Delta, q_{w}, F)$ は $\inverse{w}L$ を受理する。&lt;br /&gt;
よって、$\inverse{w}L$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
さて、&lt;br /&gt;
\[L\inverse{w}=\mirrorim{\mirrorim{L\inverse{w}}}=\mirrorim{\mirrorim{\inverse{w}}\mirrorim{L}}\]&lt;br /&gt;
であるから、$L\inverse{w}$ も正規言語である。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
==  正規言語と左線形文法 ==&lt;br /&gt;
この節では正規言語と左線形文法との関係を述べる。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=definition |name=左線形文法 |label=def-left_linear_grammar }}&lt;br /&gt;
'''左線形文法（left linear grammar）'''とは&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# $\Sigma$ と互いに素な'''変数記号（variable）'''の有限集合 $V$&lt;br /&gt;
# '''生成規則（production rule）'''と呼ばれる有限集合 $R \subseteq V \times V\kleenecl{(\Sigma)}\cup \kleenecl{(\Sigma)}$&lt;br /&gt;
# '''開始記号(start symbol)'''または'''初期記号'''と呼ばれる $S\in V$&lt;br /&gt;
&lt;br /&gt;
の４つ組$(V, \Sigma, R, S)$である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
これは、[[句構造言語#def-phrase_structure_grammar | 句構造文法]]の一種である。また、[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]の一種である。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=thm-left_linear_grammar }}&lt;br /&gt;
言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $L$ を生成する左線形文法が存在する。&lt;br /&gt;
&lt;br /&gt;
==  正規言語ではない形式言語の例  ==&lt;br /&gt;
この節では正規言語ではない[[形式言語]]の例を紹介する。&lt;br /&gt;
&lt;br /&gt;
そのような例が存在すること自体は右線形文法が[[集合の濃度#具体的な濃度 | 高々可算個]]しかないことと[[形式言語]]の濃度が[[集合の濃度#具体的な濃度 | 非加算]]であることに注意すると、明らかである。&lt;br /&gt;
しかし、その具体例を構成し、正規言語ではないことを示すことはそれほど簡単ではない。このとき強力な武器となるのが[[有限オートマトン#pumping_lemma | 反復補題]]である。&lt;br /&gt;
&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]] については当該項目を参照せよ。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0^{n}1^{n}$ という形をした記号列全体 |label=ex-counter_example_reg_lang_n }}&lt;br /&gt;
$0^{n}1^{n}$ （ただし、$n\in\mathnat$）という形の記号列全体は正規言語ではない。しかしながら[[文脈自由言語]]ではある．この記号列全体を生成する[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]は[[文脈自由言語#ex-counter_example_reg_lang_n | この例]]を参照せよ．&lt;br /&gt;
&lt;br /&gt;
'''$0^{n}1^{n}$ という形の記号列全体が正規言語ではないことの証明'''&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
背理法により示す。&lt;br /&gt;
&lt;br /&gt;
$0^{n}1^{n}$ という形の記号列全体 $L$ が正規言語であると仮定する。&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }}より、$L=L(\mathautomaton{A})$ を満たす&lt;br /&gt;
有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n_{0}=|Q|$ とする。仮定より&lt;br /&gt;
$\mathautomaton{A}$ は $w=0^{n_{0}}1^{n_{0}}$ を受理する。&lt;br /&gt;
すると$\left|w\right|&amp;gt;n_{0}$ であるから&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]] より&lt;br /&gt;
次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w=xyz$。&lt;br /&gt;
# $\left|y\right|&amp;gt;0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は&lt;br /&gt;
$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n_{0}$。&lt;br /&gt;
&lt;br /&gt;
このとき、 $xy=0^{k}$ （ただし、$0\lt k\leq n_{0}$）&lt;br /&gt;
であることに注意する。&lt;br /&gt;
すると、 $x=0^{k_{0}}$, $y=0^{k_{1}}$&lt;br /&gt;
（ただし、$0\leq k_{0}\leq k$, $0\lt k_{1}\leq k$,&lt;br /&gt;
$k=k_{0}+k_{1}$）&lt;br /&gt;
を満たす自然数 $k_{0}$, $k_{1}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
さて、$\mathautomaton{A}$ は&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]]の条件から、&lt;br /&gt;
記号列 $xz$ を受理するはずである。&lt;br /&gt;
しかし、$xz=0^{n_{0}-k_{1}}b^{n_{0}}$, $n_{0}-k_{1}\lt n_{0}$&lt;br /&gt;
であるから $xz\notin L$ である。&lt;br /&gt;
これは $L=L(\mathautomaton{A})$ に矛盾する。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$w\mirrorim{w}$ という形をした記号列全体 |label=ex-counter_example_reg_lang_mirror }}&lt;br /&gt;
$w\mirrorim{w}$（ただし、$n\in\mathnat$）という形の記号列全体は正規言語ではない。しかしながら[[文脈自由言語]]ではある．この記号列全体を生成する[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]は[[文脈自由言語#ex-counter_example_reg_lang_mirror | この例]]を参照せよ．&lt;br /&gt;
'''$w\mirrorim{w}$ という形の記号列全体が正規言語ではないことの証明'''&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
背理法により示す。&lt;br /&gt;
&lt;br /&gt;
$w\mirrorim{w}$ という形の記号列全体 $L$ が正規言語であると仮定する。&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }}より、&lt;br /&gt;
$L=L(\mathautomaton{A})$ を満たす&lt;br /&gt;
有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n_{0}=|Q|$ とする。以下 $w_{0}=0^{n_{0}}1$ とする。&lt;br /&gt;
仮定より $\mathautomaton{A}$ は $w_{0}\mirrorim{w_{0}}$ を受理する。&lt;br /&gt;
すると $\left|w_{0}\mirrorim{w_{0}}\right|&amp;gt;n_{0}$ であるから&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題 ]] より&lt;br /&gt;
次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w_{0}\mirrorim{w_{0}}=xyz$。&lt;br /&gt;
# $\left|y\right|&amp;gt;0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は&lt;br /&gt;
$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n_{0}$。&lt;br /&gt;
&lt;br /&gt;
このとき、 $xy=0^{k}$ （ただし、$0\lt k\leq n_{0}$）&lt;br /&gt;
であることに注意する。&lt;br /&gt;
すると、 $x=0^{k_{0}}$, $y=0^{k_{1}}$&lt;br /&gt;
（ただし、$0\leq k_{0}\leq k$, $0\lt k_{1}\leq k$,&lt;br /&gt;
$k=k_{0}+k_{1}$）&lt;br /&gt;
を満たす自然数 $k_{0}$, $k_{1}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
さて、$\mathautomaton{A}$ は&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題 ]] の条件から、&lt;br /&gt;
記号列 $xz$ を受理するはずである。&lt;br /&gt;
しかし、$xz=0^{n_{0}-k_{1}}1\mirrorim{w_{0}}=0^{n_{0}-k_{1}}110^{n_{0}}$, $n_{0}-k_{1}\lt n_{0}$&lt;br /&gt;
であるから $xz\notin L$ である。&lt;br /&gt;
これは $L=L(\mathautomaton{A})$ に矛盾する。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
==  参考文献 ==&lt;br /&gt;
# 新屋 良磨、オートマトン理論再考、コンピュータ ソフトウェア、2017、34 巻、3 号、p. 3_3-3_35、公開日 2017/09/25、Print ISSN 0289-6540、https://doi.org/10.11309/jssst.34.3_3、https://www.jstage.jst.go.jp/article/jssst/34/3/34_3_3/_article/-char/ja&lt;br /&gt;
# 五十嵐喜英他、『[[数理情報科学シリーズ ２４ オートマトンと形式言語の基礎]]』、牧野書店、2011&lt;br /&gt;
&lt;br /&gt;
== 関連項目 ==&lt;br /&gt;
* [[形式言語]]&lt;br /&gt;
* [[正規表現]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
|+ Chomsky階層&lt;br /&gt;
! 文法のタイプ&lt;br /&gt;
! 言語のクラス&lt;br /&gt;
! 計算モデル&lt;br /&gt;
|-&lt;br /&gt;
! タイプ0&lt;br /&gt;
| [[句構造言語]]&lt;br /&gt;
| [[Turingマシン]]&lt;br /&gt;
|-&lt;br /&gt;
! タイプ1&lt;br /&gt;
| [[文脈依存言語]]&lt;br /&gt;
| [[線形有界オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ2&lt;br /&gt;
| [[文脈自由言語]]&lt;br /&gt;
| [[プッシュダウン・オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ3&lt;br /&gt;
| [[正規言語]]&lt;br /&gt;
| [[有限オートマトン]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E5%BD%A2%E5%BC%8F%E8%A8%80%E8%AA%9E&amp;diff=8922</id>
		<title>形式言語</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E5%BD%A2%E5%BC%8F%E8%A8%80%E8%AA%9E&amp;diff=8922"/>
		<updated>2021-10-29T05:37:39Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: Kleene closure is idempotence&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{TOC |align=right |noautonum=1 }}&amp;lt;!-- 右寄せ連番無し目次をここに表示 --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Category:形式言語理論|ケイシキゲンゴ]]&lt;br /&gt;
{{begin |preamble}}&lt;br /&gt;
&amp;lt;!-- 参考文献 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 定理環境 --&amp;gt;&lt;br /&gt;
{{newtheorem |type=theorem |display=定理}}&lt;br /&gt;
{{newtheorem |type=lemma |display=補題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=definition |display=定義 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=prop |display=命題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=example |display=例 |family=theorem }}&lt;br /&gt;
&amp;lt;!-- MathJax commands --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\newcommand{\mathsetextension}[1]{%&lt;br /&gt;
\left\{ #1 \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathsetintension}[2]{%&lt;br /&gt;
\left\{ #1 \left| #2 \right.\right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathof}[2]{%&lt;br /&gt;
\mathop{#1}\left(#2\right)%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathderiv}{\mathrel{\mathop{\Rightarrow}}^{*}}&lt;br /&gt;
\newcommand{\mathgen}{\rightsquigarrow}&lt;br /&gt;
\newcommand{\mathgenfun}[1]{\mathbf{#1}}&lt;br /&gt;
\newcommand{\mirrorim}[1]{\overleftarrow{#1}}&lt;br /&gt;
\newcommand{\emptyword}{\varepsilon}&lt;br /&gt;
\newcommand{\kleenecl}[1]{{#1}^{*}}&lt;br /&gt;
\newcommand{\interpret}[1]{[\![#1]\!]}&lt;br /&gt;
\newcommand{\mathautomaton}[1]{\mathcal{#1}}&lt;br /&gt;
\newcommand{\mathnat}{\mathbb{N}}&lt;br /&gt;
\newcommand{\qed}{\blacksquare}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
{{end |preamble}}&lt;br /&gt;
'''形式言語（formal language）'''とは有限な記号列の集合である。&lt;br /&gt;
&lt;br /&gt;
==  形式言語の導入 ==&lt;br /&gt;
この節においては、形式言語の定義を行う。&lt;br /&gt;
{{theorem |type=definition |name=記号列}}&lt;br /&gt;
'''記号集合（alphabet）'''とは'''記号（letter）'''の空でない集合である。&lt;br /&gt;
通常、形式言語を考える際は記号集合に有限性を課すことが多い。&lt;br /&gt;
本稿においても記号集合は特に断らない限り有限であるとする。&lt;br /&gt;
&lt;br /&gt;
記号集合 $\Sigma$ の元を有限個並べたものを'''語（word）'''や'''有限記号列（finite string）'''、&lt;br /&gt;
また単に'''記号列（string）'''などという。&lt;br /&gt;
以下では記号列で統一する。&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ の'''長さ（length）'''とは記号列を構成する&lt;br /&gt;
記号の個数である。&lt;br /&gt;
$w$ の長さを $\left|w\right|$ とあらわす。&lt;br /&gt;
&lt;br /&gt;
長さ $0$ の記号列を'''空列（empty string または empty word）'''という。&lt;br /&gt;
以下 $\emptyword$ によって空列を表す。&lt;br /&gt;
&lt;br /&gt;
{{id |id=id_concatenation}}&lt;br /&gt;
{{theorem |type=definition |name=連接}}&lt;br /&gt;
記号列 $a_{1}\dots a_{n}$ と $b_{1}\dots b_{m}$ の'''連接（concatenation）'''とは&lt;br /&gt;
記号列 $a_{1}\dots a_{n}b_{1}\dots b_{m}$ である。&lt;br /&gt;
&lt;br /&gt;
$w_{1}$ と $w_{2}$ が記号列を表すとき、$w_{1}$ と $w_{2}$ の連接を&lt;br /&gt;
$w_{1}\cdot w_{2}$ または単に $w_{1}w_{2}$ で表す。&lt;br /&gt;
&lt;br /&gt;
同じ記号列 $w$ を $n$ 個並べた記号列を $w^{n}$ と表す。形式的には記号列 $w$ と自然数 $n$ に対して、&lt;br /&gt;
# $w^{0}=\emptyword$&lt;br /&gt;
# $w^{n+1}=ww^{n}$&lt;br /&gt;
&lt;br /&gt;
と帰納的に定義する。&lt;br /&gt;
&lt;br /&gt;
同様にして記号列の集合 $L_{1}$, $L_{2}$ についてその連接を&lt;br /&gt;
\[L_{1}L_{2}= \mathsetintension{wv}{w\in L_{1}, v\in L_{2}} \]&lt;br /&gt;
と定義する。&lt;br /&gt;
&lt;br /&gt;
また，記号列の集合 $L$ に対して、$L^{n}$ （$n$ は自然数）を&lt;br /&gt;
# $L^{0}=\mathsetextension{\emptyword}$&lt;br /&gt;
# $L^{n+1}=\mathsetintension{wv}{w\in L, v\in L^{n}}$&lt;br /&gt;
&lt;br /&gt;
と帰納的に定義する。&lt;br /&gt;
&lt;br /&gt;
{{id |id=id_kleeneclosure}}&lt;br /&gt;
{{theorem |type=definition |name=Kleene閉包}}&lt;br /&gt;
記号列の集合 $L$ の'''Kleene閉包（Kleene closure）''' $\kleenecl{L}$ は&lt;br /&gt;
\[ \kleenecl{L} = \bigcup_{n=0}^{\infty} L^{n} \]&lt;br /&gt;
と定義される。&lt;br /&gt;
&lt;br /&gt;
記号集合 $\Sigma$ のKleene閉包 $\kleenecl{\Sigma}$ は、&lt;br /&gt;
$\Sigma$ の元を長さ $1$ の記号列とみなすことで自然に定義される。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=形式言語}}&lt;br /&gt;
記号集合 $\Sigma$ 上の'''形式言語（formal language）'''とは&lt;br /&gt;
$\kleenecl{\Sigma}$ の部分集合である。&lt;br /&gt;
&lt;br /&gt;
特に誤解のない限り、形式言語のことを単に'''言語（language）'''と呼ぶこともある。&lt;br /&gt;
&lt;br /&gt;
==  形式言語を扱う上でよく使われる演算など  ==&lt;br /&gt;
この節においては形式言語を考える際によく使われる演算などの定義・解説を行う。&lt;br /&gt;
以下では，特に断りのない限り記号集合 $\Sigma$ を固定する。&lt;br /&gt;
===  連接 ===&lt;br /&gt;
'''連接'''について述べる。&lt;br /&gt;
{{theorem |type=definition |name=連接}}&lt;br /&gt;
上記の[[#id_concatenation|連接の節]]を参照。&lt;br /&gt;
{{theorem |type=example |name=連接}}&lt;br /&gt;
* 記号列''math''と記号列''pedia''の連接は''mathpedia''である。&lt;br /&gt;
* 記号列''no''と記号列''where''の連接は''nowhere''である。&lt;br /&gt;
* 記号列''counter''と記号列''example''の連接は''counterexample''である。&lt;br /&gt;
* 記号列''ultra''と記号列''seven''の連接は''ultraseven''である。&lt;br /&gt;
* 記号列''bicycle''と記号列''repairman''の連接は''bicyclerepairman''である。&lt;br /&gt;
* 記号列 $\emptyword$ と記号列 $\emptyword$ の連接は $\emptyword$ である。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |name=連接の性質}}&lt;br /&gt;
* 任意の記号列 $w$ に対して、$w\emptyword=\emptyword w=w$ である。 &lt;br /&gt;
&lt;br /&gt;
====  連接とモノイド ====&lt;br /&gt;
* 連接 $\cdot$ を $\kleenecl{\Sigma}$ 上の演算とみなすことで、$(\kleenecl{\Sigma}, \cdot)$&lt;br /&gt;
は[[モノイド]]になる。単位元は $\emptyword$ である。&lt;br /&gt;
** 特に $(\kleenecl{\Sigma}, \cdot)$ を '''$\Sigma$ が生成する自由モノイド'''という。&lt;br /&gt;
&lt;br /&gt;
=== Kleene閉包 ===&lt;br /&gt;
'''Kleene閉包（Kleene closure）''' について述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=Kleene閉包}}&lt;br /&gt;
上記の[[#id_kleeneclosure|Kleene閉包の節]]を参照。&lt;br /&gt;
{{theorem |type=example |name=Kleene閉包}}&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |name=Kleene閉包の性質}}&lt;br /&gt;
* 任意の記号列の集合 $L$ に対して、$\kleenecl{\kleenecl{L}}=\kleenecl{L}$ である。 &lt;br /&gt;
&lt;br /&gt;
===  接頭語と接尾語 ===&lt;br /&gt;
形式言語の'''接頭語'''と'''接尾語'''について述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=接頭語、接尾語}}&lt;br /&gt;
$w=a_{0}\ldots a_{n}$ を記号列とする&lt;br /&gt;
（ただし、すべての $i$ に対して $a_{i}$ は記号であって、$a_{i}\neq \emptyword$ とする）。&lt;br /&gt;
&lt;br /&gt;
$w_{p}=a_{0}\ldots a_{n_{0}}$ （ただし、$0\leq n_{0}\leq n$）であるとき、&lt;br /&gt;
$w_{p}$ を $w$ の'''接頭語（prefix）'''と言う。&lt;br /&gt;
$w$ の接頭語 $w_{p}$ が $|w_{p}|&amp;lt;|w|$ を満たすとき、$w_{p}$ を'''真の接頭語（proper prefix）'''と言う。&lt;br /&gt;
&lt;br /&gt;
$w_{s}=a_{n_{0}}\ldots a_{n}$ （ただし、$0\leq n_{0}\leq n$）であるとき、&lt;br /&gt;
$w_{s}$ を $w$ の'''接尾語（suffix）'''と言う。&lt;br /&gt;
$w$ の接尾語 $w_{s}$ が $|w_{s}|&amp;lt;|w|$ を満たすとき、$w_{s}$ を'''真の接尾語（proper suffix）'''と言う。&lt;br /&gt;
&lt;br /&gt;
===  鏡像  ===&lt;br /&gt;
'''鏡像'''について述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=鏡像}}&lt;br /&gt;
$\kleenecl{\Sigma}$ の元 $w$ の&lt;br /&gt;
'''鏡像（mirror image）''' $\mirrorim{w}$ を次のように帰納的に定義する。&lt;br /&gt;
&lt;br /&gt;
# $w=\emptyword$ のとき、$\mirrorim{w}=\emptyword$ である。&lt;br /&gt;
# $w=av$ のとき、$\mirrorim{w}=\mirrorim{v}a$ である。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=鏡像}}&lt;br /&gt;
* 記号列''mathpedia''の鏡像は''aidephtam''である。&lt;br /&gt;
* 記号列''tomato''の鏡像は''otamot''である。&lt;br /&gt;
* 記号列''dog''の鏡像は''god''である。&lt;br /&gt;
* 記号列''top''の鏡像は''pot''である。&lt;br /&gt;
* 記号列''lol''の鏡像は''lol''である。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |name=鏡像の性質}}&lt;br /&gt;
* $\mirrorim{\mirrorim{w}}=w$&lt;br /&gt;
&lt;br /&gt;
===  商 ===&lt;br /&gt;
形式言語の'''商'''について述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem | type=definition | name=商 | label=def-quotient}}&lt;br /&gt;
$\Sigma$ 上の形式言語 $L$、文字列 $w \in \kleenecl{\Sigma}$ に対して&lt;br /&gt;
$L$ の $w$ による'''左商（left quotient）'''を&lt;br /&gt;
\[w^{-1}L:= \mathsetintension{v \in \kleenecl{\Sigma}}{wv \in L} \]&lt;br /&gt;
と定める。&lt;br /&gt;
&lt;br /&gt;
また、$L$ の $w$ による'''右商（right quotient）'''を&lt;br /&gt;
\[Lw^{-1}:=\mathsetintension{v \in \kleenecl{\Sigma}}{vw \in L} \]&lt;br /&gt;
と定める。&lt;br /&gt;
&lt;br /&gt;
形式言語 $L$ の左商全体の集合を ${\kleenecl{\Sigma}}^{-1}L$ 右商全体の集合を $L{\Sigma^{*}}^{-1}$ で表す。つまり、&lt;br /&gt;
\begin{align*}%&lt;br /&gt;
{\kleenecl{\Sigma}}^{-1}L &amp;amp;:= \mathsetintension{w^{-1}L}{w \in \kleenecl{\Sigma}} \\&lt;br /&gt;
L{\kleenecl{\Sigma}}^{-1} &amp;amp;:= \mathsetintension{Lw^{-1}}{w \in \kleenecl{\Sigma}}&lt;br /&gt;
\end{align*}&lt;br /&gt;
である。&lt;br /&gt;
&lt;br /&gt;
===  （言語の）数え上げ関数と母関数 ===&lt;br /&gt;
形式言語の'''数え上げ関数'''と'''母関数'''について述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=数え上げ関数}}&lt;br /&gt;
形式言語 $L$ の'''数え上げ関数（counting function）''' $\Gamma_{L}:{\mathnat\to\mathnat}$ とは&lt;br /&gt;
\[\Gamma_{L}(n)=\mathof{\#}{\mathsetintension{w\in L}{|w|=n}}\]&lt;br /&gt;
で定義される関数である（ただし、$\#$ は有限集合を受け取りそこに所属する元の個数を返す関数）。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=母関数}}&lt;br /&gt;
形式言語 $L$ の'''母関数（generating function）'''とは形式的べき級数&lt;br /&gt;
\[\mathof{\mathgenfun{L}}{z}:=\sum_{n\geq 0} \mathof{\Gamma_{L}}{n}z^{n}\]&lt;br /&gt;
のことである（ただし、$\Gamma_{L}$ は $L$ の数え上げ関数）。&lt;br /&gt;
&lt;br /&gt;
==  参考文献 ==&lt;br /&gt;
# 新屋 良磨、オートマトン理論再考、コンピュータ ソフトウェア、2017、34 巻、3 号、p. 3_3-3_35、公開日 2017/09/25、Print ISSN 0289-6540、https://doi.org/10.11309/jssst.34.3_3、https://www.jstage.jst.go.jp/article/jssst/34/3/34_3_3/_article/-char/ja&lt;br /&gt;
# 五十嵐喜英他、『[https://www.amazon.co.jp/gp/product/4434158783/infinitytopoi-22  数理情報科学シリーズ ２４ オートマトンと形式言語の基礎]』、牧野書店、2011&lt;br /&gt;
&lt;br /&gt;
==  関連項目 ==&lt;br /&gt;
* 主要な[[形式言語]]のクラス&lt;br /&gt;
** [[正規言語]]&lt;br /&gt;
*** [[正規表現]]&lt;br /&gt;
** [[文脈自由言語]]&lt;br /&gt;
*** [[BNF記法]]&lt;br /&gt;
** [[文脈依存言語]]&lt;br /&gt;
** [[句構造言語]]&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E6%9C%89%E9%99%90%E3%82%AA%E3%83%BC%E3%83%88%E3%83%9E%E3%83%88%E3%83%B3&amp;diff=8668</id>
		<title>有限オートマトン</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E6%9C%89%E9%99%90%E3%82%AA%E3%83%BC%E3%83%88%E3%83%9E%E3%83%88%E3%83%B3&amp;diff=8668"/>
		<updated>2021-09-30T17:37:38Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: Add  a corollary of pumping lemma&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:形式言語理論|ユウゲンオートマトン]]&lt;br /&gt;
[[Category:計算理論|ユウゲンオートマトン]]&lt;br /&gt;
{{begin |preamble}}&lt;br /&gt;
&amp;lt;!-- 参考文献 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 定理環境 --&amp;gt;&lt;br /&gt;
{{newtheorem |type=theorem |display=定理}}&lt;br /&gt;
{{newtheorem |type=lemma |display=補題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=definition |display=定義 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=prop |display=命題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=example |display=例 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=cor |display=系 |family=theorem }}&lt;br /&gt;
&amp;lt;!-- MathJax commands --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\newcommand{\mathsetextension}[1]{%&lt;br /&gt;
\left\{ #1 \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathsetintension}[2]{%&lt;br /&gt;
\left\{ #1 \left| #2 \right. \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathof}[2]{%&lt;br /&gt;
\mathop{#1}\left(#2\right)%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathpowerset}[1]{%&lt;br /&gt;
2^{#1}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathderiv}{\mathrel{\mathop{\Rightarrow}}^{*}}&lt;br /&gt;
\newcommand{\mathgen}{\rightsquigarrow}&lt;br /&gt;
\newcommand{\emptyword}{\varepsilon}&lt;br /&gt;
\newcommand{\kleenecl}[1]{{#1}^{*}}&lt;br /&gt;
\newcommand{\interpret}[1]{[\![#1]\!]}&lt;br /&gt;
\newcommand{\mathautomaton}[1]{\mathcal{#1}}&lt;br /&gt;
\newcommand{\mathnat}{\mathbb{N}}&lt;br /&gt;
\newcommand{\qed}{\blacksquare}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
{{end |preamble}}&lt;br /&gt;
'''有限オートマトン（finite automaton）'''とは[[正規言語]]を受理する計算モデルである。&lt;br /&gt;
&lt;br /&gt;
以下、項目[[形式言語]]において定められている言語上の演算などについては特に断らず用いる。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{TOC |align=right |noautonum=1 }}&amp;lt;!-- 右寄せ連番無し目次をここに表示 --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  有限オートマトンの導入  ==&lt;br /&gt;
この節では'''有限オートマトン'''やその周辺の重要な諸概念を定義する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=有限オートマトン |label=def-finite_automaton }}&lt;br /&gt;
'''有限オートマトン（finite automaton）'''とは&lt;br /&gt;
# '''状態集合(a set of states)'''と呼ばれる有限集合 $Q$&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# '''遷移関係(transition relation)'''と呼ばれる集合 $\Delta \subseteq Q\times (\Sigma \cup \mathsetextension{\emptyword})  \times Q$ &lt;br /&gt;
# '''開始状態(initial state)'''と呼ばれる $q_{I}\in Q$&lt;br /&gt;
# '''受理状態(accepting state)'''や'''最終状態(final state)'''と呼ばれる集合 $F\subseteq Q$&lt;br /&gt;
&lt;br /&gt;
の５つ組 $(Q, \Sigma, \Delta, q_{I}, F)$ である。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=有限オートマトンの受理する言語 |label=def-language_accepted_finite_automaton }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ と&lt;br /&gt;
記号列 $w \in \kleenecl{\Sigma}$ について、&lt;br /&gt;
次の２条件を満たす状態の列 $q_{0}, q_{1}, \dots, q_{n}$ を&lt;br /&gt;
'''記号列 $w$ による $q_{0}$ から $q_{n}$ への $\mathautomaton{A}$ の状態遷移'''と言う。&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{n}$ （ただし、各 $i=1, \dots, n$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）&lt;br /&gt;
# すべての $i\in \{1, \dots n\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ による $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
$q_{0}, q_{1}, \dots, q_{n}$ であって $q_{0} = q_{I}$, $q_{n}\in F$ を満たすものが存在するとき、&lt;br /&gt;
「有限オートマトン $\mathautomaton{A}$ が&lt;br /&gt;
'''記号列 $w$ を受理する'''」と言う。&lt;br /&gt;
&lt;br /&gt;
有限オートマトン $\mathautomaton{A}$ が受理する&lt;br /&gt;
記号列全体のことを '''有限オートマトン $\mathautomaton{A}$ の受理する言語'''&lt;br /&gt;
と言い、$L(\mathautomaton{A})$ と書く。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=等価な有限オートマトン |label=def-equivalence_finite_automaton }}&lt;br /&gt;
'''有限オートマトン $\mathautomaton{A}$ と 有限オートマトン $\mathautomaton{A'}$ が等価である'''とは、&lt;br /&gt;
$L(\mathautomaton{A})=L(\mathautomaton{A'})$&lt;br /&gt;
を満たすことである。&lt;br /&gt;
&lt;br /&gt;
==  有限オートマトンの例 ==&lt;br /&gt;
この節では有限オートマトンの例を紹介する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列全体を受理する有限オートマトン |label=ex-FA_all }}[[ファイル:Fig FA all.svg|サムネイル]]&lt;br /&gt;
\begin{align*}Q&amp;amp;=\mathsetextension{q_{I}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{I}), (q_{I}, 1, q_{I})}\\ F&amp;amp;= \mathsetextension{q_{I}}\end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。また、$\mathautomaton{A}$ は決定性有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
$0$ と $1$ からなる有限記号列をすべて受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ のみを受理する有限オートマトン |label=ex-0-1-only }}[[ファイル:Fig- 0-1-only.svg|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{1}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{2}), (q_{1}, 1, q_{2})}\\ F&amp;amp;=\mathsetextension{q_{1}} \end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は$0$ と $1$ のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$ をちょうど3個含む記号列全体を受理する有限オートマトン |label=ex-only-three-one}}[[ファイル:Fig FA only three one.svg|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}, q_{3}} \\ \Sigma&amp;amp;=\mathsetextension{0, 1} \\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{I}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{2}), (q_{2}, 0, q_{2}), (q_{2}, 1, q_{3}), (q_{3}, 0, q_{3})} \\ F&amp;amp;=\mathsetextension{q_{3}} \end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$ をちょうど3個含む記号列のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列全体を受理する有限オートマトン その1 |label=ex-one-less-than-three-1 }}[[ファイル:Fig FA one less than three 1.svg|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}, q_{3}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{I}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{2}), (q_{2}, 0, q_{2}), (q_{2}, 1, q_{3}), (q_{3}, 0, q_{3}), (q_{I}, \emptyword, q_{3}), (q_{1}, \emptyword, q_{3}), (q_{2}, \emptyword, q_{3})}\\ F&amp;amp;= \mathsetextension{q_{3}}\end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列全体を受理する有限オートマトン その2 |label=ex-one-less-than-three-2 }}[[ファイル:Fig FA one less than three 2.png|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}, q_{3}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, \emptyword, q_{I}), (q_{I}, 0, q_{I}), (q_{I}, 0, q_{1}), (q_{I}, 0, q_{2}), (q_{I}, 0, q_{3}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{2}), (q_{2}, 0, q_{2}), (q_{2}, 1, q_{3})}\\ F&amp;amp;= \mathsetextension{q_{I},q_{3}}\end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ も&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=自然数の二進表現全体を受理する有限オートマトン |label=ex-bi }}[[ファイル:Fig FA bi.svg|サムネイル]]&lt;br /&gt;
\begin{align*}Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{2}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{1})}\\ F&amp;amp;= \mathsetextension{q_{1}, q_{2}}\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
自然数の二進表現のみを受理する。&lt;br /&gt;
&lt;br /&gt;
==  正規言語、正規表現との関係 ==&lt;br /&gt;
この節では有限オートマトン、[[正規言語]]および[[正規表現]]の関係を述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=theorem |label=thm-Regular_Lang }}&lt;br /&gt;
言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $L=\interpret{\alpha}$ なる正規表現 $\alpha$ が存在する。&lt;br /&gt;
# $L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
&lt;br /&gt;
この定理の証明は、項目[[正規言語#thm-regularandNFA|正規言語]]を参照せよ。&lt;br /&gt;
&lt;br /&gt;
==  反復補題（ポンピング補題） ==&lt;br /&gt;
この節では'''反復補題（pumping lemma）'''について述べる&amp;lt;ref name=&amp;quot;THE-BOOK&amp;quot;&amp;gt;Martin Aigner,Guenter M. Ziegler,Karl H. Hofmann, [&amp;quot;Proofs from THE BOOK&amp;quot;], Springer, 2004 によると、一般に定理が'''補題'''と呼ばれる条件は「広範囲の応用例を持つ」「一見して完璧に明らか」「証明も含めて美しい」の三条件を満たすことである。&amp;lt;/ref&amp;gt;。&lt;br /&gt;
反復補題は'''ポンピング補題'''や'''ポンプ補題'''と呼ばれることもある。&lt;br /&gt;
&lt;br /&gt;
反復補題は[[正規言語#not_regular_lang|ある記号列の集合が正規言語ではない証明]]などに用いられる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=lemma |name=反復補題 |label=pumping_lemma }}&lt;br /&gt;
状態集合の大きさが $n$ の有限オートマトン $\mathautomaton{A}$ に記号列 $w$ が受理されるとする。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|\gt n$ であるとき、次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w=xyz$。&lt;br /&gt;
# $\left|y\right|\gt 0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n$。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- '''{{ref |type=lemma |label=pumping_lemma }}の証明''' --&amp;gt;&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ に $w$ が受理されるとする。&lt;br /&gt;
以下 $n:=\left|Q\right|$, $l:=\left|w\right|$, $l\gt n$ とする。&lt;br /&gt;
&lt;br /&gt;
有限オートマトン $\mathautomaton{A}$ に $w$ が受理されることから、&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{k}$ （ただし、各 $i=1, \dots, k$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）。&lt;br /&gt;
# すべての $i\in \{1, \dots, k\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$。&lt;br /&gt;
# $q_{0}=q_{I}$, $q_{k}\in F$。&lt;br /&gt;
&lt;br /&gt;
を満たす状態の列 $q_{0}, q_{1}, \dots, q_{k}$ と記号の列 $a_{1}, a_{2}, \dots, a_{k}$が存在する&lt;br /&gt;
（ただし、$k\geq l$）。&lt;br /&gt;
&lt;br /&gt;
$l\gt n$ から長さが $n$ の $w$ の[[形式言語#prefix_suffix|接頭語]] $w_{0}$ が存在する。&lt;br /&gt;
すると、$q_{0}, q_{1}, \dots, q_{k}$&lt;br /&gt;
の部分列であって、$w_{0}$ による $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
$$q_{0}, q_{1}, \dots, q_{k_{0}}$$&lt;br /&gt;
が存在する（ただし $n\leq k_{0}\leq k$）。&lt;br /&gt;
&lt;br /&gt;
すると、鳩ノ巣原理より&lt;br /&gt;
# $(q_{i-1}, a_{i}, q_{i})$, $(q_{i+j-1}, a_{i+j}, q_{i+j})\in \Delta$&lt;br /&gt;
（ただし、$a_{i}\neq\emptyword$, $a_{i+j}\neq\emptyword$）&lt;br /&gt;
# $q_{i}=q_{i+j}$&lt;br /&gt;
&lt;br /&gt;
という条件を満たす自然数の組 $(i, j)$ （ただし $0\leq i\leq k_{0}$, $0&amp;lt; j\leq k_{0}$）が少なくとも１つ存在する。&lt;br /&gt;
以下その $i$, $j$ を固定する。&lt;br /&gt;
&lt;br /&gt;
\begin{align*} x&amp;amp;:=a_{1}a_{2}\ldots a_{i}, \\ y&amp;amp;:=a_{i+1}a_{i+2}\ldots a_{i+j}, \\ z&amp;amp;:=a_{i+j+1}a_{i+j+2}\ldots a_{k},\end{align*}&lt;br /&gt;
とすると、$w=xyz$ である。また、$a_{i+j}\neq\emptyword$ であるから $\left|y\right|\gt 0$。&lt;br /&gt;
さらに、定義より $xy$ は $w_{0}$ の部分列であるから、$|xy|\leq n$。&lt;br /&gt;
&lt;br /&gt;
任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ が $\mathautomaton{A}$ に受理されることを示す。&lt;br /&gt;
&lt;br /&gt;
以下、記号列 $x$, $y$, $z$ による $\mathautomaton{A}$ の状態遷移をそれぞれ&lt;br /&gt;
\begin{align*}Q_{x}&amp;amp;=q_{0}, \dots, q_{i}, \\ Q_{y}&amp;amp;=q_{i+1}, \dots, q_{i+j}, \\ Q_{z}&amp;amp;=q_{i+j+1}, \dots, q_{k}, \end{align*}&lt;br /&gt;
と書くことにする。&lt;br /&gt;
&lt;br /&gt;
$m=0$ のときを示す。&lt;br /&gt;
&lt;br /&gt;
$q_{i}=q_{i+j}$ に注意すると、$(q_{i}, a_{i+j+1}, q_{i+j+1})\in \Delta$ である。&lt;br /&gt;
よって、&lt;br /&gt;
$$Q_{x}Q_{z}=q_{0}, \dots, q_{i}, q_{i+j+1}, \dots, q_{k}$$&lt;br /&gt;
は記号列 $xz$ による $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
$q_{0}=q_{I}$, $q_{k}\in F$ であるから、$xz$($=xy^{0}z$) は $\mathautomaton{A}$ に受理される。&lt;br /&gt;
&lt;br /&gt;
$m\gt 0$ のときを示す。&lt;br /&gt;
&lt;br /&gt;
$q_{i}=q_{i+j}$ に注意すると、$(q_{i+j}, a_{i+j+1}, q_{i+1})\in \Delta$ である。&lt;br /&gt;
$$Q_{x}\overbrace{Q_{y}\dots Q_{y}}^{m\text{個}}Q_{z}=q_{0}, \dots, q_{i}, \overbrace{q_{i+1}, \dots, q_{i+j}, q_{i+1}, \dots, q_{i+j}}^{\text{$q_{i+1}, \dots, q_{i+j}$ の反復が $m$回}}, q_{i+j+1}, \dots, q_{k}$$&lt;br /&gt;
は記号列 $xy^{m}z$ による $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
$q_{0}=q_{I}$, $q_{k}\in F$ であるから、$xy^{m}z$ は $\mathautomaton{A}$ に受理される。 &lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
===  反復補題（ポンピング補題）の系 ===&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=cor |label=cor_of_pumping_lemma_length }}&lt;br /&gt;
状態集合の大きさが $n$ の有限オートマトン $\mathautomaton{A}$ について、有限オートマトン $\mathautomaton{A}$ に受理される記号列が存在するとき、長さ $n$ 未満の記号列で有限オートマトン $\mathautomaton{A}$ に受理される記号列が存在する。&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
状態集合の大きさが $n$ の有限オートマトン $\mathautomaton{A}$ について、記号列 $w$ が有限オートマトン $\mathautomaton{A}$ に受理されると仮定する。&lt;br /&gt;
&lt;br /&gt;
$|w| \lt n$ のときは明らか。$|w| \geq n$ と仮定する。すると反復補題から，次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w=xyz$。&lt;br /&gt;
# $\left|y\right|\gt 0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n$。&lt;br /&gt;
&lt;br /&gt;
このとき、$xz$ は $\mathautomaton{A}$ に受理される。このとき、$|w| \gt |xz|$ に注意する。$|xz| \lt n$ ならば、$xz$ が求める記号列である。そうではないとき、$w = xz$ として、同様に $\mathautomaton{A}$ に受理される記号列で $|w|$ より長さの短いものが存在することが、反復補題によりわかる。この操作は $|w| \lt n$  となるまで、何度でも行うことができるから、長さ $n$ 未満の記号列で有限オートマトン $\mathautomaton{A}$ に受理される記号列が存在することがわかる。&lt;br /&gt;
&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
==  $\emptyword$ 動作なしの有限オートマトン ==&lt;br /&gt;
この項では&lt;br /&gt;
'''$\emptyword$ 動作なしの有限オートマトン(finite automaton without $\emptyword$-transitions)'''&lt;br /&gt;
について述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=$\emptyword$ 動作なしの有限オートマトン |label=def-finite_automaton_non_emptyword }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が&lt;br /&gt;
次の条件を満たすとき、&lt;br /&gt;
'''$\mathautomaton{A}$ は $\emptyword$ 動作なしの有限オートマトン(finite automaton without $\emptyword$-transitions)である'''と言う:&lt;br /&gt;
* $(q, a, q')\in \Delta$ に対して $a=\emptyword$ ならば $q=q'$&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=prop-finite_automaton_non_emptyword }}&lt;br /&gt;
任意の有限オートマトンに対して、それと等価な $\emptyword$ 動作なしの有限オートマトンが存在する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ==== {{ref |type=prop |label=prop-finite_automaton_non_emptyword }} の証明 ==== --&amp;gt;&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ を有限オートマトンとする。&lt;br /&gt;
&amp;lt;!-- $\mathautomaton{A}$ が $\emptyword$ 動作なしの有限オートマトンであれば、示すことはない。 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$q\in Q$, $a\in \Sigma$ にたいして、集合 $\mathof{C}{q, a}$ を次のように定める:&lt;br /&gt;
\[ \mathof{C}{q, a}=\mathsetintension{(q, a, q')}{ \text{記号列 $a$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する}}. \]&lt;br /&gt;
&lt;br /&gt;
$\mathof{C_{\emptyword}}{q_{I}}$ を次のように定義する:&lt;br /&gt;
\[\mathof{C_{\emptyword}}{q_{I}}=\mathsetintension{q'\in Q}{\text{記号列 } \emptyword \text{ による } q_{I} \text{ から } q' \text{ への } \mathautomaton{A} \text{ の状態遷移が存在する} }. \]&lt;br /&gt;
&lt;br /&gt;
次のように集合 $\Delta'_{0}$, $\Delta'_{\emptyword}$ および $\Delta'$ を次のように定める:&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\Delta'_{0}&amp;amp;=\bigcup_{q\in Q, a\in \Sigma} \mathof{C}{q, a}, \\&lt;br /&gt;
\Delta'_{\emptyword}&amp;amp;=\mathsetintension{(q, \emptyword, q)}{q\in Q}, \\&lt;br /&gt;
\Delta'&amp;amp;=\Delta'_{0}\cup \Delta'_{\emptyword}.&lt;br /&gt;
\end{align*}&lt;br /&gt;
また、&lt;br /&gt;
\[F'=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
F, &amp;amp; \text{if } F\cap\mathof{C_{\emptyword}}{q_{I}}=\emptyset, \\&lt;br /&gt;
F \cup \mathsetextension{q_{I}}, &amp;amp; \text{if } F\cap\mathof{C_{\emptyword}}{q_{I}}\neq\emptyset.&lt;br /&gt;
\end{cases}&lt;br /&gt;
\]&lt;br /&gt;
とする。&lt;br /&gt;
このとき$\mathautomaton{A}'=(Q, \Sigma, \Delta', q_{I}, F')$ は $\emptyword$ 動作なしの有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
記号列 $w\neq\emptyword$ に対して、以下が同値であることを示す:&lt;br /&gt;
# 記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する&lt;br /&gt;
# 記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在する&lt;br /&gt;
&lt;br /&gt;
次のように集合 $\Delta_{\emptyword}$ および $\Delta_{0}$  を次のように定める。&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\Delta_{\emptyword}&amp;amp;=\mathsetintension{(q, a, q')\in \Delta}{a=\emptyword\text{ かつ }q\neq q'}, \\&lt;br /&gt;
\Delta_{0}&amp;amp;=\Delta\setminus\Delta_{\emptyword}.&lt;br /&gt;
\end{align*}&lt;br /&gt;
以下 $\Delta_{0} \subseteq \Delta'_{0}$ に注意する。&lt;br /&gt;
&lt;br /&gt;
1 $\Rightarrow$ 2:&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在すると仮定する。&lt;br /&gt;
$\left|w\right|$ に対する帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|=1$ のとき:&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在することから $(q, w, q')\in \mathof{C}{q, w}$。&lt;br /&gt;
よって、$(q, w, q')\in \Delta'$。よって、$q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|\gt 1$ のとき: $w=w_{0}a$ とおく（ただし、$a\in\Sigma$）。&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在することから&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{k}$ （ただし、各 $i=1, \dots, k$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）。&lt;br /&gt;
# すべての $i\in \{1, \dots, k\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$。&lt;br /&gt;
# $q_{0}=q$, $q_{k}=q'$。&lt;br /&gt;
&lt;br /&gt;
を満たす状態の列 $q_{0}, q_{1}, \dots, q_{k}$ と記号の列 $a_{1}, a_{2}, \dots, a_{k}$が存在する&lt;br /&gt;
（ただし、$k\geq l$）。&lt;br /&gt;
このとき、$w_{0}=a_{1}\dots a_{k_{0}}$, $a=a_{k_{0}+1}$, $1\leq k_{0}\lt k$ を満たす $k_{0}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
すると、$q=q_{0}, q_{1}, \dots, q_{k_{0}}$ は記号列 $w_{0}$ による $q$ から $q_{k_{0}}$ への $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
また、$q_{k_{0}}, q_{k_{0}+1}, \dots, q_{k}=q'$ は記号列 $a$ による $q_{k_{0}}$ から $q'$ への $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から&lt;br /&gt;
記号列 $w_{0}$ による $q$ から $q_{k_{0}}$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
また、記号列 $a$ による $q_{k_{0}}$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在することから $(q_{k_{0}}, a, q')\in \mathof{C}{q_{k_{0}}, a}$。ゆえに、記号列 $w=w_{0}a$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
2 $\Rightarrow$ 1:&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在すると仮定する。&lt;br /&gt;
$\left|w\right|$ に対する帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|=1$ のとき:&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在することから&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{k}$ （ただし、各 $i=1, \dots, k$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）。&lt;br /&gt;
# すべての $i\in \{1, \dots, k\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta'$。&lt;br /&gt;
# $q_{0}=q$, $q_{k}=q'$。&lt;br /&gt;
&lt;br /&gt;
を満たす状態の列 $q_{0}, q_{1}, \dots, q_{k}$ と記号の列 $a_{1}, a_{2}, \dots, a_{k}$が存在する&lt;br /&gt;
（ただし、$k\geq l$）。&lt;br /&gt;
$\left|w\right|=1$ であるから、&lt;br /&gt;
\[a_{i}=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
w &amp;amp; i=k_{0} \\&lt;br /&gt;
\emptyword &amp;amp; i\neq k_{0}&lt;br /&gt;
\end{cases}&lt;br /&gt;
\]&lt;br /&gt;
を満たす $1\leq k_{0}$ が存在する。このとき、$\Delta'$ の定義から &lt;br /&gt;
\[q_{i}=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
q &amp;amp; i\lt k_{0} \\&lt;br /&gt;
q' &amp;amp; k_{0}\leq i&lt;br /&gt;
\end{cases}&lt;br /&gt;
\]&lt;br /&gt;
であって、$(q, w, q')\in \Delta'_{0}$ である。&lt;br /&gt;
$\Delta'_{0}$ の定義から $(q, w, q')\in \mathof{C}{q, w}$。&lt;br /&gt;
これは記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在することを意味する。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|\gt 1$ のとき: $w=w_{0}a$ とおく（ただし、$a\in\Sigma$）。&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在することから&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{k}$ （ただし、各 $i=1, \dots, k$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）。&lt;br /&gt;
# すべての $i\in \{1, \dots, k\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$。&lt;br /&gt;
# $q_{0}=q$, $q_{k}=q'$。&lt;br /&gt;
&lt;br /&gt;
を満たす状態の列 $q_{0}, q_{1}, \dots, q_{k}$ と記号の列 $a_{1}, a_{2}, \dots, a_{k}$が存在する&lt;br /&gt;
（ただし、$k\geq l$）。&lt;br /&gt;
このとき、$w_{0}=a_{1}\dots a_{k_{0}}$, $a=a_{k_{0}+1}$, $1\leq k_{0}\lt k$ を満たす $k_{0}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
すると、$q=q_{0}, q_{1}, \dots, q_{k_{0}}$ は記号列 $w_{0}$ による $q$ から $q_{k_{0}}$ への $\mathautomaton{A}'$ の状態遷移である。&lt;br /&gt;
また、$q_{k_{0}}, q_{k_{0}+1}, \dots, q_{k}=q'$ は記号列 $a$ による $q_{k_{0}}$ から $q'$ への $\mathautomaton{A}'$ の状態遷移である。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から&lt;br /&gt;
記号列 $w_{0}$ による $q$ から $q_{k_{0}}$ への $\mathautomaton{A}$ の状態遷移が存在し、&lt;br /&gt;
また、記号列 $a$ による $q_{k_{0}}$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する。ゆえに、記号列 $w=w_{0}a$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
以上を踏まえて、$L(\mathautomaton{A})=L(\mathautomaton{A}')$ を示す。&lt;br /&gt;
&lt;br /&gt;
$w\in L(\mathautomaton{A})$ を仮定する。&lt;br /&gt;
$w=\emptyword$ のとき、$F\cap\mathof{C_{\emptyword}}{q_{I}}\neq\emptyset$ である。&lt;br /&gt;
ゆえに、$q_{I}\in F'$。$(q_{I}, \emptyword, q_{I})\in \Delta'$ に注意すると、&lt;br /&gt;
$\emptyword$ による $q_{I}$ から $q_{I}$ への $\mathautomaton{A}'$ の状態遷移が存在するので、&lt;br /&gt;
$\emptyword\in L(\mathautomaton{A}')$。&lt;br /&gt;
&lt;br /&gt;
$w\neq \emptyword$ のとき、&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q\in F$ への $\mathautomaton{A}$ の状態遷移が存在することから、&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q\in F'$ への $\mathautomaton{A}'$ の状態遷移が存在することが速やかにわかる。ゆえに $w\in L(\mathautomaton{A}')$。&lt;br /&gt;
&lt;br /&gt;
以上より $L(\mathautomaton{A})\subseteq L(\mathautomaton{A}')$。&lt;br /&gt;
&lt;br /&gt;
$w\in L(\mathautomaton{A}')$ を仮定する。&lt;br /&gt;
$w=\emptyword$ のとき、$(q_{I}, \emptyword, q_{I})\in \Delta'$ かつ $q_{I}\in F'$ である。&lt;br /&gt;
&lt;br /&gt;
$F\cap\mathof{C_{\emptyword}}{q_{I}}=\emptyset$ のとき、$q_{I}\notin F$。また、$F=F'$ である。&lt;br /&gt;
まとめて、$q_{I}\notin F=F'\ni q_{I}$。これは矛盾である。&lt;br /&gt;
よって、$F\cap\mathof{C_{\emptyword}}{q_{I}}\neq\emptyset$ である。&lt;br /&gt;
ゆえに、$q\in \mathof{C_{\emptyword}}{q_{I}}$, $q\in F$ を満たす状態 $q\in Q$ が存在する。&lt;br /&gt;
$q\in \mathof{C_{\emptyword}}{q_{I}}$ であるから、&lt;br /&gt;
$\emptyword$ による $q_{I}$ から $q$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
$q\in F$ であるから $\emptyword\in L(\mathautomaton{A}')$。&lt;br /&gt;
&lt;br /&gt;
$w\neq \emptyword$ のとき、&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q\in F$ への $\mathautomaton{A}'$ の状態遷移が存在することから、&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q\in F'$ への $\mathautomaton{A}$ の状態遷移が存在することが速やかにわかる。&lt;br /&gt;
&lt;br /&gt;
以上より $L(\mathautomaton{A}')\subseteq L(\mathautomaton{A})$。&lt;br /&gt;
&lt;br /&gt;
$L(\mathautomaton{A})\subseteq L(\mathautomaton{A}')$ より$L(\mathautomaton{A})=L(\mathautomaton{A}')$。&lt;br /&gt;
$\mathautomaton{A}'$ が $\emptyword$ 動作なしの有限オートマトンであるから、命題の主張を得る。&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
==  決定性有限オートマトン ==&lt;br /&gt;
この項では'''決定性有限オートマトン(deterministic finite automaton)'''について述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=決定性有限オートマトン |label=def-deterministic_finite_automaton }}&lt;br /&gt;
$\emptyword$ 動作なしの有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が次の条件を満たすとき、'''$\mathautomaton{A}$ は決定性有限オートマトン(deterministic finite automaton)である'''と言う:&lt;br /&gt;
&lt;br /&gt;
* 各 $(q, a) \in Q\times \Sigma$ という組に対して、$(q, a, q')\in \Delta$ という形の元は高々一個&lt;br /&gt;
&lt;br /&gt;
有限オートマトン $\mathautomaton{A}$ が決定性有限オートマトンとは限らないことを明示したいときに、&lt;br /&gt;
'''$\mathautomaton{A}$ は非決定性有限オートマトン(nondeterministic finite automaton)である'''と言うことがある。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=prop-finite_automaton_non_emptyword }}&lt;br /&gt;
任意の有限オートマトンに対して、それと等価な決定性有限オートマトンが存在する。&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
$\mathautomaton{A}_{0}=(Q_{0}, \Sigma, \Delta_{0}, q_{I}, F_{0})$ を有限オートマトンとする。&lt;br /&gt;
{{ref |type=prop |label=prop-finite_automaton_non_emptyword }} から&lt;br /&gt;
$\mathautomaton{A}_{0}$ と等価な&lt;br /&gt;
$\emptyword$ 動作なしの有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
$S\subseteq Q$, $a\in (\Sigma \cup \mathsetextension{\emptyword})$ に対して、集合 $\mathof{T}{S, a}$ を次のように定める:&lt;br /&gt;
\[&lt;br /&gt;
\mathof{T}{S, a}=\mathsetintension{q'\in Q}{(q, a, q')\in\Delta \text{ for } q\in S}.&lt;br /&gt;
\]&lt;br /&gt;
次のように集合 $\Delta'$, $F'$ を定める。&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\Delta' &amp;amp;=\mathsetintension{(S, a, \mathof{T}{S, a})}{S\subseteq Q, a\in (\Sigma \cup \mathsetextension{\emptyword}) } \\&lt;br /&gt;
F' &amp;amp;=\mathsetintension{S\subseteq Q}{S\cap F\neq \emptyset}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
このとき、$\mathautomaton{A}'=(\mathpowerset{Q}, \Sigma, \Delta', \mathsetextension{q_{I}}, F')$&lt;br /&gt;
は決定性有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
$\mathof{L}{\mathautomaton{A}}=\mathof{L}{\mathautomaton{A}'}$ を示す。&lt;br /&gt;
&lt;br /&gt;
まず、$\mathof{L}{\mathautomaton{A}}\subseteq\mathof{L}{\mathautomaton{A}'}$&lt;br /&gt;
を示すために次の命題($*$)を示す:&lt;br /&gt;
&lt;br /&gt;
($*$)&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q$ への $\mathautomaton{A}$ の状態遷移が存在するとき、次を満たす&lt;br /&gt;
$S\in \mathpowerset{Q}$ が存在する:&lt;br /&gt;
# $q\in S$。 &lt;br /&gt;
# 記号列 $w$ による $\mathsetextension{q_{I}}$ から $S$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q$ への $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
$(q_{I}=)q_{0}, \dots, q_{n}(=q)$ が存在すると仮定する。&lt;br /&gt;
($*$) の 1., 2. を満たす $S$ が存在することを $n$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$n=0$ のときは明らか。&lt;br /&gt;
&lt;br /&gt;
$n\gt 0$ のとき、次を満たす $w'\in \kleenecl{\Sigma}$, $a\in \Sigma$ が存在する:&lt;br /&gt;
# $w=w'a$。 &lt;br /&gt;
# $(q_{n-1}, a, q_{n})\in \Delta$。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から、$q_{n-1}\in S'$、&lt;br /&gt;
記号列 $w'$ による $\mathsetextension{q_{I}}$ から $S'$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
$(q_{n-1}, a, q_{n})\in \Delta$ より、次を満たす $S\in \mathpowerset{Q}$ が存在する:&lt;br /&gt;
# $q_{n}\in S$。&lt;br /&gt;
# $(S', a, S)\in \Delta'$。&lt;br /&gt;
&lt;br /&gt;
ゆえに、$q\in S$ で&lt;br /&gt;
記号列 $w$ による $\mathsetextension{q_{I}}$ から $S$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
以上より ($*$) は示された。&lt;br /&gt;
&lt;br /&gt;
さて、$w\in \mathof{L}{\mathautomaton{A}}$ を仮定する。&lt;br /&gt;
すると、記号列 $w$ による $q_{I}$ から $q\in F$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
(*) より次を満たす $S\in \mathpowerset{Q}$ が存在する:&lt;br /&gt;
# $q\in S$。 &lt;br /&gt;
# 記号列 $w$ による $\mathsetextension{q_{I}}$ から $S$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
$q\in S$ より $S\cap F\neq \emptyset$ であるから、$S\in F'$。&lt;br /&gt;
ゆえに、$w\in \mathof{L}{\mathautomaton{A}'}$。&lt;br /&gt;
よって、$\mathof{L}{\mathautomaton{A}}\subseteq \mathof{L}{\mathautomaton{A}'}$。&lt;br /&gt;
&lt;br /&gt;
次に $\mathof{L}{\mathautomaton{A}'}\subseteq\mathof{L}{\mathautomaton{A}}$&lt;br /&gt;
を示すために次の命題($**$)を示す:&lt;br /&gt;
&lt;br /&gt;
($**$)  &lt;br /&gt;
記号列 $w$ による $\mathsetextension{q_{I}}$ から $S$ への $\mathautomaton{A}'$ の状態遷移が存在するとき、&lt;br /&gt;
任意の $q\in S$ に対して記号列 $w$ による $q_{I}$ から $q$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ による $\mathsetextension{q_{I}}$ から $S$ への $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
$(\mathsetextension{q_{I}}=)S_{0}, \dots, S_{n}(=S)$ が存在すると仮定する。&lt;br /&gt;
任意の $q\in S$ に対して記号列 $w$ による $q_{I}$ から $q$ への $\mathautomaton{A}$&lt;br /&gt;
の状態遷移が存在することを $n$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$n=0$ のときは明らか。&lt;br /&gt;
&lt;br /&gt;
$n\gt 0$ のとき、$q\in S$ とする。&lt;br /&gt;
このとき、次を満たす $w'\in \kleenecl{\Sigma}$, $a\in \Sigma$ が存在する:&lt;br /&gt;
# $w=w'a$。 &lt;br /&gt;
# $(S_{n-1}, a, S)\in \Delta'$。&lt;br /&gt;
&lt;br /&gt;
$(S_{n-1}, a, S)\in \Delta'$ のであるから、$(q', a, q)\in \Delta$ を満たす $q'\in S_{n-1}$ が存在する。&lt;br /&gt;
帰納法の仮定から記号列 $w'$ による $q_{I}$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
$(q', a, q)\in \Delta$ から、&lt;br /&gt;
帰納法の仮定から記号列 $w$ による $q_{I}$ から $q$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
以上より ($**$) は示された。&lt;br /&gt;
&lt;br /&gt;
さて、$w\in \mathof{L}{\mathautomaton{A}'}$ を仮定する。&lt;br /&gt;
すると、記号列 $w$ による $\mathsetextension{q_{I}}$ から $S\in F'$ への $\mathautomaton{A}'$&lt;br /&gt;
の状態遷移が存在する。&lt;br /&gt;
このとき、$S\cap F\neq \emptyset$ であるから、$q\in S$ かつ $q\in F$ を満たす $q$ が存在する。&lt;br /&gt;
($**$) から記号列 $w$ による $q_{I}$ から $q$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
$q\in F$ であるから、$w\in \mathof{L}{\mathautomaton{A}}$。&lt;br /&gt;
よって、$\mathof{L}{\mathautomaton{A}'}\subseteq\mathof{L}{\mathautomaton{A}}$。&lt;br /&gt;
&lt;br /&gt;
以上より $L(\mathautomaton{A})=L(\mathautomaton{A}')$。&lt;br /&gt;
$\mathautomaton{A}'$ が決定性有限オートマトンであるから、命題の主張を得る。&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
==  参考文献 ==&lt;br /&gt;
# 新屋 良磨、オートマトン理論再考、コンピュータ ソフトウェア、2017、34 巻、3 号、p. 3_3-3_35、公開日 2017/09/25、Print ISSN 0289-6540、[https://doi.org/10.11309/jssst.34.3_3]、[https://www.jstage.jst.go.jp/article/jssst/34/3/34_3_3/_article/-char/ja]&lt;br /&gt;
# 五十嵐喜英他、『[https://www.amazon.co.jp/gp/product/4434158783/infinitytopoi-22  数理情報科学シリーズ ２４ オートマトンと形式言語の基礎]』、牧野書店、2011&lt;br /&gt;
# Martin Aigner,Guenter M. Ziegler,Karl H. Hofmann, [https://www.amazon.co.jp/Proofs-BOOK-Martin-Aigner-dp-3662572648/dp/3662572648/infinitytopoi-22  &amp;quot;Proofs from THE BOOK&amp;quot;], Springer, 2004&lt;br /&gt;
&lt;br /&gt;
== 脚注 ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 関連項目  ==&lt;br /&gt;
* [[形式言語]]&lt;br /&gt;
* [[正規表現]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
|+ Chomsky階層&lt;br /&gt;
! 文法のタイプ&lt;br /&gt;
! 言語のクラス&lt;br /&gt;
! 計算モデル&lt;br /&gt;
|-&lt;br /&gt;
! タイプ0&lt;br /&gt;
| [[句構造言語]]&lt;br /&gt;
| [[Turingマシン]]&lt;br /&gt;
|-&lt;br /&gt;
! タイプ1&lt;br /&gt;
| [[文脈依存言語]]&lt;br /&gt;
| [[線形有界オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ2&lt;br /&gt;
| [[文脈自由言語]]&lt;br /&gt;
| [[プッシュダウン・オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ3&lt;br /&gt;
| [[正規言語]]&lt;br /&gt;
| [[有限オートマトン]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E6%AD%A3%E8%A6%8F%E8%A8%80%E8%AA%9E&amp;diff=8460</id>
		<title>正規言語</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E6%AD%A3%E8%A6%8F%E8%A8%80%E8%AA%9E&amp;diff=8460"/>
		<updated>2021-09-02T02:11:26Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: Show regular language is closed under some operations (concatenation, union, Kleene closure)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{TOC |align=right |noautonum=1 }}&amp;lt;!-- 右寄せ連番無し目次をここに表示 --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Category:形式言語理論|セイキゲンゴ]]&lt;br /&gt;
{{begin |preamble}}&lt;br /&gt;
&amp;lt;!-- 参考文献 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 定理環境 --&amp;gt;&lt;br /&gt;
{{newtheorem |type=theorem |display=定理}}&lt;br /&gt;
{{newtheorem |type=lemma |display=補題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=definition |display=定義 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=prop |display=命題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=example |display=例 |family=theorem }}&lt;br /&gt;
&amp;lt;!-- MathJax commands --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\newcommand{\mathsetextension}[1]{%&lt;br /&gt;
\left\{ #1 \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathsetintension}[2]{%&lt;br /&gt;
\left\{ #1 \left| #2 \right.\right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathof}[2]{%&lt;br /&gt;
\mathop{#1}\left(#2\right)%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathderiv}{\mathrel{\mathop{\Rightarrow}^{*}}}&lt;br /&gt;
\newcommand{\mathgen}{\rightsquigarrow}&lt;br /&gt;
\newcommand{\mathgenfun}[1]{\mathbf{#1}}&lt;br /&gt;
\newcommand{\mirrorim}[1]{\overleftarrow{#1}}&lt;br /&gt;
\newcommand{\emptyword}{\varepsilon}&lt;br /&gt;
\newcommand{\kleenecl}[1]{{#1}^{*}}&lt;br /&gt;
\newcommand{\inverse}[1]{{#1}^{-1}}&lt;br /&gt;
\newcommand{\interpret}[1]{[\![#1]\!]}&lt;br /&gt;
\newcommand{\mathautomaton}[1]{\mathcal{#1}}&lt;br /&gt;
\newcommand{\mathnat}{\mathbb{N}}&lt;br /&gt;
\newcommand{\mathcountfunc}{\mathop{\#}}&lt;br /&gt;
&lt;br /&gt;
\newcommand{\qed}{\blacksquare}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
{{end |preamble}}&lt;br /&gt;
'''正規言語（regular language）'''とは右線形文法(right linear grammar)または左線形文法(left linear grammar)によって定められる形式言語である。&lt;br /&gt;
&lt;br /&gt;
右線形文法は句構造文法の一種であるから、&lt;br /&gt;
右線形言語は[[句構造言語]]の一種である。&lt;br /&gt;
&lt;br /&gt;
また、右線形文法は文脈自由文法の一種であるから、&lt;br /&gt;
右線形言語は[[文脈自由言語]]の一種である。&lt;br /&gt;
&lt;br /&gt;
以下、項目[[形式言語]]、[[句構造言語]]において定められている言語上の演算や文法の等価性の定義などについては特に断らず用いる。&lt;br /&gt;
&lt;br /&gt;
==  正規言語の導入 ==&lt;br /&gt;
この節では'''正規言語'''を定義する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=definition |name=右線形文法 |label=def-right_linear_grammar }}&lt;br /&gt;
'''右線形文法（right linear grammar）'''とは&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# $\Sigma$ と互いに素な'''変数記号（variable）'''の空でない有限集合 $V$&lt;br /&gt;
# '''生成規則（production rule）'''と呼ばれる有限集合 $R \subseteq V \times (\kleenecl{\Sigma}V)\cup (\kleenecl{\Sigma})$&lt;br /&gt;
# '''開始記号(start symbol)'''または'''初期記号'''と呼ばれる $S\in V$&lt;br /&gt;
&lt;br /&gt;
の４つ組$(V, \Sigma, R, S)$である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
これは、[[句構造言語#def-phrase_structure_grammar | 句構造文法]]の一種である。また、[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]の一種である。&lt;br /&gt;
&lt;br /&gt;
[[句構造言語]]のときと同様、$\Sigma$ の元を'''終端記号(terminal)'''、$V$ の元を'''非終端記号(non-terminal)'''と呼ぶことも多い。&lt;br /&gt;
&lt;br /&gt;
以下では、元$(A, \alpha)\in R$ のことを$A\mathgen\alpha$と書く。&lt;br /&gt;
&lt;br /&gt;
[[句構造言語#def-derivation | 導出]]、[[句構造言語#def-phrase_structure_lang | 生成される言語]]などは&lt;br /&gt;
句構造言語と同様に定義される。&lt;br /&gt;
&lt;br /&gt;
'''正規言語'''とは何らかの右線形文法によって生成される言語のことを言う。&lt;br /&gt;
&lt;br /&gt;
==  正規言語の例 ==&lt;br /&gt;
この節では正規言語の例を紹介する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列全体 |label=ex-all_lang }}&lt;br /&gt;
$V=\left\{ S \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen\emptyword, S\mathgen 0S, S\mathgen 1S \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
$0$ と $1$ からなる有限記号列全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、$0$ と $1$ からなる有限記号列全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる。&lt;br /&gt;
&lt;br /&gt;
\begin{gather*}&lt;br /&gt;
S \Rightarrow \emptyword \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 0\emptyword = 0 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 1\emptyword = 1 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 00\emptyword = 00 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 01\emptyword = 01 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 10\emptyword = 10 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 11\emptyword = 11 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 000S \Rightarrow 000\emptyword = 000 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 001S \Rightarrow 001\emptyword = 001 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 010S \Rightarrow 010\emptyword = 010 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 011S \Rightarrow 011\emptyword = 011 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 100S \Rightarrow 100\emptyword = 100 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 101S \Rightarrow 101\emptyword = 101 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 110S \Rightarrow 110\emptyword = 110 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 111S \Rightarrow 111\emptyword = 111&lt;br /&gt;
\end{gather*}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体 |label=ex-only_three_one_lang }}&lt;br /&gt;
$V=\left\{ S, A_{1}, A_{2}, A_{3} \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen 0S, S\mathgen 1A_{1}, A_{1}\mathgen 0A_{1}, A_{1}\mathgen 1A_{2}, A_{2}\mathgen 0A_{2}, A_{2}\mathgen 1A_{3}, A_{3}\mathgen 0A_{3}, A_{3}\mathgen \emptyword \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
S &amp;amp;\Rightarrow 1A_{1} \Rightarrow 11A_{2} \Rightarrow 111A_{3} \Rightarrow 111\emptyword = 111 \\&lt;br /&gt;
S &amp;amp;\Rightarrow 0S \\&lt;br /&gt;
&amp;amp;\Rightarrow 01A_{1} \Rightarrow 010A_{1} \Rightarrow 0100A_{1} \\&lt;br /&gt;
&amp;amp;\Rightarrow 01001A_{2} \Rightarrow 010010A_{2} \Rightarrow 0100100A_{2} \Rightarrow 01001000A_{2} \\&lt;br /&gt;
&amp;amp;\Rightarrow 010010001A_{3} \Rightarrow 0100100010A_{3} \Rightarrow 01001000100A_{3} \Rightarrow 010010001000A_{3} \Rightarrow 0100100010000A_{3} \Rightarrow 0100100010000\emptyword =0100100010000&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=自然数の二進表現全体 |label=ex-bi_lang }}&lt;br /&gt;
$V=\left\{ S, A_{1} \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen 0, S\mathgen 1A_{1}, A_{1}\mathgen 0A_{1}, A_{1}\mathgen 1A_{1}, A_{1}\mathgen \emptyword \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
自然数の二進表現全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、自然数の二進表現全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる&lt;br /&gt;
&lt;br /&gt;
\begin{gather*}&lt;br /&gt;
S \Rightarrow 0 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 1\emptyword = 1 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 10\emptyword = 10 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 11\emptyword = 11 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 100\emptyword = 100 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 101\emptyword = 101 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 100\emptyword = 110 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 111\emptyword = 111 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 1000A_{1} \Rightarrow 1000\emptyword = 1000 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 1001A_{1} \Rightarrow 1001\emptyword = 1001 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 1010A_{1} \Rightarrow 1010\emptyword = 1010 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 1011A_{1} \Rightarrow 1011\emptyword = 1011 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 1100A_{1} \Rightarrow 1100\emptyword = 1100 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 1101A_{1} \Rightarrow 1101\emptyword = 1101 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 1110A_{1} \Rightarrow 1110\emptyword = 1110 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 1111A_{1} \Rightarrow 1111\emptyword = 1111&lt;br /&gt;
\end{gather*}&lt;br /&gt;
&lt;br /&gt;
== 正規言語のクラスの閉包性 その１ ==&lt;br /&gt;
この節では正規言語のクラスが[[形式言語#id_concatenation | 連接 ]]，和集合演算，[[形式言語#id_kleeneclosure | Kleene閉包 ]]によって閉じていることを述べる．&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=prop-regular-exp }}&lt;br /&gt;
# 形式言語 $L_{1}$, $L_{2}$ が正規言語であるならば $L_{1}L_{2}$ も正規言語である。&lt;br /&gt;
# 形式言語 $L_{1}$, $L_{2}$ が正規言語であるならば $L_{1}\cup L_{2}$ も正規言語である。&lt;br /&gt;
# 形式言語 $L$ が正規言語であるならば $\kleenecl{L}$ も正規言語である。&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
1. 形式言語 $L_{1}$, $L_{2}$ が正規言語であると仮定する．&lt;br /&gt;
&lt;br /&gt;
このとき $L_{1}$, $L_{2}$ を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$L_{1}$ を生成する右線形文法を $G=(V_{1}, \Sigma, R_{1}, S_{1})$、&lt;br /&gt;
$L_{2}$ を生成する右線形文法を $G=(V_{2}, \Sigma, R_{2}, S_{2})$ とする。&lt;br /&gt;
このとき、$V_{1}\cap V_{2}=\emptyset$ と仮定しても&lt;br /&gt;
一般性を失わない（必要であれば、変数記号を適切に置き換えれば良い）。&lt;br /&gt;
&lt;br /&gt;
さて、&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
R_{1}^{(V)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R_{1}}{\gamma \in \kleenecl{\Sigma}V}  \\&lt;br /&gt;
R_{1}^{(0)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R_{1}}{\gamma \in \kleenecl{\Sigma}}  &lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$R_{1}=R_{1}^{(V)}\cup R_{1}^{(0)}$, $R_{1}^{(V)}\cap R_{1}^{(0)}=\emptyset$ である。&lt;br /&gt;
\[R_{1}^{(S_{2})}:=\mathsetintension{A\mathgen \gamma S_{2}}{A\mathgen \gamma \in R_{1}, \gamma \in \kleenecl{\Sigma}}\]&lt;br /&gt;
とすると、&lt;br /&gt;
$G=(V_{1}\cup V_{2}, \Sigma, R_{1}^{V}\cup R_{1}^{(S_{2})}\cup R_{2}, S_{1})$&lt;br /&gt;
は $L_{1}L_{2}$ を生成する右線形文法である。&lt;br /&gt;
&lt;br /&gt;
2. 形式言語 $L_{1}$, $L_{2}$ が正規言語であると仮定する．&lt;br /&gt;
&lt;br /&gt;
このとき $L_{1}$, $L_{2}$ を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$L_{1}$ を生成する右線形文法を $G=(V_{1}, \Sigma, R_{1}, S_{1})$、&lt;br /&gt;
$L_{2}$ を生成する右線形文法を $G=(V_{2}, \Sigma, R_{2}, S_{2})$ とする&lt;br /&gt;
（ただし，$V_{1}\cap V_{2}=\emptyset$ とする）。&lt;br /&gt;
&lt;br /&gt;
このとき、右線形文法&lt;br /&gt;
$G=(V_{1}\cup V_{2}\cup \mathsetextension{S}, \Sigma, R_{1}\cup R_{2}\cup \mathsetextension{S\mathgen S_{1}, S\mathgen S_{2}}, S)$&lt;br /&gt;
（ただし、$S\notin V_{1}\cup V_{2}$）は $L_{1}\cup L_{2}$ を生成する。&lt;br /&gt;
&lt;br /&gt;
3.&lt;br /&gt;
形式言語 $L$ が正規言語であると仮定する．&lt;br /&gt;
&lt;br /&gt;
このとき $L$ を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$L$ を生成する右線形文法を $G=(V, \Sigma, R, S)$ とする。&lt;br /&gt;
&lt;br /&gt;
さて、&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
R^{(V)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R}{\gamma \in \kleenecl{\Sigma}V} \\&lt;br /&gt;
R^{(0)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R}{\gamma \in \kleenecl{\Sigma}}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$R=R^{(V)}\cup R^{(0)}$, $R^{(V)}\cap R^{(0)}=\emptyset$ である。&lt;br /&gt;
&lt;br /&gt;
\[R^{(S)}:=\mathsetintension{A\mathgen \gamma S}{A\mathgen \gamma \in R, \gamma \in \kleenecl{\Sigma}}\]&lt;br /&gt;
とすると、右線形文法&lt;br /&gt;
$G=(V, \Sigma, R^{(V)}\cup R^{(S)}\cup \{S\mathgen \emptyword\}, S)$ は $\kleenecl{L}$ を生成する。&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
==  正規表現、有限オートマトンとの関係 ==&lt;br /&gt;
この節では正規言語、[[正規表現]]および[[有限オートマトン]]との関係を述べる。以下では[[正規表現]]と[[有限オートマトン]]の定義などは既知とする。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=theorem |label=thm-regularandNFA }}&lt;br /&gt;
言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $L=\interpret{\alpha}$ なる正規表現 $\alpha$ が存在する。&lt;br /&gt;
# $L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
この節ではこの定理を証明する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=lemma |label=lemma-of-thm-regularandNFA }}&lt;br /&gt;
正規言語 $G=(V, \Sigma, R, S)$ に対して、&lt;br /&gt;
$G$ と[[句構造言語#句構造文法の等価性 | 等価 ]]であって、&lt;br /&gt;
すべての生成規則の右辺が&lt;br /&gt;
$(\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
の元である右線形文法が存在する。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
正規言語 $G=(V, \Sigma, R, S)$ について、&lt;br /&gt;
$R=\{A_{0}\mathgen \alpha_{0}, \ldots, A_{n}\mathgen \alpha_{n}\}$ （ただし $n\in\mathnat$）&lt;br /&gt;
とする。&lt;br /&gt;
&lt;br /&gt;
$G_{i}=(V_{i}, \Sigma, R_{i}, S)$&lt;br /&gt;
（ただし $n=0, \ldots, n+1$）&lt;br /&gt;
を次のように定義する。&lt;br /&gt;
&lt;br /&gt;
* $G_{0}=G$&lt;br /&gt;
* $\alpha_{i}\in (\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
のとき、$G_{i+1}:=G_{i}$ とする。&lt;br /&gt;
* $\alpha_{i}\in \kleenecl{\Sigma} \setminus (\Sigma \cup\{\emptyword\})$ のとき、$\alpha_{i}=a_{0}\ldots a_{m}$ （ただし、$m$ は $1$ 以上の自然数であって、$a_{j}\in \Sigma$ for $j\in \mathnat$）とする。&lt;br /&gt;
** $V_{i+1}:=V_{i}\cup \{B_{0}, \ldots, B_{m}\}$ （ただし、各 $B_{j}$ は $B_{j}\notin V_{i}\cup \Sigma$ を満たす変数記号）。&lt;br /&gt;
** $R_{i+1}:=R_{i}\setminus \{A_{i}\mathgen \alpha_{i}\}\cup \{A_{i} \mathgen a_{0}B_{0}, B_{0} \mathgen a_{1}B_{1}, \ldots, B_{m-1} \mathgen a_{m}B_{m}, B_{m}\mathgen \emptyword\}$。&lt;br /&gt;
* $\alpha_{i}\in \kleenecl{\Sigma}V\setminus (\Sigma \cup\{\emptyword\})V$ のとき、$\alpha_{i}=a_{0}\ldots a_{m} A'_{i}$ （ただし、$m$ は $1$ 以上の自然数であって、$a_{j}\in \Sigma$ for $j\in \mathnat$）とする。&lt;br /&gt;
** $V_{i+1}:=V_{i}\cup \{B_{0}, \ldots, B_{m}\}$ （ただし、各 $B_{j}$ は $B_{j}\notin V_{i}\cup \Sigma$ を満たす変数記号）。&lt;br /&gt;
** $R_{i+1}:=R_{i}\setminus \{A_{i}\mathgen \alpha_{i}\}\cup \{A_{i} \mathgen a_{0}B_{0}, B_{0} \mathgen a_{1}B_{1}, \ldots, B_{m-1} \mathgen a_{m}B_{m}, B_{m}\mathgen A'_{i}\}$。&lt;br /&gt;
&lt;br /&gt;
各 $i$ に対して、 $L(G_{i})=L(G_{i+1})$ に注意すると&lt;br /&gt;
$G_{n+1}$ が求める文法であることがわかる。&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 | display=Proof of {{ref |type=theorem |label=thm-regularandNFA }}. }}&lt;br /&gt;
(2. $\Rightarrow$ 1.)&lt;br /&gt;
$L=\interpret{\alpha}$ なる正規表現 $\alpha$ が存在するとき、&lt;br /&gt;
$L$ を生成する右線形文法が存在する（つまり $L$ は正規言語である）ことを言えば良い。&lt;br /&gt;
&lt;br /&gt;
正規表現の構成についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
Case 1.&lt;br /&gt;
$L=\interpret{\emptyset}=\emptyset$ のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \emptyset, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 2.&lt;br /&gt;
$L=\interpret{\emptyword}=\{\emptyword\}$ のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \{S \mathgen \emptyword\}, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 3.&lt;br /&gt;
$L=\interpret{a}=\{a\}$ (ただし、$a\in \Sigma$) のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \{S \mathgen a\}, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 4.&lt;br /&gt;
$L=\interpret{\alpha\beta}=\interpret{\alpha}\cdot\interpret{\beta}$&lt;br /&gt;
（ただし、$\alpha$, $\beta$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$, $\interpret{\beta}$ は正規言語である。&lt;br /&gt;
{{ref |type=prop |label=prop-regular-exp }} の 1. より、&lt;br /&gt;
$\interpret{\alpha}\cdot\interpret{\beta}$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
Case 5.&lt;br /&gt;
$L=\interpret{\alpha +\beta}=\interpret{\alpha}\cup \interpret{\beta}$&lt;br /&gt;
（ただし、$\alpha$, $\beta$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$, $\interpret{\beta}$ は正規言語である。&lt;br /&gt;
{{ref |type=prop |label=prop-regular-exp }} の 2. より、&lt;br /&gt;
$\interpret{\alpha}\cup \interpret{\beta}$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
Case 6.&lt;br /&gt;
$L=\interpret{\kleenecl{\alpha}}=\kleenecl{\interpret{\alpha}}$&lt;br /&gt;
（ただし、$\alpha$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$ は正規言語である。&lt;br /&gt;
{{ref |type=prop |label=prop-regular-exp }} の 3. より、&lt;br /&gt;
$\kleenecl{\interpret{\alpha}}$ は正規言語である。&lt;br /&gt;
&lt;br /&gt;
以上、Case 1-6 より(2. $\Rightarrow$ 1.) は示された。&lt;br /&gt;
&lt;br /&gt;
(1. $\Rightarrow$ 3.)&lt;br /&gt;
$L$ が正規言語であるとき、{{ref |type=lemma |label=lemma-of-thm-regularandNFA }}から&lt;br /&gt;
すべての生成規則の右辺が&lt;br /&gt;
$(\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
の元である$L$ を生成する右線形文法が存在する。&lt;br /&gt;
この文法を $G=(V, \Sigma, R, S)$ とする。&lt;br /&gt;
&lt;br /&gt;
まず、有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \delta, q_{I}, F)$&lt;br /&gt;
を次のように定義する。&lt;br /&gt;
&lt;br /&gt;
* $Q=V \cup \{f\}$ （ただし、$f\notin V$）&lt;br /&gt;
* $q_{I}=S$&lt;br /&gt;
* $\Delta = \{(A, a, A') | A, A'\in V, a\in \Sigma\cup\{\emptyword\}, A \mathgen aA'\in R \} \cup \{ (A, a, f) | A\in V, a\in \Sigma\cup\{\emptyword\}, A \mathgen a\in R\} \}$&lt;br /&gt;
* $F=\{f\}$&lt;br /&gt;
&lt;br /&gt;
次に、$wA\in \kleenecl{\Sigma}V$&lt;br /&gt;
に対して以下の２条件は同値であることを示す。&lt;br /&gt;
&lt;br /&gt;
(a) $S$ から始まる&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G}\cdots \Rightarrow_{G} \alpha_{n}(=wA)\]&lt;br /&gt;
(ただし、$\alpha_{i}=w_{i}A_{i}$ for $1\leq i\leq n$)&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
&lt;br /&gt;
(b) 記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ A_{0}, A_{1}, \ldots, A_{n}\]&lt;br /&gt;
（ただし、$A_{0}=S$, $A_{n}=A$）が存在する。&lt;br /&gt;
&lt;br /&gt;
(a) $\Rightarrow$ (b) を $n$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$n=1$ のとき、&lt;br /&gt;
$w=a$ なる $a\in\Sigma\cup\{\emptyword\}$が存在し、&lt;br /&gt;
$S\mathgen aA \in R$ であるはずである。&lt;br /&gt;
このとき、$\mathautomaton{A}$ の定義から&lt;br /&gt;
$(S, a, A)\in \Delta$である。&lt;br /&gt;
ゆえに、記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A \]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n&amp;gt;1$ のとき、&lt;br /&gt;
$w=w'a$ （ただし、$a\in \Sigma\cup\{\emptyword\}$）とおく。&lt;br /&gt;
このとき、$G$ の生成規則の形から&lt;br /&gt;
$w_{n-1}=w'$, &lt;br /&gt;
$A_{n-1}\mathgen aA \in R$&lt;br /&gt;
である。&lt;br /&gt;
このとき、帰納法の仮定から&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n-1}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[S, A_{1}, \ldots, A_{n-1} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
$A_{n-1}\mathgen aA \in R$&lt;br /&gt;
であるから、&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$であることに注意すると&lt;br /&gt;
記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{1}, \ldots, A_{n-1}, A \]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
(b) $\Rightarrow$ (a) を $n$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$n=1$ のとき、&lt;br /&gt;
$w=a$ なる $a\in\Sigma\cup\{\emptyword\}$が存在し、&lt;br /&gt;
$(S, a, A)\in \Delta$ のはずである。&lt;br /&gt;
このとき、$\mathautomaton{A}$ の定義から&lt;br /&gt;
$S\mathgen aA \in R$ である。ゆえに&lt;br /&gt;
\[ S \Rightarrow_{G} aA \]&lt;br /&gt;
である。&lt;br /&gt;
&lt;br /&gt;
$n&amp;gt;1$ のとき、&lt;br /&gt;
記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[A_{0}, A_{1}, \ldots, A_{n-1}A_{n} \]&lt;br /&gt;
（ただし、$A_{0}=S$, $A_{n}=A$）が存在すると仮定する。&lt;br /&gt;
すると、&lt;br /&gt;
$w=w'a$,&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$&lt;br /&gt;
を満たす&lt;br /&gt;
$a\in\Sigma\cup\{\emptyword\}$, $w'\in\kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
すると、記号列 $w'$ による $S$ から $A_{n-1}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[A_{0}, A_{1}, \ldots, A_{n-1} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
帰納法の仮定から&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n-1}(=w'A_{n-1})\]&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$ であるから、&lt;br /&gt;
$A_{n-1} \mathgen  aA\in R$ であるので、&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G} \cdots \Rightarrow_{G} w'A_{n-1} \Rightarrow_{G} w'aA(=wA) \]&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
 &lt;br /&gt;
最後に $L=L(\mathautomaton{A})$ を示す。&lt;br /&gt;
&lt;br /&gt;
$w\in L$ を仮定する。&lt;br /&gt;
すると、導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} \Rightarrow_{G} w\]&lt;br /&gt;
が存在する。&lt;br /&gt;
$G$ の生成規則の形から&lt;br /&gt;
$w=w'a$, $\alpha_{n}=w'A_{n}$, $A_{n}\mathgen a \in R$&lt;br /&gt;
を満たす $A_{n}\in V$, $a\in \Sigma\cup\{\emptyword\}$, &lt;br /&gt;
$w'\in \kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
このとき、&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n}$ への $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, A_{1}, \ldots, A_{n} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
$A_{n}\mathgen a \in R$&lt;br /&gt;
であるから、&lt;br /&gt;
$(A_{n}, a, f)\in \Delta$&lt;br /&gt;
に注意すると、&lt;br /&gt;
記号列 $w'a=w$ による $S$ から $f$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, \ldots, A_{n}, f \]&lt;br /&gt;
が存在する。&lt;br /&gt;
ゆえに $w\in L(\mathautomaton{A})$ である。&lt;br /&gt;
&lt;br /&gt;
逆に、$w\in L(\mathautomaton{A})$ とする。&lt;br /&gt;
すると、&lt;br /&gt;
記号列 $w$ による $S$ から $f$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, A_{1}, \ldots, A_{n}, f\]&lt;br /&gt;
が存在する。&lt;br /&gt;
すると、&lt;br /&gt;
$w=w'a$, $(A_{n}, a, f) \in \Delta$&lt;br /&gt;
を満たす $a\in \Sigma\cup\{\emptyword\}$, &lt;br /&gt;
$w'\in \kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
また、&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, \ldots, A_{n} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
よって、導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} (=w'A_{n})\]&lt;br /&gt;
が存在する。&lt;br /&gt;
$(A_{n}, a, f) \in \Delta$ から&lt;br /&gt;
$A_{n}\mathgen a$ であるので、&lt;br /&gt;
$w$ の導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} \Rightarrow_{G} w (=w'a)\]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
以上より(1. $\Rightarrow$ 3.)は示された。&lt;br /&gt;
&lt;br /&gt;
(3. $\Rightarrow$ 2.)&lt;br /&gt;
$L$ を受理する有限オートマトンを&lt;br /&gt;
$\mathautomaton{A}=(\{q_{1}, q_{2}, \ldots, q_{n}\}, \Sigma, \Delta, q_{1}, \{q_{F_{0}}, q_{F_{1}}, \ldots, q_{F_{m}}\})$ とおく。&lt;br /&gt;
&lt;br /&gt;
簡単のため、以下&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\sum_{\alpha \in A} \alpha &amp;amp;= (\alpha_{0}+ \cdots + \alpha_{k}) \quad \text{（ただし、A は正規表現の空でない有限集合であって、A=\{a_{0}, \ldots, a_{k}\}）}, \\&lt;br /&gt;
Q_{ij}&amp;amp;=\{a\in \Sigma\cup\{\emptyword\} | (q_{i}, a, q_{j})\in \Delta\}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
という略記を用いる。&lt;br /&gt;
&lt;br /&gt;
正規表現 $\alpha^{(l)}_{ij}$ （ただし、$1\leq i, j \leq n$, $0\leq l \leq n$）を次のように帰納的に定める。&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\alpha^{(0)}_{ij}&amp;amp;=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
\emptyset, &amp;amp; \text{if Q_{ij}=\emptyset}, \\&lt;br /&gt;
\sum_{a\in Q_{ij}}a, &amp;amp; \text{if Q_{ij}\neq \emptyset, i\neq j}; \\&lt;br /&gt;
\kleenecl{\left(\sum_{a\in Q_{ij}}a\right)}, &amp;amp; \text{if Q_{ij}\neq \emptyset, i=j}; &lt;br /&gt;
\end{cases}\\&lt;br /&gt;
\alpha^{(l)}_{ij}&amp;amp;=\alpha^{(l-1)}_{ij} + \alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}, \quad \text{（ただし、1\leq l）}.&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
$w\in \interpret{\alpha^{(l)}_{ij}}$ であるとき、&lt;br /&gt;
記号列 $w$ による $q_{i}$ から $q_{j}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{0}}, q_{k_{1}}, \ldots, q_{k_{p}} \]&lt;br /&gt;
（ただし、$k_{0}=i$, $k_{p}=j$, $1\leq q\leq p-1$ のとき $1\leq k_{q} \leq l$）が存在することを $l$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$l=0$ については明らか。&lt;br /&gt;
&lt;br /&gt;
$l&amp;gt;0$ のとき、$w\in \interpret{\alpha^{(l)}_{ij}}$ であるとすると、&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{ij}}$ または&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}}$ である。&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{ij}}$ のときは帰納法の仮定より明らか。&lt;br /&gt;
&lt;br /&gt;
$w\in \interpret{ \alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}}$ とする。すると&lt;br /&gt;
$w_{1}\in \interpret{\alpha^{(l-1)}_{il}}$,&lt;br /&gt;
$w_{2}\in \interpret{\alpha^{(l-1)}_{ll}}$,&lt;br /&gt;
$w_{3}\in \interpret{\alpha^{(l-1)}_{lj}}$,&lt;br /&gt;
$w=w_{1}(w_{2})^{s}w_{3}$ （ただし、$s\in \mathnat$） を満たす記号列 $w_{1}$, $w_{2}$, $w_{3}$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から、&lt;br /&gt;
記号列 $w_{t}$ （$t=1, 2, 3$）による$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{t0}}, q_{k_{t1}}, \ldots, q_{k_{tp}} \]&lt;br /&gt;
（ただし、$k_{10}=i$, $k_{1p}=k_{20}=k_{2p}=k_{30}=l$, $k_{3p}=j$, $1\leq q\leq p-1$ のとき $1\leq k_{q} \leq l-1$）が存在する。&lt;br /&gt;
すると、&lt;br /&gt;
記号列 $w$ による $q_{i}$ から $q_{j}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{10}}, q_{k_{11}}, \ldots, q_{k_{1p}}, \overbrace{q_{k_{21}}, \ldots, q_{k_{2p}}}^{s}, q_{k_{31}}, \ldots, q_{k_{3p}} \]&lt;br /&gt;
が存在することがわかる。&lt;br /&gt;
&lt;br /&gt;
以上のことに注意すると、&lt;br /&gt;
\[ \alpha^{(n)}_{1F_{0}}+\alpha^{(n)}_{1F_{1}}+ \cdots + \alpha^{(n)}_{1F_{m}}\]&lt;br /&gt;
は $\mathautomaton{A}$ が受理する記号列全体である。&lt;br /&gt;
 &lt;br /&gt;
以上より(3. $\Rightarrow$ 2.)は示された。&lt;br /&gt;
{{end  |proof }}&lt;br /&gt;
&lt;br /&gt;
== Myhill-Nerodeの定理  ==&lt;br /&gt;
この節ではMyhill-Nerodeの定理について述べる．&lt;br /&gt;
この定理は正規言語の[[形式言語#def-quotient |左商]]による定式化とみなせる．&lt;br /&gt;
&lt;br /&gt;
{{theorem | type=theorem | name=Myhill-Nerodeの定理 | label=thm-Myhill-Nerode }}&lt;br /&gt;
$\Sigma$ 上の形式言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $\inverse{\kleenecl{\Sigma}}L$ は有限集合。&lt;br /&gt;
&lt;br /&gt;
{{begin  |proof | collapsible=1 }}&lt;br /&gt;
(1. $\Rightarrow$ 2.)&lt;br /&gt;
形式言語 $L$ は正規言語であると仮定する。&lt;br /&gt;
&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }} より、$L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
よって、[[有限オートマトン#prop-finite_automaton_non_emptyword | $L$ を受理する決定性有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が存在する]]。&lt;br /&gt;
&lt;br /&gt;
$\mathautomaton{A}$ は決定性有限オートマトンなので、任意の記号列 $w\in \kleenecl{\Sigma}$ に対して、次のいずれかが成り立つことに注意する．&lt;br /&gt;
# 記号列 $w\in \kleenecl{\Sigma}$ による $q_{I}$ から始まる $\mathautomaton{A}$ の状態遷移は存在しない。&lt;br /&gt;
# 記号列 $w\in \kleenecl{\Sigma}$ による $q_{I}$ から $q_{w} への$ $\mathautomaton{A}$ の状態遷移が存在し、$q_{w}$ は一意。&lt;br /&gt;
&lt;br /&gt;
前者のとき、$\inverse{w}L$ は空集合である。&lt;br /&gt;
後者のとき、決定性有限オートマトン $\mathautomaton{A}_{w}=(Q, \Sigma, \Delta, q_{w}, F)$ は $\inverse{w}L$ を受理する。&lt;br /&gt;
&lt;br /&gt;
$Q$ は有限集合であり、$q_{w} = q_{w'}$ ならば $\mathautomaton{A}_{w} = \mathautomaton{A}_{w'}$ に注意すると、&lt;br /&gt;
$\inverse{\kleenecl{\Sigma}}L$ の濃度は高々 $\mathcountfunc{Q} + 1$ である&lt;br /&gt;
（ただし、$\#$ は有限集合を受け取りそこに所属する元の個数を返す関数）。&lt;br /&gt;
&lt;br /&gt;
(2. $\Rightarrow$ 1.)&lt;br /&gt;
$\Sigma$ 上の形式言語 $L$ について $\inverse{\kleenecl{\Sigma}}L$ は有限集合と仮定する。&lt;br /&gt;
&lt;br /&gt;
集合 $\Delta_{L}$ と $F_{L}$ を次のように定義する。&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\Delta_{L} &amp;amp;:= \mathsetintension{(\inverse{w}L, a, \inverse{wa}L)}{w\in\kleenecl{\Sigma}} \\&lt;br /&gt;
F_{L} &amp;amp;:= \mathsetintension{L'\in \inverse{\kleenecl{\Sigma}}L}{\emptyword\in L'}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
$\inverse{\kleenecl{\Sigma}}L$ は有限集合であることから、&lt;br /&gt;
$\mathautomaton{A}_{L}=(\inverse{\kleenecl{\Sigma}}L, \Sigma, \Delta_{L}, L, F_{L})$&lt;br /&gt;
は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
$\mathautomaton{A}_{L}$ が受理する言語が $L$ であることを示す。&lt;br /&gt;
&lt;br /&gt;
$w\in L$ を仮定してする。$w$ が $\mathautomaton{A}_{L}$ に受理されることを示す。&lt;br /&gt;
&lt;br /&gt;
このとき、記号列 $w$ による $L$ から $\inverse{w}L$ への $\mathautomaton{A}_{L}$ の状態遷移が存在する。&lt;br /&gt;
$w\in L$ であるから、$\emptyword\in \inverse{w}L$。よって $\inverse{w}L\in F_{L}$。&lt;br /&gt;
ゆえに $w$ は $\mathautomaton{A}_{L}$ に受理される。&lt;br /&gt;
&lt;br /&gt;
$w$ が $\mathautomaton{A}_{L}$ に受理されることを仮定する。$w\in L$ を示す。&lt;br /&gt;
&lt;br /&gt;
$w$ が $\mathautomaton{A}_{L}$ に受理されることから&lt;br /&gt;
記号列 $w$ による $L$ から $\inverse{w}L$ への $\mathautomaton{A}_{L}$ の状態遷移が存在し、&lt;br /&gt;
$\inverse{w}L\in F_{L}$ である。よって $\emptyword\in \inverse{w}L$。これは $w\in L$ を意味する。&lt;br /&gt;
&lt;br /&gt;
以上より $\mathautomaton{A}_{L}$ が受理する言語は $L$ である。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
== 正規言語のクラスの閉包性 その２ ==&lt;br /&gt;
この節では正規言語のクラスが補集合演算，共通部分演算，鏡像，左商，右商によって閉じていることを述べる．&lt;br /&gt;
&amp;lt;!-- 代入についてもそのうち書く --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=prop-regular-exp }}&lt;br /&gt;
# $\kleenecl{\Sigma}$ 上の形式言語 $L$ が正規言語であるならば $\kleenecl{\Sigma}\setminus L$ も正規言語である。&lt;br /&gt;
# 形式言語 $L_{1}$, $L_{2}$ が正規言語であるならば $L_{1}\cap L_{2}$ も正規言語である。&lt;br /&gt;
# 形式言語 $L$ が正規言語であるならば $\mirrorim{L}=\mathsetintension{\mirrorim{w}}{w\in L}$ も正規言語である。&lt;br /&gt;
# $\kleenecl{\Sigma}$ 上の形式言語 $L$ が正規言語であるならば $w\in\kleenecl{\Sigma}$ による左商 $\inverse{w}L$ および右商 $L\inverse{w}$ はいずれも正規言語である。&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
Now, writing......&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
==  正規言語と左線形文法 ==&lt;br /&gt;
この節では正規言語と左線形文法との関係を述べる。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=definition |name=左線形文法 |label=def-left_linear_grammar }}&lt;br /&gt;
'''左線形文法（left linear grammar）'''とは&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# $\Sigma$ と互いに素な'''変数記号（variable）'''の有限集合 $V$&lt;br /&gt;
# '''生成規則（production rule）'''と呼ばれる有限集合 $R \subseteq V \times V\kleenecl{(\Sigma)}\cup \kleenecl{(\Sigma)}$&lt;br /&gt;
# '''開始記号(start symbol)'''または'''初期記号'''と呼ばれる $S\in V$&lt;br /&gt;
&lt;br /&gt;
の４つ組$(V, \Sigma, R, S)$である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
これは、[[句構造言語#def-phrase_structure_grammar | 句構造文法]]の一種である。また、[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]の一種である。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=thm-left_linear_grammar }}&lt;br /&gt;
言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $L$ を生成する左線形文法が存在する。&lt;br /&gt;
&lt;br /&gt;
==  正規言語ではない形式言語の例  ==&lt;br /&gt;
この節では正規言語ではない[[形式言語]]の例を紹介する。&lt;br /&gt;
&lt;br /&gt;
そのような例が存在すること自体は右線形文法が[[集合の濃度#具体的な濃度 | 高々可算個]]しかないことと[[形式言語]]の濃度が[[集合の濃度#具体的な濃度 | 非加算]]であることに注意すると、明らかである。&lt;br /&gt;
しかし、その具体例を構成し、正規言語ではないことを示すことはそれほど簡単ではない。このとき強力な武器となるのが[[有限オートマトン#pumping_lemma | 反復補題]]である。&lt;br /&gt;
&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]] については当該項目を参照せよ。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0^{n}1^{n}$ という形をした記号列全体 |label=ex-counter_example_reg_lang_n }}&lt;br /&gt;
$0^{n}1^{n}$ （ただし、$n\in\mathnat$）という形の記号列全体は正規言語ではない。しかしながら[[文脈自由言語]]ではある．この記号列全体を生成する[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]は[[文脈自由言語#ex-counter_example_reg_lang_n | この例]]を参照せよ．&lt;br /&gt;
&lt;br /&gt;
'''$0^{n}1^{n}$ という形の記号列全体が正規言語ではないことの証明'''&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
背理法により示す。&lt;br /&gt;
&lt;br /&gt;
$0^{n}1^{n}$ という形の記号列全体 $L$ が正規言語であると仮定する。&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }}より、$L=L(\mathautomaton{A})$ を満たす&lt;br /&gt;
有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n_{0}=|Q|$ とする。仮定より&lt;br /&gt;
$\mathautomaton{A}$ は $w=0^{n_{0}}1^{n_{0}}$ を受理する。&lt;br /&gt;
すると$\left|w\right|&amp;gt;n_{0}$ であるから&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]] より&lt;br /&gt;
次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w=xyz$。&lt;br /&gt;
# $\left|y\right|&amp;gt;0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は&lt;br /&gt;
$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n_{0}$。&lt;br /&gt;
&lt;br /&gt;
このとき、 $xy=0^{k}$ （ただし、$0\lt k\leq n_{0}$）&lt;br /&gt;
であることに注意する。&lt;br /&gt;
すると、 $x=0^{k_{0}}$, $y=0^{k_{1}}$&lt;br /&gt;
（ただし、$0\leq k_{0}\leq k$, $0\lt k_{1}\leq k$,&lt;br /&gt;
$k=k_{0}+k_{1}$）&lt;br /&gt;
を満たす自然数 $k_{0}$, $k_{1}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
さて、$\mathautomaton{A}$ は&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]]の条件から、&lt;br /&gt;
記号列 $xz$ を受理するはずである。&lt;br /&gt;
しかし、$xz=0^{n_{0}-k_{1}}b^{n_{0}}$, $n_{0}-k_{1}\lt n_{0}$&lt;br /&gt;
であるから $xz\notin L$ である。&lt;br /&gt;
これは $L=L(\mathautomaton{A})$ に矛盾する。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$w\mirrorim{w}$ という形をした記号列全体 |label=ex-counter_example_reg_lang_mirror }}&lt;br /&gt;
$w\mirrorim{w}$（ただし、$n\in\mathnat$）という形の記号列全体は正規言語ではない。しかしながら[[文脈自由言語]]ではある．この記号列全体を生成する[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]は[[文脈自由言語#ex-counter_example_reg_lang_mirror | この例]]を参照せよ．&lt;br /&gt;
'''$w\mirrorim{w}$ という形の記号列全体が正規言語ではないことの証明'''&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
背理法により示す。&lt;br /&gt;
&lt;br /&gt;
$w\mirrorim{w}$ という形の記号列全体 $L$ が正規言語であると仮定する。&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }}より、&lt;br /&gt;
$L=L(\mathautomaton{A})$ を満たす&lt;br /&gt;
有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n_{0}=|Q|$ とする。以下 $w_{0}=0^{n_{0}}1$ とする。&lt;br /&gt;
仮定より $\mathautomaton{A}$ は $w_{0}\mirrorim{w_{0}}$ を受理する。&lt;br /&gt;
すると $\left|w_{0}\mirrorim{w_{0}}\right|&amp;gt;n_{0}$ であるから&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題 ]] より&lt;br /&gt;
次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w_{0}\mirrorim{w_{0}}=xyz$。&lt;br /&gt;
# $\left|y\right|&amp;gt;0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は&lt;br /&gt;
$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n_{0}$。&lt;br /&gt;
&lt;br /&gt;
このとき、 $xy=0^{k}$ （ただし、$0\lt k\leq n_{0}$）&lt;br /&gt;
であることに注意する。&lt;br /&gt;
すると、 $x=0^{k_{0}}$, $y=0^{k_{1}}$&lt;br /&gt;
（ただし、$0\leq k_{0}\leq k$, $0\lt k_{1}\leq k$,&lt;br /&gt;
$k=k_{0}+k_{1}$）&lt;br /&gt;
を満たす自然数 $k_{0}$, $k_{1}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
さて、$\mathautomaton{A}$ は&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題 ]] の条件から、&lt;br /&gt;
記号列 $xz$ を受理するはずである。&lt;br /&gt;
しかし、$xz=0^{n_{0}-k_{1}}1\mirrorim{w_{0}}=0^{n_{0}-k_{1}}110^{n_{0}}$, $n_{0}-k_{1}\lt n_{0}$&lt;br /&gt;
であるから $xz\notin L$ である。&lt;br /&gt;
これは $L=L(\mathautomaton{A})$ に矛盾する。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
==  参考文献 ==&lt;br /&gt;
# 新屋 良磨、オートマトン理論再考、コンピュータ ソフトウェア、2017、34 巻、3 号、p. 3_3-3_35、公開日 2017/09/25、Print ISSN 0289-6540、https://doi.org/10.11309/jssst.34.3_3、https://www.jstage.jst.go.jp/article/jssst/34/3/34_3_3/_article/-char/ja&lt;br /&gt;
# 五十嵐喜英他、『[[数理情報科学シリーズ ２４ オートマトンと形式言語の基礎]]』、牧野書店、2011&lt;br /&gt;
&lt;br /&gt;
== 関連項目 ==&lt;br /&gt;
* [[形式言語]]&lt;br /&gt;
* [[正規表現]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
|+ Chomsky階層&lt;br /&gt;
! 文法のタイプ&lt;br /&gt;
! 言語のクラス&lt;br /&gt;
! 計算モデル&lt;br /&gt;
|-&lt;br /&gt;
! タイプ0&lt;br /&gt;
| [[句構造言語]]&lt;br /&gt;
| [[Turingマシン]]&lt;br /&gt;
|-&lt;br /&gt;
! タイプ1&lt;br /&gt;
| [[文脈依存言語]]&lt;br /&gt;
| [[線形有界オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ2&lt;br /&gt;
| [[文脈自由言語]]&lt;br /&gt;
| [[プッシュダウン・オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ3&lt;br /&gt;
| [[正規言語]]&lt;br /&gt;
| [[有限オートマトン]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E6%AD%A3%E8%A6%8F%E8%A8%80%E8%AA%9E&amp;diff=8103</id>
		<title>正規言語</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E6%AD%A3%E8%A6%8F%E8%A8%80%E8%AA%9E&amp;diff=8103"/>
		<updated>2021-07-30T17:00:51Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: Proved Mythill Nerode theorem&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{TOC |align=right |noautonum=1 }}&amp;lt;!-- 右寄せ連番無し目次をここに表示 --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Category:形式言語理論|セイキゲンゴ]]&lt;br /&gt;
{{begin |preamble}}&lt;br /&gt;
&amp;lt;!-- 参考文献 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 定理環境 --&amp;gt;&lt;br /&gt;
{{newtheorem |type=theorem |display=定理}}&lt;br /&gt;
{{newtheorem |type=lemma |display=補題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=definition |display=定義 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=prop |display=命題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=example |display=例 |family=theorem }}&lt;br /&gt;
&amp;lt;!-- MathJax commands --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\newcommand{\mathsetextension}[1]{%&lt;br /&gt;
\left\{ #1 \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathsetintension}[2]{%&lt;br /&gt;
\left\{ #1 \left| #2 \right.\right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathof}[2]{%&lt;br /&gt;
\mathop{#1}\left(#2\right)%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathderiv}{\mathrel{\mathop{\Rightarrow}^{*}}}&lt;br /&gt;
\newcommand{\mathgen}{\rightsquigarrow}&lt;br /&gt;
\newcommand{\mathgenfun}[1]{\mathbf{#1}}&lt;br /&gt;
\newcommand{\mirrorim}[1]{\overleftarrow{#1}}&lt;br /&gt;
\newcommand{\emptyword}{\varepsilon}&lt;br /&gt;
\newcommand{\kleenecl}[1]{{#1}^{*}}&lt;br /&gt;
\newcommand{\inverse}[1]{{#1}^{-1}}&lt;br /&gt;
\newcommand{\interpret}[1]{[\![#1]\!]}&lt;br /&gt;
\newcommand{\mathautomaton}[1]{\mathcal{#1}}&lt;br /&gt;
\newcommand{\mathnat}{\mathbb{N}}&lt;br /&gt;
\newcommand{\mathcountfunc}{\mathop{\#}}&lt;br /&gt;
&lt;br /&gt;
\newcommand{\qed}{\blacksquare}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
{{end |preamble}}&lt;br /&gt;
'''正規言語（regular language）'''とは右線形文法(right linear grammar)または左線形文法(left linear grammar)によって定められる形式言語である。&lt;br /&gt;
&lt;br /&gt;
右線形文法は句構造文法の一種であるから、&lt;br /&gt;
右線形言語は[[句構造言語]]の一種である。&lt;br /&gt;
&lt;br /&gt;
また、右線形文法は文脈自由文法の一種であるから、&lt;br /&gt;
右線形言語は[[文脈自由言語]]の一種である。&lt;br /&gt;
&lt;br /&gt;
以下、項目[[形式言語]]、[[句構造言語]]において定められている言語上の演算や文法の等価性の定義などについては特に断らず用いる。&lt;br /&gt;
&lt;br /&gt;
==  正規言語の導入 ==&lt;br /&gt;
この節では'''正規言語'''を定義する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=definition |name=右線形文法 |label=def-right_linear_grammar }}&lt;br /&gt;
'''右線形文法（right linear grammar）'''とは&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# $\Sigma$ と互いに素な'''変数記号（variable）'''の空でない有限集合 $V$&lt;br /&gt;
# '''生成規則（production rule）'''と呼ばれる有限集合 $R \subseteq V \times (\kleenecl{\Sigma}V)\cup (\kleenecl{\Sigma})$&lt;br /&gt;
# '''開始記号(start symbol)'''または'''初期記号'''と呼ばれる $S\in V$&lt;br /&gt;
&lt;br /&gt;
の４つ組$(V, \Sigma, R, S)$である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
これは、[[句構造言語#def-phrase_structure_grammar | 句構造文法]]の一種である。また、[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]の一種である。&lt;br /&gt;
&lt;br /&gt;
[[句構造言語]]のときと同様、$\Sigma$ の元を'''終端記号(terminal)'''、$V$ の元を'''非終端記号(non-terminal)'''と呼ぶことも多い。&lt;br /&gt;
&lt;br /&gt;
以下では、元$(A, \alpha)\in R$ のことを$A\mathgen\alpha$と書く。&lt;br /&gt;
&lt;br /&gt;
[[句構造言語#def-derivation | 導出]]、[[句構造言語#def-phrase_structure_lang | 生成される言語]]などは&lt;br /&gt;
句構造言語と同様に定義される。&lt;br /&gt;
&lt;br /&gt;
'''正規言語'''とは何らかの右線形文法によって生成される言語のことを言う。&lt;br /&gt;
&lt;br /&gt;
==  正規言語の例 ==&lt;br /&gt;
この節では正規言語の例を紹介する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列全体 |label=ex-all_lang }}&lt;br /&gt;
$V=\left\{ S \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen\emptyword, S\mathgen 0S, S\mathgen 1S \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
$0$ と $1$ からなる有限記号列全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、$0$ と $1$ からなる有限記号列全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる。&lt;br /&gt;
&lt;br /&gt;
\begin{gather*}&lt;br /&gt;
S \Rightarrow \emptyword \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 0\emptyword = 0 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 1\emptyword = 1 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 00\emptyword = 00 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 01\emptyword = 01 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 10\emptyword = 10 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 11\emptyword = 11 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 000S \Rightarrow 000\emptyword = 000 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 001S \Rightarrow 001\emptyword = 001 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 010S \Rightarrow 010\emptyword = 010 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 011S \Rightarrow 011\emptyword = 011 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 100S \Rightarrow 100\emptyword = 100 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 101S \Rightarrow 101\emptyword = 101 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 110S \Rightarrow 110\emptyword = 110 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 111S \Rightarrow 111\emptyword = 111&lt;br /&gt;
\end{gather*}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体 |label=ex-only_three_one_lang }}&lt;br /&gt;
$V=\left\{ S, A_{1}, A_{2}, A_{3} \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen 0S, S\mathgen 1A_{1}, A_{1}\mathgen 0A_{1}, A_{1}\mathgen 1A_{2}, A_{2}\mathgen 0A_{2}, A_{2}\mathgen 1A_{3}, A_{3}\mathgen 0A_{3}, A_{3}\mathgen \emptyword \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
S &amp;amp;\Rightarrow 1A_{1} \Rightarrow 11A_{2} \Rightarrow 111A_{3} \Rightarrow 111\emptyword = 111 \\&lt;br /&gt;
S &amp;amp;\Rightarrow 0S \\&lt;br /&gt;
&amp;amp;\Rightarrow 01A_{1} \Rightarrow 010A_{1} \Rightarrow 0100A_{1} \\&lt;br /&gt;
&amp;amp;\Rightarrow 01001A_{2} \Rightarrow 010010A_{2} \Rightarrow 0100100A_{2} \Rightarrow 01001000A_{2} \\&lt;br /&gt;
&amp;amp;\Rightarrow 010010001A_{3} \Rightarrow 0100100010A_{3} \Rightarrow 01001000100A_{3} \Rightarrow 010010001000A_{3} \Rightarrow 0100100010000A_{3} \Rightarrow 0100100010000\emptyword =0100100010000&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=自然数の二進表現全体 |label=ex-bi_lang }}&lt;br /&gt;
$V=\left\{ S, A_{1} \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen 0, S\mathgen 1A_{1}, A_{1}\mathgen 0A_{1}, A_{1}\mathgen 1A_{1}, A_{1}\mathgen \emptyword \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
自然数の二進表現全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、自然数の二進表現全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる&lt;br /&gt;
&lt;br /&gt;
\begin{gather*}&lt;br /&gt;
S \Rightarrow 0 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 1\emptyword = 1 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 10\emptyword = 10 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 11\emptyword = 11 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 100\emptyword = 100 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 101\emptyword = 101 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 100\emptyword = 110 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 111\emptyword = 111 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 1000A_{1} \Rightarrow 1000\emptyword = 1000 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 1001A_{1} \Rightarrow 1001\emptyword = 1001 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 1010A_{1} \Rightarrow 1010\emptyword = 1010 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 1011A_{1} \Rightarrow 1011\emptyword = 1011 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 1100A_{1} \Rightarrow 1100\emptyword = 1100 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 1101A_{1} \Rightarrow 1101\emptyword = 1101 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 1110A_{1} \Rightarrow 1110\emptyword = 1110 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 1111A_{1} \Rightarrow 1111\emptyword = 1111&lt;br /&gt;
\end{gather*}&lt;br /&gt;
&lt;br /&gt;
==  正規表現、有限オートマトンとの関係 ==&lt;br /&gt;
この節では正規言語、[[正規表現]]および[[有限オートマトン]]との関係を述べる。以下では[[正規表現]]と[[有限オートマトン]]の定義などは既知とする。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=theorem |label=thm-regularandNFA }}&lt;br /&gt;
言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $L=\interpret{\alpha}$ なる正規表現 $\alpha$ が存在する。&lt;br /&gt;
# $L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
この節ではこの定理を証明する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=lemma |label=lemma-of-thm-regularandNFA }}&lt;br /&gt;
正規言語 $G=(V, \Sigma, R, S)$ に対して、&lt;br /&gt;
$G$ と[[句構造言語#句構造文法の等価性 | 等価 ]]であって、&lt;br /&gt;
すべての生成規則の右辺が&lt;br /&gt;
$(\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
の元である右線形文法が存在する。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
正規言語 $G=(V, \Sigma, R, S)$ について、&lt;br /&gt;
$R=\{A_{0}\mathgen \alpha_{0}, \ldots, A_{n}\mathgen \alpha_{n}\}$ （ただし $n\in\mathnat$）&lt;br /&gt;
とする。&lt;br /&gt;
&lt;br /&gt;
$G_{i}=(V_{i}, \Sigma, R_{i}, S)$&lt;br /&gt;
（ただし $n=0, \ldots, n+1$）&lt;br /&gt;
を次のように定義する。&lt;br /&gt;
&lt;br /&gt;
* $G_{0}=G$&lt;br /&gt;
* $\alpha_{i}\in (\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
のとき、$G_{i+1}:=G_{i}$ とする。&lt;br /&gt;
* $\alpha_{i}\in \kleenecl{\Sigma} \setminus (\Sigma \cup\{\emptyword\})$ のとき、$\alpha_{i}=a_{0}\ldots a_{m}$ （ただし、$m$ は $1$ 以上の自然数であって、$a_{j}\in \Sigma$ for $j\in \mathnat$）とする。&lt;br /&gt;
** $V_{i+1}:=V_{i}\cup \{B_{0}, \ldots, B_{m}\}$ （ただし、各 $B_{j}$ は $B_{j}\notin V_{i}\cup \Sigma$ を満たす変数記号）。&lt;br /&gt;
** $R_{i+1}:=R_{i}\setminus \{A_{i}\mathgen \alpha_{i}\}\cup \{A_{i} \mathgen a_{0}B_{0}, B_{0} \mathgen a_{1}B_{1}, \ldots, B_{m-1} \mathgen a_{m}B_{m}, B_{m}\mathgen \emptyword\}$。&lt;br /&gt;
* $\alpha_{i}\in \kleenecl{\Sigma}V\setminus (\Sigma \cup\{\emptyword\})V$ のとき、$\alpha_{i}=a_{0}\ldots a_{m} A'_{i}$ （ただし、$m$ は $1$ 以上の自然数であって、$a_{j}\in \Sigma$ for $j\in \mathnat$）とする。&lt;br /&gt;
** $V_{i+1}:=V_{i}\cup \{B_{0}, \ldots, B_{m}\}$ （ただし、各 $B_{j}$ は $B_{j}\notin V_{i}\cup \Sigma$ を満たす変数記号）。&lt;br /&gt;
** $R_{i+1}:=R_{i}\setminus \{A_{i}\mathgen \alpha_{i}\}\cup \{A_{i} \mathgen a_{0}B_{0}, B_{0} \mathgen a_{1}B_{1}, \ldots, B_{m-1} \mathgen a_{m}B_{m}, B_{m}\mathgen A'_{i}\}$。&lt;br /&gt;
&lt;br /&gt;
各 $i$ に対して、 $L(G_{i})=L(G_{i+1})$ に注意すると&lt;br /&gt;
$G_{n+1}$ が求める文法であることがわかる。&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 | display=Proof of {{ref |type=theorem |label=thm-regularandNFA }}. }}&lt;br /&gt;
(2. $\Rightarrow$ 1.)&lt;br /&gt;
$L=\interpret{\alpha}$ なる正規表現 $\alpha$ が存在するとき、&lt;br /&gt;
$L$ を生成する右線形文法が存在することを言えば良い。&lt;br /&gt;
&lt;br /&gt;
正規表現の構成についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
Case 1.&lt;br /&gt;
$L=\interpret{\emptyset}=\emptyset$ のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \emptyset, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 2.&lt;br /&gt;
$L=\interpret{\emptyword}=\{\emptyword\}$ のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \{S \mathgen \emptyword\}, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 3.&lt;br /&gt;
$L=\interpret{a}=\{a\}$ (ただし、$a\in \Sigma$) のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \{S \mathgen a\}, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 4.&lt;br /&gt;
$L=\interpret{\alpha\beta}=\interpret{\alpha}\cdot\interpret{\beta}$&lt;br /&gt;
（ただし、$\alpha$, $\beta$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$, $\interpret{\beta}$&lt;br /&gt;
を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$\interpret{\alpha}$ を生成する右線形文法を&lt;br /&gt;
$G=(V_{\alpha}, \Sigma, R_{\alpha}, S_{\alpha})$、&lt;br /&gt;
$\interpret{\beta}$ を生成する右線形文法を&lt;br /&gt;
$G=(V_{\beta}, \Sigma, R_{\beta}, S_{\beta})$ とする。&lt;br /&gt;
このとき、$V_{\alpha}\cap V_{\beta}=\emptyset$ と仮定しても&lt;br /&gt;
一般性を失わない（必要であれば、変数記号を適切に置き換えれば良い）。&lt;br /&gt;
&lt;br /&gt;
さて、&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
R_{\alpha}^{(V)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R_{\alpha}}{\gamma \in \kleenecl{\Sigma}V}  \\&lt;br /&gt;
R_{\alpha}^{(0)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R_{\alpha}}{\gamma \in \kleenecl{\Sigma}}  &lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$R_{\alpha}=R_{\alpha}^{(V)}\cup R_{\alpha}^{(0)}$,&lt;br /&gt;
$R_{\alpha}^{(V)}\cap R_{\alpha}^{(0)}=\emptyset$ である。&lt;br /&gt;
\[R_{\alpha}^{(S_{\beta})}:=\mathsetintension{A\mathgen \gamma S_{\beta}}{A\mathgen \gamma \in R_{\alpha}, \gamma \in \kleenecl{\Sigma}}\]&lt;br /&gt;
とすると、&lt;br /&gt;
$G=(V_{\alpha}\cup V_{\beta}, \Sigma, R_{\alpha}^{V}\cup R_{\alpha}^{(S_{\beta})}\cup R_{\beta}, S_{\alpha})$&lt;br /&gt;
は$\interpret{\alpha}\cdot\interpret{\beta}$ を生成する右線形文法である。&lt;br /&gt;
&lt;br /&gt;
Case 5.&lt;br /&gt;
$L=\interpret{\alpha +\beta}=\interpret{\alpha}\cup \interpret{\beta}$&lt;br /&gt;
（ただし、$\alpha$, $\beta$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$, $\interpret{\beta}$&lt;br /&gt;
を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$\interpret{\alpha}$ を生成する右線形文法を&lt;br /&gt;
$G=(V_{\alpha}, \Sigma, R_{\alpha}, S_{\alpha})$、&lt;br /&gt;
$\interpret{\beta}$ を生成する右線形文法を&lt;br /&gt;
$G=(V_{\beta}, \Sigma, R_{\beta}, S_{\beta})$ とおく&lt;br /&gt;
（ただし、$V_{\alpha}\cap V_{\beta}=\emptyset$ とする）。&lt;br /&gt;
&lt;br /&gt;
このとき、右線形文法&lt;br /&gt;
$G=(V_{\alpha}\cup V_{\beta}\cup \{S\}, \Sigma, R_{\alpha}\cup R_{\beta}\cup \{S\mathgen S_{\alpha}, S\mathgen S_{\beta}\}, S)$&lt;br /&gt;
（ただし、$S\notin V_{\alpha}\cup V_{\beta}$）は&lt;br /&gt;
$\interpret{\alpha}\cup \interpret{\beta}$ を生成する。&lt;br /&gt;
&lt;br /&gt;
Case 6.&lt;br /&gt;
$L=\interpret{\kleenecl{\alpha}}=\kleenecl{\interpret{\alpha}}$&lt;br /&gt;
（ただし、$\alpha$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$&lt;br /&gt;
を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$\interpret{\alpha}$ を生成する右線形文法を&lt;br /&gt;
$G=(V, \Sigma, R, S)$ とする。&lt;br /&gt;
&lt;br /&gt;
さて、&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
R^{(V)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R}{\gamma \in \kleenecl{\Sigma}V} \\&lt;br /&gt;
R^{(0)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R}{\gamma \in \kleenecl{\Sigma}}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$R=R^{(V)}\cup R^{(0)}$,&lt;br /&gt;
$R^{(V)}\cap R^{(0)}=\emptyset$ である。&lt;br /&gt;
&lt;br /&gt;
\[R^{(S)}:=\mathsetintension{A\mathgen \gamma S}{A\mathgen \gamma \in R, \gamma \in \kleenecl{\Sigma}}\]&lt;br /&gt;
とすると、右線形文法&lt;br /&gt;
$G=(V, \Sigma, R^{(V)}\cup R^{(S)}\cup \{S\mathgen \emptyword\}, S)$ は&lt;br /&gt;
$\kleenecl{\interpret{\alpha}}$ を生成する。&lt;br /&gt;
&lt;br /&gt;
以上、Case 1-6 より(2. $\Rightarrow$ 1.) は示された。&lt;br /&gt;
&lt;br /&gt;
(1. $\Rightarrow$ 3.)&lt;br /&gt;
$L$ が正規言語であるとき、{{ref |type=lemma |label=lemma-of-thm-regularandNFA }}から&lt;br /&gt;
すべての生成規則の右辺が&lt;br /&gt;
$(\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
の元である$L$ を生成する右線形文法が存在する。&lt;br /&gt;
この文法を $G=(V, \Sigma, R, S)$ とする。&lt;br /&gt;
&lt;br /&gt;
まず、有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \delta, q_{I}, F)$&lt;br /&gt;
を次のように定義する。&lt;br /&gt;
&lt;br /&gt;
* $Q=V \cup \{f\}$ （ただし、$f\notin V$）&lt;br /&gt;
* $q_{I}=S$&lt;br /&gt;
* $\Delta = \{(A, a, A') | A, A'\in V, a\in \Sigma\cup\{\emptyword\}, A \mathgen aA'\in R \} \cup \{ (A, a, f) | A\in V, a\in \Sigma\cup\{\emptyword\}, A \mathgen a\in R\} \}$&lt;br /&gt;
* $F=\{f\}$&lt;br /&gt;
&lt;br /&gt;
次に、$wA\in \kleenecl{\Sigma}V$&lt;br /&gt;
に対して以下の２条件は同値であることを示す。&lt;br /&gt;
&lt;br /&gt;
(a) $S$ から始まる&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G}\cdots \Rightarrow_{G} \alpha_{n}(=wA)\]&lt;br /&gt;
(ただし、$\alpha_{i}=w_{i}A_{i}$ for $1\leq i\leq n$)&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
&lt;br /&gt;
(b) 記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ A_{0}, A_{1}, \ldots, A_{n}\]&lt;br /&gt;
（ただし、$A_{0}=S$, $A_{n}=A$）が存在する。&lt;br /&gt;
&lt;br /&gt;
(a) $\Rightarrow$ (b) を $n$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$n=1$ のとき、&lt;br /&gt;
$w=a$ なる $a\in\Sigma\cup\{\emptyword\}$が存在し、&lt;br /&gt;
$S\mathgen aA \in R$ であるはずである。&lt;br /&gt;
このとき、$\mathautomaton{A}$ の定義から&lt;br /&gt;
$(S, a, A)\in \Delta$である。&lt;br /&gt;
ゆえに、記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A \]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n&amp;gt;1$ のとき、&lt;br /&gt;
$w=w'a$ （ただし、$a\in \Sigma\cup\{\emptyword\}$）とおく。&lt;br /&gt;
このとき、$G$ の生成規則の形から&lt;br /&gt;
$w_{n-1}=w'$, &lt;br /&gt;
$A_{n-1}\mathgen aA \in R$&lt;br /&gt;
である。&lt;br /&gt;
このとき、帰納法の仮定から&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n-1}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[S, A_{1}, \ldots, A_{n-1} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
$A_{n-1}\mathgen aA \in R$&lt;br /&gt;
であるから、&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$であることに注意すると&lt;br /&gt;
記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{1}, \ldots, A_{n-1}, A \]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
(b) $\Rightarrow$ (a) を $n$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$n=1$ のとき、&lt;br /&gt;
$w=a$ なる $a\in\Sigma\cup\{\emptyword\}$が存在し、&lt;br /&gt;
$(S, a, A)\in \Delta$ のはずである。&lt;br /&gt;
このとき、$\mathautomaton{A}$ の定義から&lt;br /&gt;
$S\mathgen aA \in R$ である。ゆえに&lt;br /&gt;
\[ S \Rightarrow_{G} aA \]&lt;br /&gt;
である。&lt;br /&gt;
&lt;br /&gt;
$n&amp;gt;1$ のとき、&lt;br /&gt;
記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[A_{0}, A_{1}, \ldots, A_{n-1}A_{n} \]&lt;br /&gt;
（ただし、$A_{0}=S$, $A_{n}=A$）が存在すると仮定する。&lt;br /&gt;
すると、&lt;br /&gt;
$w=w'a$,&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$&lt;br /&gt;
を満たす&lt;br /&gt;
$a\in\Sigma\cup\{\emptyword\}$, $w'\in\kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
すると、記号列 $w'$ による $S$ から $A_{n-1}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[A_{0}, A_{1}, \ldots, A_{n-1} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
帰納法の仮定から&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n-1}(=w'A_{n-1})\]&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$ であるから、&lt;br /&gt;
$A_{n-1} \mathgen  aA\in R$ であるので、&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G} \cdots \Rightarrow_{G} w'A_{n-1} \Rightarrow_{G} w'aA(=wA) \]&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
 &lt;br /&gt;
最後に $L=L(\mathautomaton{A})$ を示す。&lt;br /&gt;
&lt;br /&gt;
$w\in L$ を仮定する。&lt;br /&gt;
すると、導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} \Rightarrow_{G} w\]&lt;br /&gt;
が存在する。&lt;br /&gt;
$G$ の生成規則の形から&lt;br /&gt;
$w=w'a$, $\alpha_{n}=w'A_{n}$, $A_{n}\mathgen a \in R$&lt;br /&gt;
を満たす $A_{n}\in V$, $a\in \Sigma\cup\{\emptyword\}$, &lt;br /&gt;
$w'\in \kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
このとき、&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n}$ への $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, A_{1}, \ldots, A_{n} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
$A_{n}\mathgen a \in R$&lt;br /&gt;
であるから、&lt;br /&gt;
$(A_{n}, a, f)\in \Delta$&lt;br /&gt;
に注意すると、&lt;br /&gt;
記号列 $w'a=w$ による $S$ から $f$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, \ldots, A_{n}, f \]&lt;br /&gt;
が存在する。&lt;br /&gt;
ゆえに $w\in L(\mathautomaton{A})$ である。&lt;br /&gt;
&lt;br /&gt;
逆に、$w\in L(\mathautomaton{A})$ とする。&lt;br /&gt;
すると、&lt;br /&gt;
記号列 $w$ による $S$ から $f$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, A_{1}, \ldots, A_{n}, f\]&lt;br /&gt;
が存在する。&lt;br /&gt;
すると、&lt;br /&gt;
$w=w'a$, $(A_{n}, a, f) \in \Delta$&lt;br /&gt;
を満たす $a\in \Sigma\cup\{\emptyword\}$, &lt;br /&gt;
$w'\in \kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
また、&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, \ldots, A_{n} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
よって、導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} (=w'A_{n})\]&lt;br /&gt;
が存在する。&lt;br /&gt;
$(A_{n}, a, f) \in \Delta$ から&lt;br /&gt;
$A_{n}\mathgen a$ であるので、&lt;br /&gt;
$w$ の導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} \Rightarrow_{G} w (=w'a)\]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
以上より(1. $\Rightarrow$ 3.)は示された。&lt;br /&gt;
&lt;br /&gt;
(3. $\Rightarrow$ 2.)&lt;br /&gt;
$L$ を受理する有限オートマトンを&lt;br /&gt;
$\mathautomaton{A}=(\{q_{1}, q_{2}, \ldots, q_{n}\}, \Sigma, \Delta, q_{1}, \{q_{F_{0}}, q_{F_{1}}, \ldots, q_{F_{m}}\})$ とおく。&lt;br /&gt;
&lt;br /&gt;
簡単のため、以下&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\sum_{\alpha \in A} \alpha &amp;amp;= (\alpha_{0}+ \cdots + \alpha_{k}) \quad \text{（ただし、A は正規表現の空でない有限集合であって、A=\{a_{0}, \ldots, a_{k}\}）}, \\&lt;br /&gt;
Q_{ij}&amp;amp;=\{a\in \Sigma\cup\{\emptyword\} | (q_{i}, a, q_{j})\in \Delta\}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
という略記を用いる。&lt;br /&gt;
&lt;br /&gt;
正規表現 $\alpha^{(l)}_{ij}$ （ただし、$1\leq i, j \leq n$, $0\leq l \leq n$）を次のように帰納的に定める。&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\alpha^{(0)}_{ij}&amp;amp;=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
\emptyset, &amp;amp; \text{if Q_{ij}=\emptyset}, \\&lt;br /&gt;
\sum_{a\in Q_{ij}}a, &amp;amp; \text{if Q_{ij}\neq \emptyset, i\neq j}; \\&lt;br /&gt;
\kleenecl{\left(\sum_{a\in Q_{ij}}a\right)}, &amp;amp; \text{if Q_{ij}\neq \emptyset, i=j}; &lt;br /&gt;
\end{cases}\\&lt;br /&gt;
\alpha^{(l)}_{ij}&amp;amp;=\alpha^{(l-1)}_{ij} + \alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}, \quad \text{（ただし、1\leq l）}.&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
$w\in \interpret{\alpha^{(l)}_{ij}}$ であるとき、&lt;br /&gt;
記号列 $w$ による $q_{i}$ から $q_{j}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{0}}, q_{k_{1}}, \ldots, q_{k_{p}} \]&lt;br /&gt;
（ただし、$k_{0}=i$, $k_{p}=j$, $1\leq q\leq p-1$ のとき $1\leq k_{q} \leq l$）が存在することを $l$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$l=0$ については明らか。&lt;br /&gt;
&lt;br /&gt;
$l&amp;gt;0$ のとき、$w\in \interpret{\alpha^{(l)}_{ij}}$ であるとすると、&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{ij}}$ または&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}}$ である。&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{ij}}$ のときは帰納法の仮定より明らか。&lt;br /&gt;
&lt;br /&gt;
$w\in \interpret{ \alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}}$ とする。すると&lt;br /&gt;
$w_{1}\in \interpret{\alpha^{(l-1)}_{il}}$,&lt;br /&gt;
$w_{2}\in \interpret{\alpha^{(l-1)}_{ll}}$,&lt;br /&gt;
$w_{3}\in \interpret{\alpha^{(l-1)}_{lj}}$,&lt;br /&gt;
$w=w_{1}(w_{2})^{s}w_{3}$ （ただし、$s\in \mathnat$） を満たす記号列 $w_{1}$, $w_{2}$, $w_{3}$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から、&lt;br /&gt;
記号列 $w_{t}$ （$t=1, 2, 3$）による$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{t0}}, q_{k_{t1}}, \ldots, q_{k_{tp}} \]&lt;br /&gt;
（ただし、$k_{10}=i$, $k_{1p}=k_{20}=k_{2p}=k_{30}=l$, $k_{3p}=j$, $1\leq q\leq p-1$ のとき $1\leq k_{q} \leq l-1$）が存在する。&lt;br /&gt;
すると、&lt;br /&gt;
記号列 $w$ による $q_{i}$ から $q_{j}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{10}}, q_{k_{11}}, \ldots, q_{k_{1p}}, \overbrace{q_{k_{21}}, \ldots, q_{k_{2p}}}^{s}, q_{k_{31}}, \ldots, q_{k_{3p}} \]&lt;br /&gt;
が存在することがわかる。&lt;br /&gt;
&lt;br /&gt;
以上のことに注意すると、&lt;br /&gt;
\[ \alpha^{(n)}_{1F_{0}}+\alpha^{(n)}_{1F_{1}}+ \cdots + \alpha^{(n)}_{1F_{m}}\]&lt;br /&gt;
は $\mathautomaton{A}$ が受理する記号列全体である。&lt;br /&gt;
 &lt;br /&gt;
以上より(3. $\Rightarrow$ 2.)は示された。&lt;br /&gt;
{{end  |proof }}&lt;br /&gt;
&lt;br /&gt;
== Myhill-Nerodeの定理  ==&lt;br /&gt;
この節ではMyhill-Nerodeの定理について述べる．&lt;br /&gt;
この定理は正規言語の[[形式言語#def-quotient |左商]]による定式化とみなせる．&lt;br /&gt;
&lt;br /&gt;
{{theorem | type=theorem | name=Myhill-Nerodeの定理 | label=thm-Myhill-Nerode }}&lt;br /&gt;
$\Sigma$ 上の形式言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $\inverse{\kleenecl{\Sigma}}L$ は有限集合。&lt;br /&gt;
&lt;br /&gt;
{{begin  |proof | collapsible=1 }}&lt;br /&gt;
(1. $\Rightarrow$ 2.)&lt;br /&gt;
形式言語 $L$ は正規言語であると仮定する。&lt;br /&gt;
&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }} より、$L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
よって、[[有限オートマトン#prop-finite_automaton_non_emptyword | $L$ を受理する決定性有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が存在する]]。&lt;br /&gt;
&lt;br /&gt;
$\mathautomaton{A}$ は決定性有限オートマトンなので、任意の記号列 $w\in \kleenecl{\Sigma}$ に対して、次のいずれかが成り立つことに注意する．&lt;br /&gt;
# 記号列 $w\in \kleenecl{\Sigma}$ による $q_{I}$ から始まる $\mathautomaton{A}$ の状態遷移は存在しない。&lt;br /&gt;
# 記号列 $w\in \kleenecl{\Sigma}$ による $q_{I}$ から $q_{w} への$ $\mathautomaton{A}$ の状態遷移が存在し、$q_{w}$ は一意。&lt;br /&gt;
&lt;br /&gt;
前者のとき、$\inverse{w}L$ は空集合である。&lt;br /&gt;
後者のとき、決定性有限オートマトン $\mathautomaton{A}_{w}=(Q, \Sigma, \Delta, q_{w}, F)$ は $\inverse{w}L$ を受理する。&lt;br /&gt;
&lt;br /&gt;
$Q$ は有限集合であり、$q_{w} = q_{w'}$ ならば $\mathautomaton{A}_{w} = \mathautomaton{A}_{w'}$ に注意すると、&lt;br /&gt;
$\inverse{\kleenecl{\Sigma}}L$ の濃度は高々 $\mathcountfunc{Q} + 1$ である&lt;br /&gt;
（ただし、$\#$ は有限集合を受け取りそこに所属する元の個数を返す関数）。&lt;br /&gt;
&lt;br /&gt;
(2. $\Rightarrow$ 1.)&lt;br /&gt;
$\Sigma$ 上の形式言語 $L$ について $\inverse{\kleenecl{\Sigma}}L$ は有限集合と仮定する。&lt;br /&gt;
&lt;br /&gt;
集合 $\Delta_{L}$ と $F_{L}$ を次のように定義する。&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\Delta_{L} &amp;amp;:= \mathsetintension{(\inverse{w}L, a, \inverse{wa}L)}{w\in\kleenecl{\Sigma}} \\&lt;br /&gt;
F_{L} &amp;amp;:= \mathsetintension{L'\in \inverse{\kleenecl{\Sigma}}L}{\emptyword\in L'}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
$\inverse{\kleenecl{\Sigma}}L$ は有限集合であることから、&lt;br /&gt;
$\mathautomaton{A}_{L}=(\inverse{\kleenecl{\Sigma}}L, \Sigma, \Delta_{L}, L, F_{L})$&lt;br /&gt;
は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
$\mathautomaton{A}_{L}$ が受理する言語が $L$ であることを示す。&lt;br /&gt;
&lt;br /&gt;
$w\in L$ を仮定してする。$w$ が $\mathautomaton{A}_{L}$ に受理されることを示す。&lt;br /&gt;
&lt;br /&gt;
このとき、記号列 $w$ による $L$ から $\inverse{w}L$ への $\mathautomaton{A}_{L}$ の状態遷移が存在する。&lt;br /&gt;
$w\in L$ であるから、$\emptyword\in \inverse{w}L$。よって $\inverse{w}L\in F_{L}$。&lt;br /&gt;
ゆえに $w$ は $\mathautomaton{A}_{L}$ に受理される。&lt;br /&gt;
&lt;br /&gt;
$w$ が $\mathautomaton{A}_{L}$ に受理されることを仮定する。$w\in L$ を示す。&lt;br /&gt;
&lt;br /&gt;
$w$ が $\mathautomaton{A}_{L}$ に受理されることから&lt;br /&gt;
記号列 $w$ による $L$ から $\inverse{w}L$ への $\mathautomaton{A}_{L}$ の状態遷移が存在し、&lt;br /&gt;
$\inverse{w}L\in F_{L}$ である。よって $\emptyword\in \inverse{w}L$。これは $w\in L$ を意味する。&lt;br /&gt;
&lt;br /&gt;
以上より $\mathautomaton{A}_{L}$ が受理する言語は $L$ である。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
==  正規言語と左線形文法 ==&lt;br /&gt;
この節では正規言語と左線形文法との関係を述べる。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=definition |name=左線形文法 |label=def-left_linear_grammar }}&lt;br /&gt;
'''左線形文法（left linear grammar）'''とは&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# $\Sigma$ と互いに素な'''変数記号（variable）'''の有限集合 $V$&lt;br /&gt;
# '''生成規則（production rule）'''と呼ばれる有限集合 $R \subseteq V \times V\kleenecl{(\Sigma)}\cup \kleenecl{(\Sigma)}$&lt;br /&gt;
# '''開始記号(start symbol)'''または'''初期記号'''と呼ばれる $S\in V$&lt;br /&gt;
&lt;br /&gt;
の４つ組$(V, \Sigma, R, S)$である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
これは、[[句構造言語#def-phrase_structure_grammar | 句構造文法]]の一種である。また、[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]の一種である。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=thm-left_linear_grammar }}&lt;br /&gt;
言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $L$ を生成する左線形文法が存在する。&lt;br /&gt;
&lt;br /&gt;
==  正規言語ではない形式言語の例  ==&lt;br /&gt;
この節では正規言語ではない[[形式言語]]の例を紹介する。&lt;br /&gt;
&lt;br /&gt;
そのような例が存在すること自体は右線形文法が[[集合の濃度#具体的な濃度 | 高々可算個]]しかないことと[[形式言語]]の濃度が[[集合の濃度#具体的な濃度 | 非加算]]であることに注意すると、明らかである。&lt;br /&gt;
しかし、その具体例を構成し、正規言語ではないことを示すことはそれほど簡単ではない。このとき強力な武器となるのが[[有限オートマトン#pumping_lemma | 反復補題]]である。&lt;br /&gt;
&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]] については当該項目を参照せよ。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0^{n}1^{n}$ という形をした記号列全体 |label=ex-counter_example_reg_lang_n }}&lt;br /&gt;
$0^{n}1^{n}$ （ただし、$n\in\mathnat$）という形の記号列全体は正規言語ではない。しかしながら[[文脈自由言語]]ではある．この記号列全体を生成する[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]は[[文脈自由言語#ex-counter_example_reg_lang_n | この例]]を参照せよ．&lt;br /&gt;
&lt;br /&gt;
'''$0^{n}1^{n}$ という形の記号列全体が正規言語ではないことの証明'''&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
背理法により示す。&lt;br /&gt;
&lt;br /&gt;
$0^{n}1^{n}$ という形の記号列全体 $L$ が正規言語であると仮定する。&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }}より、$L=L(\mathautomaton{A})$ を満たす&lt;br /&gt;
有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n_{0}=|Q|$ とする。仮定より&lt;br /&gt;
$\mathautomaton{A}$ は $w=0^{n_{0}}1^{n_{0}}$ を受理する。&lt;br /&gt;
すると$\left|w\right|&amp;gt;n_{0}$ であるから&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]] より&lt;br /&gt;
次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w=xyz$。&lt;br /&gt;
# $\left|y\right|&amp;gt;0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は&lt;br /&gt;
$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n_{0}$。&lt;br /&gt;
&lt;br /&gt;
このとき、 $xy=0^{k}$ （ただし、$0\lt k\leq n_{0}$）&lt;br /&gt;
であることに注意する。&lt;br /&gt;
すると、 $x=0^{k_{0}}$, $y=0^{k_{1}}$&lt;br /&gt;
（ただし、$0\leq k_{0}\leq k$, $0\lt k_{1}\leq k$,&lt;br /&gt;
$k=k_{0}+k_{1}$）&lt;br /&gt;
を満たす自然数 $k_{0}$, $k_{1}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
さて、$\mathautomaton{A}$ は&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]]の条件から、&lt;br /&gt;
記号列 $xz$ を受理するはずである。&lt;br /&gt;
しかし、$xz=0^{n_{0}-k_{1}}b^{n_{0}}$, $n_{0}-k_{1}\lt n_{0}$&lt;br /&gt;
であるから $xz\notin L$ である。&lt;br /&gt;
これは $L=L(\mathautomaton{A})$ に矛盾する。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$w\mirrorim{w}$ という形をした記号列全体 |label=ex-counter_example_reg_lang_mirror }}&lt;br /&gt;
$w\mirrorim{w}$（ただし、$n\in\mathnat$）という形の記号列全体は正規言語ではない。しかしながら[[文脈自由言語]]ではある．この記号列全体を生成する[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]は[[文脈自由言語#ex-counter_example_reg_lang_mirror | この例]]を参照せよ．&lt;br /&gt;
'''$w\mirrorim{w}$ という形の記号列全体が正規言語ではないことの証明'''&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
背理法により示す。&lt;br /&gt;
&lt;br /&gt;
$w\mirrorim{w}$ という形の記号列全体 $L$ が正規言語であると仮定する。&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }}より、&lt;br /&gt;
$L=L(\mathautomaton{A})$ を満たす&lt;br /&gt;
有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n_{0}=|Q|$ とする。以下 $w_{0}=0^{n_{0}}1$ とする。&lt;br /&gt;
仮定より $\mathautomaton{A}$ は $w_{0}\mirrorim{w_{0}}$ を受理する。&lt;br /&gt;
すると $\left|w_{0}\mirrorim{w_{0}}\right|&amp;gt;n_{0}$ であるから&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題 ]] より&lt;br /&gt;
次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w_{0}\mirrorim{w_{0}}=xyz$。&lt;br /&gt;
# $\left|y\right|&amp;gt;0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は&lt;br /&gt;
$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n_{0}$。&lt;br /&gt;
&lt;br /&gt;
このとき、 $xy=0^{k}$ （ただし、$0\lt k\leq n_{0}$）&lt;br /&gt;
であることに注意する。&lt;br /&gt;
すると、 $x=0^{k_{0}}$, $y=0^{k_{1}}$&lt;br /&gt;
（ただし、$0\leq k_{0}\leq k$, $0\lt k_{1}\leq k$,&lt;br /&gt;
$k=k_{0}+k_{1}$）&lt;br /&gt;
を満たす自然数 $k_{0}$, $k_{1}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
さて、$\mathautomaton{A}$ は&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題 ]] の条件から、&lt;br /&gt;
記号列 $xz$ を受理するはずである。&lt;br /&gt;
しかし、$xz=0^{n_{0}-k_{1}}1\mirrorim{w_{0}}=0^{n_{0}-k_{1}}110^{n_{0}}$, $n_{0}-k_{1}\lt n_{0}$&lt;br /&gt;
であるから $xz\notin L$ である。&lt;br /&gt;
これは $L=L(\mathautomaton{A})$ に矛盾する。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
==  参考文献 ==&lt;br /&gt;
# 新屋 良磨、オートマトン理論再考、コンピュータ ソフトウェア、2017、34 巻、3 号、p. 3_3-3_35、公開日 2017/09/25、Print ISSN 0289-6540、https://doi.org/10.11309/jssst.34.3_3、https://www.jstage.jst.go.jp/article/jssst/34/3/34_3_3/_article/-char/ja&lt;br /&gt;
# 五十嵐喜英他、『[[数理情報科学シリーズ ２４ オートマトンと形式言語の基礎]]』、牧野書店、2011&lt;br /&gt;
&lt;br /&gt;
== 関連項目 ==&lt;br /&gt;
* [[形式言語]]&lt;br /&gt;
* [[正規表現]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
|+ Chomsky階層&lt;br /&gt;
! 文法のタイプ&lt;br /&gt;
! 言語のクラス&lt;br /&gt;
! 計算モデル&lt;br /&gt;
|-&lt;br /&gt;
! タイプ0&lt;br /&gt;
| [[句構造言語]]&lt;br /&gt;
| [[Turingマシン]]&lt;br /&gt;
|-&lt;br /&gt;
! タイプ1&lt;br /&gt;
| [[文脈依存言語]]&lt;br /&gt;
| [[線形有界オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ2&lt;br /&gt;
| [[文脈自由言語]]&lt;br /&gt;
| [[プッシュダウン・オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ3&lt;br /&gt;
| [[正規言語]]&lt;br /&gt;
| [[有限オートマトン]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E6%9C%89%E9%99%90%E3%82%AA%E3%83%BC%E3%83%88%E3%83%9E%E3%83%88%E3%83%B3&amp;diff=7543</id>
		<title>有限オートマトン</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E6%9C%89%E9%99%90%E3%82%AA%E3%83%BC%E3%83%88%E3%83%9E%E3%83%88%E3%83%B3&amp;diff=7543"/>
		<updated>2021-06-30T07:43:35Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: Fix typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:形式言語理論|ユウゲンオートマトン]]&lt;br /&gt;
[[Category:計算理論|ユウゲンオートマトン]]&lt;br /&gt;
{{begin |preamble}}&lt;br /&gt;
&amp;lt;!-- 参考文献 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 定理環境 --&amp;gt;&lt;br /&gt;
{{newtheorem |type=theorem |display=定理}}&lt;br /&gt;
{{newtheorem |type=lemma |display=補題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=definition |display=定義 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=prop |display=命題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=example |display=例 |family=theorem }}&lt;br /&gt;
&amp;lt;!-- MathJax commands --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\newcommand{\mathsetextension}[1]{%&lt;br /&gt;
\left\{ #1 \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathsetintension}[2]{%&lt;br /&gt;
\left\{ #1 \left| #2 \right. \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathof}[2]{%&lt;br /&gt;
\mathop{#1}\left(#2\right)%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathpowerset}[1]{%&lt;br /&gt;
2^{#1}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathderiv}{\mathrel{\mathop{\Rightarrow}}^{*}}&lt;br /&gt;
\newcommand{\mathgen}{\rightsquigarrow}&lt;br /&gt;
\newcommand{\emptyword}{\varepsilon}&lt;br /&gt;
\newcommand{\kleenecl}[1]{{#1}^{*}}&lt;br /&gt;
\newcommand{\interpret}[1]{[\![#1]\!]}&lt;br /&gt;
\newcommand{\mathautomaton}[1]{\mathcal{#1}}&lt;br /&gt;
\newcommand{\mathnat}{\mathbb{N}}&lt;br /&gt;
\newcommand{\qed}{\blacksquare}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
{{end |preamble}}&lt;br /&gt;
'''有限オートマトン（finite automaton）'''とは[[正規言語]]を受理する計算モデルである。&lt;br /&gt;
&lt;br /&gt;
以下、項目[[形式言語]]において定められている言語上の演算などについては特に断らず用いる。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{TOC |align=right |noautonum=1 }}&amp;lt;!-- 右寄せ連番無し目次をここに表示 --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  有限オートマトンの導入  ==&lt;br /&gt;
この節では'''有限オートマトン'''やその周辺の重要な諸概念を定義する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=有限オートマトン |label=def-finite_automaton }}&lt;br /&gt;
'''有限オートマトン（finite automaton）'''とは&lt;br /&gt;
# '''状態集合(a set of states)'''と呼ばれる有限集合 $Q$&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# '''遷移関係(transition relation)'''と呼ばれる集合 $\Delta \subseteq Q\times (\Sigma \cup \mathsetextension{\emptyword})  \times Q$ &lt;br /&gt;
# '''開始状態(initial state)'''と呼ばれる $q_{I}\in Q$&lt;br /&gt;
# '''受理状態(accepting state)'''や'''最終状態(final state)'''と呼ばれる集合 $F\subseteq Q$&lt;br /&gt;
&lt;br /&gt;
の５つ組 $(Q, \Sigma, \Delta, q_{I}, F)$ である。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=有限オートマトンの受理する言語 |label=def-language_accepted_finite_automaton }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ と&lt;br /&gt;
記号列 $w \in \kleenecl{\Sigma}$ について、&lt;br /&gt;
次の２条件を満たす状態の列 $q_{0}, q_{1}, \dots, q_{n}$ を&lt;br /&gt;
'''記号列 $w$ による $q_{0}$ から $q_{n}$ への $\mathautomaton{A}$ の状態遷移'''と言う。&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{n}$ （ただし、各 $i=1, \dots, n$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）&lt;br /&gt;
# すべての $i\in \{1, \dots n\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ による $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
$q_{0}, q_{1}, \dots, q_{n}$ であって $q_{0} = q_{I}$, $q_{n}\in F$ を満たすものが存在するとき、&lt;br /&gt;
「有限オートマトン $\mathautomaton{A}$ が&lt;br /&gt;
'''記号列 $w$ を受理する'''」と言う。&lt;br /&gt;
&lt;br /&gt;
有限オートマトン $\mathautomaton{A}$ が受理する&lt;br /&gt;
記号列全体のことを '''有限オートマトン $\mathautomaton{A}$ の受理する言語'''&lt;br /&gt;
と言い、$L(\mathautomaton{A})$ と書く。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=等価な有限オートマトン |label=def-equivalence_finite_automaton }}&lt;br /&gt;
'''有限オートマトン $\mathautomaton{A}$ と 有限オートマトン $\mathautomaton{A'}$ が等価である'''とは、&lt;br /&gt;
$L(\mathautomaton{A})=L(\mathautomaton{A'})$&lt;br /&gt;
を満たすことである。&lt;br /&gt;
&lt;br /&gt;
==  有限オートマトンの例 ==&lt;br /&gt;
この節では有限オートマトンの例を紹介する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列全体を受理する有限オートマトン |label=ex-FA_all }}[[ファイル:Fig FA all.svg|サムネイル]]&lt;br /&gt;
\begin{align*}Q&amp;amp;=\mathsetextension{q_{I}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{I}), (q_{I}, 1, q_{I})}\\ F&amp;amp;= \mathsetextension{q_{I}}\end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。また、$\mathautomaton{A}$ は決定性有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
$0$ と $1$ からなる有限記号列をすべて受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ のみを受理する有限オートマトン |label=ex-0-1-only }}[[ファイル:Fig- 0-1-only.svg|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{1}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{2}), (q_{1}, 1, q_{2})}\\ F&amp;amp;=\mathsetextension{q_{1}} \end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は$0$ と $1$ のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$ をちょうど3個含む記号列全体を受理する有限オートマトン |label=ex-only-three-one}}[[ファイル:Fig FA only three one.svg|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}, q_{3}} \\ \Sigma&amp;amp;=\mathsetextension{0, 1} \\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{I}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{2}), (q_{2}, 0, q_{2}), (q_{2}, 1, q_{3}), (q_{3}, 0, q_{3})} \\ F&amp;amp;=\mathsetextension{q_{3}} \end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$ をちょうど3個含む記号列のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列全体を受理する有限オートマトン その1 |label=ex-one-less-than-three-1 }}[[ファイル:Fig FA one less than three 1.svg|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}, q_{3}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{I}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{2}), (q_{2}, 0, q_{2}), (q_{2}, 1, q_{3}), (q_{3}, 0, q_{3}), (q_{I}, \emptyword, q_{3}), (q_{1}, \emptyword, q_{3}), (q_{2}, \emptyword, q_{3})}\\ F&amp;amp;= \mathsetextension{q_{3}}\end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列全体を受理する有限オートマトン その2 |label=ex-one-less-than-three-2 }}[[ファイル:Fig FA one less than three 2.png|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}, q_{3}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, \emptyword, q_{I}), (q_{I}, 0, q_{I}), (q_{I}, 0, q_{1}), (q_{I}, 0, q_{2}), (q_{I}, 0, q_{3}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{2}), (q_{2}, 0, q_{2}), (q_{2}, 1, q_{3})}\\ F&amp;amp;= \mathsetextension{q_{I},q_{3}}\end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ も&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=自然数の二進表現全体を受理する有限オートマトン |label=ex-bi }}[[ファイル:Fig FA bi.svg|サムネイル]]&lt;br /&gt;
\begin{align*}Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{2}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{1})}\\ F&amp;amp;= \mathsetextension{q_{1}, q_{2}}\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
自然数の二進表現のみを受理する。&lt;br /&gt;
&lt;br /&gt;
==  正規言語、正規表現との関係 ==&lt;br /&gt;
この節では有限オートマトン、[[正規言語]]および[[正規表現]]の関係を述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=theorem |label=thm-Regular_Lang }}&lt;br /&gt;
言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $L=\interpret{\alpha}$ なる正規表現 $\alpha$ が存在する。&lt;br /&gt;
# $L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
&lt;br /&gt;
この定理の証明は、項目[[正規言語#thm-regularandNFA|正規言語]]を参照せよ。&lt;br /&gt;
&lt;br /&gt;
==  反復補題（ポンピング補題） ==&lt;br /&gt;
この節では'''反復補題（pumping lemma）'''について述べる&amp;lt;ref name=&amp;quot;THE-BOOK&amp;quot;&amp;gt;Martin Aigner,Guenter M. Ziegler,Karl H. Hofmann, [&amp;quot;Proofs from THE BOOK&amp;quot;], Springer, 2004 によると、一般に定理が'''補題'''と呼ばれる条件は「広範囲の応用例を持つ」「一見して完璧に明らか」「証明も含めて美しい」の三条件を満たすことである。&amp;lt;/ref&amp;gt;。&lt;br /&gt;
反復補題は'''ポンピング補題'''や'''ポンプ補題'''と呼ばれることもある。&lt;br /&gt;
&lt;br /&gt;
反復補題は[[正規言語#not_regular_lang|ある記号列の集合が正規言語ではない証明]]などに用いられる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=lemma |name=反復補題 |label=pumping_lemma }}&lt;br /&gt;
状態集合の大きさが $n$ の有限オートマトン $\mathautomaton{A}$ に記号列 $w$ が受理されるとする。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|\gt n$ であるとき、次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w=xyz$。&lt;br /&gt;
# $\left|y\right|\gt 0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n$。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- '''{{ref |type=lemma |label=pumping_lemma }}の証明''' --&amp;gt;&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ に $w$ が受理されるとする。&lt;br /&gt;
以下 $n:=\left|Q\right|$, $l:=\left|w\right|$, $l\gt n$ とする。&lt;br /&gt;
&lt;br /&gt;
有限オートマトン $\mathautomaton{A}$ に $w$ が受理されることから、&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{k}$ （ただし、各 $i=1, \dots, k$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）。&lt;br /&gt;
# すべての $i\in \{1, \dots, k\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$。&lt;br /&gt;
# $q_{0}=q_{I}$, $q_{k}\in F$。&lt;br /&gt;
&lt;br /&gt;
を満たす状態の列 $q_{0}, q_{1}, \dots, q_{k}$ と記号の列 $a_{1}, a_{2}, \dots, a_{k}$が存在する&lt;br /&gt;
（ただし、$k\geq l$）。&lt;br /&gt;
&lt;br /&gt;
$l\gt n$ から長さが $n$ の $w$ の[[形式言語#prefix_suffix|接頭語]] $w_{0}$ が存在する。&lt;br /&gt;
すると、$q_{0}, q_{1}, \dots, q_{k}$&lt;br /&gt;
の部分列であって、$w_{0}$ による $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
$$q_{0}, q_{1}, \dots, q_{k_{0}}$$&lt;br /&gt;
が存在する（ただし $n\leq k_{0}\leq k$）。&lt;br /&gt;
&lt;br /&gt;
すると、鳩ノ巣原理より&lt;br /&gt;
# $(q_{i-1}, a_{i}, q_{i})$, $(q_{i+j-1}, a_{i+j}, q_{i+j})\in \Delta$&lt;br /&gt;
（ただし、$a_{i}\neq\emptyword$, $a_{i+j}\neq\emptyword$）&lt;br /&gt;
# $q_{i}=q_{i+j}$&lt;br /&gt;
&lt;br /&gt;
という条件を満たす自然数の組 $(i, j)$ （ただし $0\leq i\leq k_{0}$, $0&amp;lt; j\leq k_{0}$）が少なくとも１つ存在する。&lt;br /&gt;
以下その $i$, $j$ を固定する。&lt;br /&gt;
&lt;br /&gt;
\begin{align*} x&amp;amp;:=a_{1}a_{2}\ldots a_{i}, \\ y&amp;amp;:=a_{i+1}a_{i+2}\ldots a_{i+j}, \\ z&amp;amp;:=a_{i+j+1}a_{i+j+2}\ldots a_{k},\end{align*}&lt;br /&gt;
とすると、$w=xyz$ である。また、$a_{i+j}\neq\emptyword$ であるから $\left|y\right|\gt 0$。&lt;br /&gt;
さらに、定義より $xy$ は $w_{0}$ の部分列であるから、$|xy|\leq n$。&lt;br /&gt;
&lt;br /&gt;
任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ が $\mathautomaton{A}$ に受理されることを示す。&lt;br /&gt;
&lt;br /&gt;
以下、記号列 $x$, $y$, $z$ による $\mathautomaton{A}$ の状態遷移をそれぞれ&lt;br /&gt;
\begin{align*}Q_{x}&amp;amp;=q_{0}, \dots, q_{i}, \\ Q_{y}&amp;amp;=q_{i+1}, \dots, q_{i+j}, \\ Q_{z}&amp;amp;=q_{i+j+1}, \dots, q_{k}, \end{align*}&lt;br /&gt;
と書くことにする。&lt;br /&gt;
&lt;br /&gt;
$m=0$ のときを示す。&lt;br /&gt;
&lt;br /&gt;
$q_{i}=q_{i+j}$ に注意すると、$(q_{i}, a_{i+j+1}, q_{i+j+1})\in \Delta$ である。&lt;br /&gt;
よって、&lt;br /&gt;
$$Q_{x}Q_{z}=q_{0}, \dots, q_{i}, q_{i+j+1}, \dots, q_{k}$$&lt;br /&gt;
は記号列 $xz$ による $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
$q_{0}=q_{I}$, $q_{k}\in F$ であるから、$xz$($=xy^{0}z$) は $\mathautomaton{A}$ に受理される。&lt;br /&gt;
&lt;br /&gt;
$m\gt 0$ のときを示す。&lt;br /&gt;
&lt;br /&gt;
$q_{i}=q_{i+j}$ に注意すると、$(q_{i+j}, a_{i+j+1}, q_{i+1})\in \Delta$ である。&lt;br /&gt;
$$Q_{x}\overbrace{Q_{y}\dots Q_{y}}^{m\text{個}}Q_{z}=q_{0}, \dots, q_{i}, \overbrace{q_{i+1}, \dots, q_{i+j}, q_{i+1}, \dots, q_{i+j}}^{\text{$q_{i+1}, \dots, q_{i+j}$ の反復が $m$回}}, q_{i+j+1}, \dots, q_{k}$$&lt;br /&gt;
は記号列 $xy^{m}z$ による $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
$q_{0}=q_{I}$, $q_{k}\in F$ であるから、$xy^{m}z$ は $\mathautomaton{A}$ に受理される。 &lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
===  反復補題の補足 ===&lt;br /&gt;
本稿の反復補題の $|xy|\leq n$ という条件を外したものも反復補題と呼ばれる。&lt;br /&gt;
反復補題の証明中において、$w$ の部分列を考えたことがそれ以外の条件の証明に対して非本質的であることに注意すると、&lt;br /&gt;
$|xy|\leq n$ という条件が余計であると考えられるからであろう。&lt;br /&gt;
&lt;br /&gt;
==  $\emptyword$ 動作なしの有限オートマトン ==&lt;br /&gt;
この項では&lt;br /&gt;
'''$\emptyword$ 動作なしの有限オートマトン(finite automaton without $\emptyword$-transitions)'''&lt;br /&gt;
について述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=$\emptyword$ 動作なしの有限オートマトン |label=def-finite_automaton_non_emptyword }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が&lt;br /&gt;
次の条件を満たすとき、&lt;br /&gt;
'''$\mathautomaton{A}$ は $\emptyword$ 動作なしの有限オートマトン(finite automaton without $\emptyword$-transitions)である'''と言う:&lt;br /&gt;
* $(q, a, q')\in \Delta$ に対して $a=\emptyword$ ならば $q=q'$&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=prop-finite_automaton_non_emptyword }}&lt;br /&gt;
任意の有限オートマトンに対して、それと等価な $\emptyword$ 動作なしの有限オートマトンが存在する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ==== {{ref |type=prop |label=prop-finite_automaton_non_emptyword }} の証明 ==== --&amp;gt;&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ を有限オートマトンとする。&lt;br /&gt;
&amp;lt;!-- $\mathautomaton{A}$ が $\emptyword$ 動作なしの有限オートマトンであれば、示すことはない。 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$q\in Q$, $a\in \Sigma$ にたいして、集合 $\mathof{C}{q, a}$ を次のように定める:&lt;br /&gt;
\[ \mathof{C}{q, a}=\mathsetintension{(q, a, q')}{ \text{記号列 $a$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する}}. \]&lt;br /&gt;
&lt;br /&gt;
$\mathof{C_{\emptyword}}{q_{I}}$ を次のように定義する:&lt;br /&gt;
\[\mathof{C_{\emptyword}}{q_{I}}=\mathsetintension{q'\in Q}{\text{記号列 } \emptyword \text{ による } q_{I} \text{ から } q' \text{ への } \mathautomaton{A} \text{ の状態遷移が存在する} }. \]&lt;br /&gt;
&lt;br /&gt;
次のように集合 $\Delta'_{0}$, $\Delta'_{\emptyword}$ および $\Delta'$ を次のように定める:&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\Delta'_{0}&amp;amp;=\bigcup_{q\in Q, a\in \Sigma} \mathof{C}{q, a}, \\&lt;br /&gt;
\Delta'_{\emptyword}&amp;amp;=\mathsetintension{(q, \emptyword, q)}{q\in Q}, \\&lt;br /&gt;
\Delta'&amp;amp;=\Delta'_{0}\cup \Delta'_{\emptyword}.&lt;br /&gt;
\end{align*}&lt;br /&gt;
また、&lt;br /&gt;
\[F'=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
F, &amp;amp; \text{if } F\cap\mathof{C_{\emptyword}}{q_{I}}=\emptyset, \\&lt;br /&gt;
F \cup \mathsetextension{q_{I}}, &amp;amp; \text{if } F\cap\mathof{C_{\emptyword}}{q_{I}}\neq\emptyset.&lt;br /&gt;
\end{cases}&lt;br /&gt;
\]&lt;br /&gt;
とする。&lt;br /&gt;
このとき$\mathautomaton{A}'=(Q, \Sigma, \Delta', q_{I}, F')$ は $\emptyword$ 動作なしの有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
記号列 $w\neq\emptyword$ に対して、以下が同値であることを示す:&lt;br /&gt;
# 記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する&lt;br /&gt;
# 記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在する&lt;br /&gt;
&lt;br /&gt;
次のように集合 $\Delta_{\emptyword}$ および $\Delta_{0}$  を次のように定める。&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\Delta_{\emptyword}&amp;amp;=\mathsetintension{(q, a, q')\in \Delta}{a=\emptyword\text{ かつ }q\neq q'}, \\&lt;br /&gt;
\Delta_{0}&amp;amp;=\Delta\setminus\Delta_{\emptyword}.&lt;br /&gt;
\end{align*}&lt;br /&gt;
以下 $\Delta_{0} \subseteq \Delta'_{0}$ に注意する。&lt;br /&gt;
&lt;br /&gt;
1 $\Rightarrow$ 2:&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在すると仮定する。&lt;br /&gt;
$\left|w\right|$ に対する帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|=1$ のとき:&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在することから $(q, w, q')\in \mathof{C}{q, w}$。&lt;br /&gt;
よって、$(q, w, q')\in \Delta'$。よって、$q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|\gt 1$ のとき: $w=w_{0}a$ とおく（ただし、$a\in\Sigma$）。&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在することから&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{k}$ （ただし、各 $i=1, \dots, k$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）。&lt;br /&gt;
# すべての $i\in \{1, \dots, k\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$。&lt;br /&gt;
# $q_{0}=q$, $q_{k}=q'$。&lt;br /&gt;
&lt;br /&gt;
を満たす状態の列 $q_{0}, q_{1}, \dots, q_{k}$ と記号の列 $a_{1}, a_{2}, \dots, a_{k}$が存在する&lt;br /&gt;
（ただし、$k\geq l$）。&lt;br /&gt;
このとき、$w_{0}=a_{1}\dots a_{k_{0}}$, $a=a_{k_{0}+1}$, $1\leq k_{0}\lt k$ を満たす $k_{0}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
すると、$q=q_{0}, q_{1}, \dots, q_{k_{0}}$ は記号列 $w_{0}$ による $q$ から $q_{k_{0}}$ への $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
また、$q_{k_{0}}, q_{k_{0}+1}, \dots, q_{k}=q'$ は記号列 $a$ による $q_{k_{0}}$ から $q'$ への $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から&lt;br /&gt;
記号列 $w_{0}$ による $q$ から $q_{k_{0}}$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
また、記号列 $a$ による $q_{k_{0}}$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在することから $(q_{k_{0}}, a, q')\in \mathof{C}{q_{k_{0}}, a}$。ゆえに、記号列 $w=w_{0}a$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
2 $\Rightarrow$ 1:&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在すると仮定する。&lt;br /&gt;
$\left|w\right|$ に対する帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|=1$ のとき:&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在することから&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{k}$ （ただし、各 $i=1, \dots, k$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）。&lt;br /&gt;
# すべての $i\in \{1, \dots, k\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta'$。&lt;br /&gt;
# $q_{0}=q$, $q_{k}=q'$。&lt;br /&gt;
&lt;br /&gt;
を満たす状態の列 $q_{0}, q_{1}, \dots, q_{k}$ と記号の列 $a_{1}, a_{2}, \dots, a_{k}$が存在する&lt;br /&gt;
（ただし、$k\geq l$）。&lt;br /&gt;
$\left|w\right|=1$ であるから、&lt;br /&gt;
\[a_{i}=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
w &amp;amp; i=k_{0} \\&lt;br /&gt;
\emptyword &amp;amp; i\neq k_{0}&lt;br /&gt;
\end{cases}&lt;br /&gt;
\]&lt;br /&gt;
を満たす $1\leq k_{0}$ が存在する。このとき、$\Delta'$ の定義から &lt;br /&gt;
\[q_{i}=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
q &amp;amp; i\lt k_{0} \\&lt;br /&gt;
q' &amp;amp; k_{0}\leq i&lt;br /&gt;
\end{cases}&lt;br /&gt;
\]&lt;br /&gt;
であって、$(q, w, q')\in \Delta'_{0}$ である。&lt;br /&gt;
$\Delta'_{0}$ の定義から $(q, w, q')\in \mathof{C}{q, w}$。&lt;br /&gt;
これは記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在することを意味する。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|\gt 1$ のとき: $w=w_{0}a$ とおく（ただし、$a\in\Sigma$）。&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在することから&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{k}$ （ただし、各 $i=1, \dots, k$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）。&lt;br /&gt;
# すべての $i\in \{1, \dots, k\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$。&lt;br /&gt;
# $q_{0}=q$, $q_{k}=q'$。&lt;br /&gt;
&lt;br /&gt;
を満たす状態の列 $q_{0}, q_{1}, \dots, q_{k}$ と記号の列 $a_{1}, a_{2}, \dots, a_{k}$が存在する&lt;br /&gt;
（ただし、$k\geq l$）。&lt;br /&gt;
このとき、$w_{0}=a_{1}\dots a_{k_{0}}$, $a=a_{k_{0}+1}$, $1\leq k_{0}\lt k$ を満たす $k_{0}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
すると、$q=q_{0}, q_{1}, \dots, q_{k_{0}}$ は記号列 $w_{0}$ による $q$ から $q_{k_{0}}$ への $\mathautomaton{A}'$ の状態遷移である。&lt;br /&gt;
また、$q_{k_{0}}, q_{k_{0}+1}, \dots, q_{k}=q'$ は記号列 $a$ による $q_{k_{0}}$ から $q'$ への $\mathautomaton{A}'$ の状態遷移である。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から&lt;br /&gt;
記号列 $w_{0}$ による $q$ から $q_{k_{0}}$ への $\mathautomaton{A}$ の状態遷移が存在し、&lt;br /&gt;
また、記号列 $a$ による $q_{k_{0}}$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する。ゆえに、記号列 $w=w_{0}a$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
以上を踏まえて、$L(\mathautomaton{A})=L(\mathautomaton{A}')$ を示す。&lt;br /&gt;
&lt;br /&gt;
$w\in L(\mathautomaton{A})$ を仮定する。&lt;br /&gt;
$w=\emptyword$ のとき、$F\cap\mathof{C_{\emptyword}}{q_{I}}\neq\emptyset$ である。&lt;br /&gt;
ゆえに、$q_{I}\in F'$。$(q_{I}, \emptyword, q_{I})\in \Delta'$ に注意すると、&lt;br /&gt;
$\emptyword$ による $q_{I}$ から $q_{I}$ への $\mathautomaton{A}'$ の状態遷移が存在するので、&lt;br /&gt;
$\emptyword\in L(\mathautomaton{A}')$。&lt;br /&gt;
&lt;br /&gt;
$w\neq \emptyword$ のとき、&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q\in F$ への $\mathautomaton{A}$ の状態遷移が存在することから、&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q\in F'$ への $\mathautomaton{A}'$ の状態遷移が存在することが速やかにわかる。ゆえに $w\in L(\mathautomaton{A}')$。&lt;br /&gt;
&lt;br /&gt;
以上より $L(\mathautomaton{A})\subseteq L(\mathautomaton{A}')$。&lt;br /&gt;
&lt;br /&gt;
$w\in L(\mathautomaton{A}')$ を仮定する。&lt;br /&gt;
$w=\emptyword$ のとき、$(q_{I}, \emptyword, q_{I})\in \Delta'$ かつ $q_{I}\in F'$ である。&lt;br /&gt;
&lt;br /&gt;
$F\cap\mathof{C_{\emptyword}}{q_{I}}=\emptyset$ のとき、$q_{I}\notin F$。また、$F=F'$ である。&lt;br /&gt;
まとめて、$q_{I}\notin F=F'\ni q_{I}$。これは矛盾である。&lt;br /&gt;
よって、$F\cap\mathof{C_{\emptyword}}{q_{I}}\neq\emptyset$ である。&lt;br /&gt;
ゆえに、$q\in \mathof{C_{\emptyword}}{q_{I}}$, $q\in F$ を満たす状態 $q\in Q$ が存在する。&lt;br /&gt;
$q\in \mathof{C_{\emptyword}}{q_{I}}$ であるから、&lt;br /&gt;
$\emptyword$ による $q_{I}$ から $q$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
$q\in F$ であるから $\emptyword\in L(\mathautomaton{A}')$。&lt;br /&gt;
&lt;br /&gt;
$w\neq \emptyword$ のとき、&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q\in F$ への $\mathautomaton{A}'$ の状態遷移が存在することから、&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q\in F'$ への $\mathautomaton{A}$ の状態遷移が存在することが速やかにわかる。&lt;br /&gt;
&lt;br /&gt;
以上より $L(\mathautomaton{A}')\subseteq L(\mathautomaton{A})$。&lt;br /&gt;
&lt;br /&gt;
$L(\mathautomaton{A})\subseteq L(\mathautomaton{A}')$ より$L(\mathautomaton{A})=L(\mathautomaton{A}')$。&lt;br /&gt;
$\mathautomaton{A}'$ が $\emptyword$ 動作なしの有限オートマトンであるから、命題の主張を得る。&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
==  決定性有限オートマトン ==&lt;br /&gt;
この項では'''決定性有限オートマトン(deterministic finite automaton)'''について述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=決定性有限オートマトン |label=def-deterministic_finite_automaton }}&lt;br /&gt;
$\emptyword$ 動作なしの有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が次の条件を満たすとき、'''$\mathautomaton{A}$ は決定性有限オートマトン(deterministic finite automaton)である'''と言う:&lt;br /&gt;
&lt;br /&gt;
* 各 $(q, a) \in Q\times \Sigma$ という組に対して、$(q, a, q')\in \Delta$ という形の元は高々一個&lt;br /&gt;
&lt;br /&gt;
有限オートマトン $\mathautomaton{A}$ が決定性有限オートマトンとは限らないことを明示したいときに、&lt;br /&gt;
'''$\mathautomaton{A}$ は非決定性有限オートマトン(nondeterministic finite automaton)である'''と言うことがある。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=prop-finite_automaton_non_emptyword }}&lt;br /&gt;
任意の有限オートマトンに対して、それと等価な決定性有限オートマトンが存在する。&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
$\mathautomaton{A}_{0}=(Q_{0}, \Sigma, \Delta_{0}, q_{I}, F_{0})$ を有限オートマトンとする。&lt;br /&gt;
{{ref |type=prop |label=prop-finite_automaton_non_emptyword }} から&lt;br /&gt;
$\mathautomaton{A}_{0}$ と等価な&lt;br /&gt;
$\emptyword$ 動作なしの有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
$S\subseteq Q$, $a\in (\Sigma \cup \mathsetextension{\emptyword})$ に対して、集合 $\mathof{T}{S, a}$ を次のように定める:&lt;br /&gt;
\[&lt;br /&gt;
\mathof{T}{S, a}=\mathsetintension{q'\in Q}{(q, a, q')\in\Delta \text{ for } q\in S}.&lt;br /&gt;
\]&lt;br /&gt;
次のように集合 $\Delta'$, $F'$ を定める。&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\Delta' &amp;amp;=\mathsetintension{(S, a, \mathof{T}{S, a})}{S\subseteq Q, a\in (\Sigma \cup \mathsetextension{\emptyword}) } \\&lt;br /&gt;
F' &amp;amp;=\mathsetintension{S\subseteq Q}{S\cap F\neq \emptyset}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
このとき、$\mathautomaton{A}'=(\mathpowerset{Q}, \Sigma, \Delta', \mathsetextension{q_{I}}, F')$&lt;br /&gt;
は決定性有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
$\mathof{L}{\mathautomaton{A}}=\mathof{L}{\mathautomaton{A}'}$ を示す。&lt;br /&gt;
&lt;br /&gt;
まず、$\mathof{L}{\mathautomaton{A}}\subseteq\mathof{L}{\mathautomaton{A}'}$&lt;br /&gt;
を示すために次の命題($*$)を示す:&lt;br /&gt;
&lt;br /&gt;
($*$)&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q$ への $\mathautomaton{A}$ の状態遷移が存在するとき、次を満たす&lt;br /&gt;
$S\in \mathpowerset{Q}$ が存在する:&lt;br /&gt;
# $q\in S$。 &lt;br /&gt;
# 記号列 $w$ による $\mathsetextension{q_{I}}$ から $S$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q$ への $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
$(q_{I}=)q_{0}, \dots, q_{n}(=q)$ が存在すると仮定する。&lt;br /&gt;
($*$) の 1., 2. を満たす $S$ が存在することを $n$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$n=0$ のときは明らか。&lt;br /&gt;
&lt;br /&gt;
$n\gt 0$ のとき、次を満たす $w'\in \kleenecl{\Sigma}$, $a\in \Sigma$ が存在する:&lt;br /&gt;
# $w=w'a$。 &lt;br /&gt;
# $(q_{n-1}, a, q_{n})\in \Delta$。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から、$q_{n-1}\in S'$、&lt;br /&gt;
記号列 $w'$ による $\mathsetextension{q_{I}}$ から $S'$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
$(q_{n-1}, a, q_{n})\in \Delta$ より、次を満たす $S\in \mathpowerset{Q}$ が存在する:&lt;br /&gt;
# $q_{n}\in S$。&lt;br /&gt;
# $(S', a, S)\in \Delta'$。&lt;br /&gt;
&lt;br /&gt;
ゆえに、$q\in S$ で&lt;br /&gt;
記号列 $w$ による $\mathsetextension{q_{I}}$ から $S$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
以上より ($*$) は示された。&lt;br /&gt;
&lt;br /&gt;
さて、$w\in \mathof{L}{\mathautomaton{A}}$ を仮定する。&lt;br /&gt;
すると、記号列 $w$ による $q_{I}$ から $q\in F$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
(*) より次を満たす $S\in \mathpowerset{Q}$ が存在する:&lt;br /&gt;
# $q\in S$。 &lt;br /&gt;
# 記号列 $w$ による $\mathsetextension{q_{I}}$ から $S$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
$q\in S$ より $S\cap F\neq \emptyset$ であるから、$S\in F'$。&lt;br /&gt;
ゆえに、$w\in \mathof{L}{\mathautomaton{A}'}$。&lt;br /&gt;
よって、$\mathof{L}{\mathautomaton{A}}\subseteq \mathof{L}{\mathautomaton{A}'}$。&lt;br /&gt;
&lt;br /&gt;
次に $\mathof{L}{\mathautomaton{A}'}\subseteq\mathof{L}{\mathautomaton{A}}$&lt;br /&gt;
を示すために次の命題($**$)を示す:&lt;br /&gt;
&lt;br /&gt;
($**$)  &lt;br /&gt;
記号列 $w$ による $\mathsetextension{q_{I}}$ から $S$ への $\mathautomaton{A}'$ の状態遷移が存在するとき、&lt;br /&gt;
任意の $q\in S$ に対して記号列 $w$ による $q_{I}$ から $q$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ による $\mathsetextension{q_{I}}$ から $S$ への $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
$(\mathsetextension{q_{I}}=)S_{0}, \dots, S_{n}(=S)$ が存在すると仮定する。&lt;br /&gt;
任意の $q\in S$ に対して記号列 $w$ による $q_{I}$ から $q$ への $\mathautomaton{A}$&lt;br /&gt;
の状態遷移が存在することを $n$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$n=0$ のときは明らか。&lt;br /&gt;
&lt;br /&gt;
$n\gt 0$ のとき、$q\in S$ とする。&lt;br /&gt;
このとき、次を満たす $w'\in \kleenecl{\Sigma}$, $a\in \Sigma$ が存在する:&lt;br /&gt;
# $w=w'a$。 &lt;br /&gt;
# $(S_{n-1}, a, S)\in \Delta'$。&lt;br /&gt;
&lt;br /&gt;
$(S_{n-1}, a, S)\in \Delta'$ のであるから、$(q', a, q)\in \Delta$ を満たす $q'\in S_{n-1}$ が存在する。&lt;br /&gt;
帰納法の仮定から記号列 $w'$ による $q_{I}$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
$(q', a, q)\in \Delta$ から、&lt;br /&gt;
帰納法の仮定から記号列 $w$ による $q_{I}$ から $q$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
以上より ($**$) は示された。&lt;br /&gt;
&lt;br /&gt;
さて、$w\in \mathof{L}{\mathautomaton{A}'}$ を仮定する。&lt;br /&gt;
すると、記号列 $w$ による $\mathsetextension{q_{I}}$ から $S\in F'$ への $\mathautomaton{A}'$&lt;br /&gt;
の状態遷移が存在する。&lt;br /&gt;
このとき、$S\cap F\neq \emptyset$ であるから、$q\in S$ かつ $q\in F$ を満たす $q$ が存在する。&lt;br /&gt;
($**$) から記号列 $w$ による $q_{I}$ から $q$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
$q\in F$ であるから、$w\in \mathof{L}{\mathautomaton{A}}$。&lt;br /&gt;
よって、$\mathof{L}{\mathautomaton{A}'}\subseteq\mathof{L}{\mathautomaton{A}}$。&lt;br /&gt;
&lt;br /&gt;
以上より $L(\mathautomaton{A})=L(\mathautomaton{A}')$。&lt;br /&gt;
$\mathautomaton{A}'$ が決定性有限オートマトンであるから、命題の主張を得る。&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
==  参考文献 ==&lt;br /&gt;
# 新屋 良磨、オートマトン理論再考、コンピュータ ソフトウェア、2017、34 巻、3 号、p. 3_3-3_35、公開日 2017/09/25、Print ISSN 0289-6540、[https://doi.org/10.11309/jssst.34.3_3]、[https://www.jstage.jst.go.jp/article/jssst/34/3/34_3_3/_article/-char/ja]&lt;br /&gt;
# 五十嵐喜英他、『[https://www.amazon.co.jp/gp/product/4434158783/infinitytopoi-22  数理情報科学シリーズ ２４ オートマトンと形式言語の基礎]』、牧野書店、2011&lt;br /&gt;
# Martin Aigner,Guenter M. Ziegler,Karl H. Hofmann, [https://www.amazon.co.jp/Proofs-BOOK-Martin-Aigner-dp-3662572648/dp/3662572648/infinitytopoi-22  &amp;quot;Proofs from THE BOOK&amp;quot;], Springer, 2004&lt;br /&gt;
&lt;br /&gt;
== 脚注 ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 関連項目  ==&lt;br /&gt;
* [[形式言語]]&lt;br /&gt;
* [[正規表現]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
|+ Chomsky階層&lt;br /&gt;
! 文法のタイプ&lt;br /&gt;
! 言語のクラス&lt;br /&gt;
! 計算モデル&lt;br /&gt;
|-&lt;br /&gt;
! タイプ0&lt;br /&gt;
| [[句構造言語]]&lt;br /&gt;
| [[Turingマシン]]&lt;br /&gt;
|-&lt;br /&gt;
! タイプ1&lt;br /&gt;
| [[文脈依存言語]]&lt;br /&gt;
| [[線形有界オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ2&lt;br /&gt;
| [[文脈自由言語]]&lt;br /&gt;
| [[プッシュダウン・オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ3&lt;br /&gt;
| [[正規言語]]&lt;br /&gt;
| [[有限オートマトン]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E6%9C%89%E9%99%90%E3%82%AA%E3%83%BC%E3%83%88%E3%83%9E%E3%83%88%E3%83%B3&amp;diff=7283</id>
		<title>有限オートマトン</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E6%9C%89%E9%99%90%E3%82%AA%E3%83%BC%E3%83%88%E3%83%9E%E3%83%88%E3%83%B3&amp;diff=7283"/>
		<updated>2021-06-24T08:34:49Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: Fix typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:形式言語理論|ユウゲンオートマトン]]&lt;br /&gt;
[[Category:計算理論|ユウゲンオートマトン]]&lt;br /&gt;
{{begin |preamble}}&lt;br /&gt;
&amp;lt;!-- 参考文献 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 定理環境 --&amp;gt;&lt;br /&gt;
{{newtheorem |type=theorem |display=定理}}&lt;br /&gt;
{{newtheorem |type=lemma |display=補題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=definition |display=定義 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=prop |display=命題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=example |display=例 |family=theorem }}&lt;br /&gt;
&amp;lt;!-- MathJax commands --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\newcommand{\mathsetextension}[1]{%&lt;br /&gt;
\left\{ #1 \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathsetintension}[2]{%&lt;br /&gt;
\left\{ #1 \left| #2 \right. \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathof}[2]{%&lt;br /&gt;
\mathop{#1}\left(#2\right)%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathpowerset}[1]{%&lt;br /&gt;
2^{#1}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathderiv}{\mathrel{\mathop{\Rightarrow}}^{*}}&lt;br /&gt;
\newcommand{\mathgen}{\rightsquigarrow}&lt;br /&gt;
\newcommand{\emptyword}{\varepsilon}&lt;br /&gt;
\newcommand{\kleenecl}[1]{{#1}^{*}}&lt;br /&gt;
\newcommand{\interpret}[1]{[\![#1]\!]}&lt;br /&gt;
\newcommand{\mathautomaton}[1]{\mathcal{#1}}&lt;br /&gt;
\newcommand{\mathnat}{\mathbb{N}}&lt;br /&gt;
\newcommand{\qed}{\blacksquare}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
{{end |preamble}}&lt;br /&gt;
'''有限オートマトン（finite automaton）'''とは[[正規言語]]を受理する計算モデルである。&lt;br /&gt;
&lt;br /&gt;
以下、項目[[形式言語]]において定められている言語上の演算などについては特に断らず用いる。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{TOC |align=right |noautonum=1 }}&amp;lt;!-- 右寄せ連番無し目次をここに表示 --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  有限オートマトンの導入  ==&lt;br /&gt;
この節では'''有限オートマトン'''やその周辺の重要な諸概念を定義する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=有限オートマトン |label=def-finite_automaton }}&lt;br /&gt;
'''有限オートマトン（finite automaton）'''とは&lt;br /&gt;
# '''状態集合(a set of states)'''と呼ばれる有限集合 $Q$&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# '''遷移関係(transition relation)'''と呼ばれる集合 $\Delta \subseteq Q\times (\Sigma \cup \mathsetextension{\emptyword})  \times Q$ &lt;br /&gt;
# '''開始状態(initial state)'''と呼ばれる $q_{I}\in Q$&lt;br /&gt;
# '''受理状態(accepting state)'''や'''最終状態(final state)'''と呼ばれる集合 $F\subseteq Q$&lt;br /&gt;
&lt;br /&gt;
の５つ組 $(Q, \Sigma, \Delta, q_{I}, F)$ である。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=有限オートマトンの受理する言語 |label=def-language_accepted_finite_automaton }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ と&lt;br /&gt;
記号列 $w \in \kleenecl{\Sigma}$ について、&lt;br /&gt;
次の２条件を満たす状態の列 $q_{0}, q_{1}, \dots, q_{n}$ を&lt;br /&gt;
'''記号列 $w$ による $q_{0}$ から $q_{n}$ への $\mathautomaton{A}$ の状態遷移'''と言う。&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{n}$ （ただし、各 $i=1, \dots, n$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）&lt;br /&gt;
# すべての $i\in \{1, \dots n\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ による $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
$q_{0}, q_{1}, \dots, q_{n}$ であって $q_{0} = q_{I}$, $q_{n}\in F$ を満たすものが存在するとき、&lt;br /&gt;
「有限オートマトン $\mathautomaton{A}$ が&lt;br /&gt;
'''記号列 $w$ を受理する'''」と言う。&lt;br /&gt;
&lt;br /&gt;
有限オートマトン $\mathautomaton{A}$ が受理する&lt;br /&gt;
記号列全体のことを '''有限オートマトン $\mathautomaton{A}$ の受理する言語'''&lt;br /&gt;
と言い、$L(\mathautomaton{A})$ と書く。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=等価な有限オートマトン |label=def-equivalence_finite_automaton }}&lt;br /&gt;
'''有限オートマトン $\mathautomaton{A}$ と 有限オートマトン $\mathautomaton{A'}$ が等価である'''とは、&lt;br /&gt;
$L(\mathautomaton{A})=L(\mathautomaton{A'})$&lt;br /&gt;
を満たすことである。&lt;br /&gt;
&lt;br /&gt;
==  有限オートマトンの例 ==&lt;br /&gt;
この節では有限オートマトンの例を紹介する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列全体を受理する有限オートマトン |label=ex-FA_all }}[[ファイル:Fig FA all.svg|サムネイル]]&lt;br /&gt;
\begin{align*}Q&amp;amp;=\mathsetextension{q_{I}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{I}), (q_{I}, 1, q_{I})}\\ F&amp;amp;= \mathsetextension{q_{I}}\end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。また、$\mathautomaton{A}$ は決定性有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
$0$ と $1$ からなる有限記号列をすべて受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ のみを受理する有限オートマトン |label=ex-0-1-only }}[[ファイル:Fig- 0-1-only.svg|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{1}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{2}), (q_{1}, 1, q_{2})}\\ F&amp;amp;=\mathsetextension{q_{1}} \end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は$0$ と $1$ のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$ をちょうど3個含む記号列全体を受理する有限オートマトン |label=ex-only-three-one}}[[ファイル:Fig FA only three one.svg|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}, q_{3}} \\ \Sigma&amp;amp;=\mathsetextension{0, 1} \\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{I}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{2}), (q_{2}, 0, q_{2}), (q_{2}, 1, q_{3}), (q_{3}, 0, q_{3})} \\ F&amp;amp;=\mathsetextension{q_{3}} \end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$ をちょうど3個含む記号列のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列全体を受理する有限オートマトン その1 |label=ex-one-less-than-three-1 }}[[ファイル:Fig FA one less than three 1.svg|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}, q_{3}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{I}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{2}), (q_{2}, 0, q_{2}), (q_{2}, 1, q_{3}), (q_{3}, 0, q_{3}), (q_{I}, \emptyword, q_{3}), (q_{1}, \emptyword, q_{3}), (q_{2}, \emptyword, q_{3})}\\ F&amp;amp;= \mathsetextension{q_{3}}\end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列全体を受理する有限オートマトン その2 |label=ex-one-less-than-three-2 }}[[ファイル:Fig FA one less than three 2.png|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}, q_{3}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, \emptyword, q_{I}), (q_{I}, 0, q_{I}), (q_{I}, 0, q_{1}), (q_{I}, 0, q_{2}), (q_{I}, 0, q_{3}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{2}), (q_{2}, 0, q_{2}), (q_{2}, 1, q_{3})}\\ F&amp;amp;= \mathsetextension{q_{I},q_{3}}\end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ も&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=自然数の二進表現全体を受理する有限オートマトン |label=ex-bi }}[[ファイル:Fig FA bi.svg|サムネイル]]&lt;br /&gt;
\begin{align*}Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{2}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{1})}\\ F&amp;amp;= \mathsetextension{q_{1}, q_{2}}\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
自然数の二進表現のみを受理する。&lt;br /&gt;
&lt;br /&gt;
==  正規言語、正規表現との関係 ==&lt;br /&gt;
この節では有限オートマトン、[[正規言語]]および[[正規表現]]の関係を述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=theorem |label=thm-Regular_Lang }}&lt;br /&gt;
言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $L=\interpret{\alpha}$ なる正規表現 $\alpha$ が存在する。&lt;br /&gt;
# $L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
&lt;br /&gt;
この定理の証明は、項目[[正規言語#thm-regularandNFA|正規言語]]を参照せよ。&lt;br /&gt;
&lt;br /&gt;
==  反復補題（ポンピング補題） ==&lt;br /&gt;
この節では'''反復補題（pumping lemma）'''について述べる&amp;lt;ref name=&amp;quot;THE-BOOK&amp;quot;&amp;gt;Martin Aigner,Guenter M. Ziegler,Karl H. Hofmann, [&amp;quot;Proofs from THE BOOK&amp;quot;], Springer, 2004 によると、一般に定理が'''補題'''と呼ばれる条件は「広範囲の応用例を持つ」「一見して完璧に明らか」「証明も含めて美しい」の三条件を満たすことである。&amp;lt;/ref&amp;gt;。&lt;br /&gt;
反復補題は'''ポンピング補題'''や'''ポンプ補題'''と呼ばれることもある。&lt;br /&gt;
&lt;br /&gt;
反復補題は[[正規言語#not_regular_lang|ある記号列の集合が正規言語ではない証明]]などに用いられる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=lemma |name=反復補題 |label=pumping_lemma }}&lt;br /&gt;
状態集合の大きさが $n$ の有限オートマトン $\mathautomaton{A}$ に記号列 $w$ が受理されるとする。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|\gt n$ であるとき、次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w=xyz$。&lt;br /&gt;
# $\left|y\right|\gt 0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n$。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- '''{{ref |type=lemma |label=pumping_lemma }}の証明''' --&amp;gt;&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ に $w$ が受理されるとする。&lt;br /&gt;
以下 $n:=\left|Q\right|$, $l:=\left|w\right|$, $l\gt n$ とする。&lt;br /&gt;
&lt;br /&gt;
有限オートマトン $\mathautomaton{A}$ に $w$ が受理されることから、&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{k}$ （ただし、各 $i=1, \dots, k$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）。&lt;br /&gt;
# すべての $i\in \{1, \dots, k\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$。&lt;br /&gt;
# $q_{0}=q_{I}$, $q_{k}\in F$。&lt;br /&gt;
&lt;br /&gt;
を満たす状態の列 $q_{0}, q_{1}, \dots, q_{k}$ と記号の列 $a_{1}, a_{2}, \dots, a_{k}$が存在する&lt;br /&gt;
（ただし、$k\geq l$）。&lt;br /&gt;
&lt;br /&gt;
$l\gt n$ から長さが $n$ の $w$ の[[形式言語#prefix_suffix|接頭語]] $w_{0}$ が存在する。&lt;br /&gt;
すると、$q_{0}, q_{1}, \dots, q_{k}$&lt;br /&gt;
の部分列であって、$w_{0}$ による $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
$$q_{0}, q_{1}, \dots, q_{k_{0}}$$&lt;br /&gt;
が存在する（ただし $n\leq k_{0}\leq k$）。&lt;br /&gt;
&lt;br /&gt;
すると、鳩ノ巣原理より&lt;br /&gt;
# $(q_{i-1}, a_{i}, q_{i})$, $(q_{i+j-1}, a_{i+j}, q_{i+j})\in \Delta$&lt;br /&gt;
（ただし、$a_{i}\neq\emptyword$, $a_{i+j}\neq\emptyword$）&lt;br /&gt;
# $q_{i}=q_{i+j}$&lt;br /&gt;
&lt;br /&gt;
という条件を満たす自然数の組 $(i, j)$ （ただし $0\leq i\leq k_{0}$, $0&amp;lt; j\leq k_{0}$）が少なくとも１つ存在する。&lt;br /&gt;
以下その $i$, $j$ を固定する。&lt;br /&gt;
&lt;br /&gt;
\begin{align*} x&amp;amp;:=a_{1}a_{2}\ldots a_{i}, \\ y&amp;amp;:=a_{i+1}a_{i+2}\ldots a_{i+j}, \\ z&amp;amp;:=a_{i+j+1}a_{i+j+2}\ldots a_{k},\end{align*}&lt;br /&gt;
とすると、$w=xyz$ である。また、$a_{i+j}\neq\emptyword$ であるから $\left|y\right|\gt 0$。&lt;br /&gt;
さらに、定義より $xy$ は $w_{0}$ の部分列であるから、$|xy|\leq n$。&lt;br /&gt;
&lt;br /&gt;
任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ が $\mathautomaton{A}$ に受理されることを示す。&lt;br /&gt;
&lt;br /&gt;
以下、記号列 $x$, $y$, $z$ による $\mathautomaton{A}$ の状態遷移をそれぞれ&lt;br /&gt;
\begin{align*}Q_{x}&amp;amp;=q_{0}, \dots, q_{i}, \\ Q_{y}&amp;amp;=q_{i+1}, \dots, q_{i+j}, \\ Q_{z}&amp;amp;=q_{i+j+1}, \dots, q_{k}, \end{align*}&lt;br /&gt;
と書くことにする。&lt;br /&gt;
&lt;br /&gt;
$m=0$ のときを示す。&lt;br /&gt;
&lt;br /&gt;
$q_{i}=q_{i+j}$ に注意すると、$(q_{i}, a_{i+j+1}, q_{i+j+1})\in \Delta$ である。&lt;br /&gt;
よって、&lt;br /&gt;
$$Q_{x}Q_{z}=q_{0}, \dots, q_{i}, q_{i+j+1}, \dots, q_{k}$$&lt;br /&gt;
は記号列 $xz$ による $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
$q_{0}=q_{I}$, $q_{k}\in F$ であるから、$xz$($=xy^{0}z$) は $\mathautomaton{A}$ に受理される。&lt;br /&gt;
&lt;br /&gt;
$m\gt 0$ のときを示す。&lt;br /&gt;
&lt;br /&gt;
$q_{i}=q_{i+j}$ に注意すると、$(q_{i+j}, a_{i+j+1}, q_{i+1})\in \Delta$ である。&lt;br /&gt;
$$Q_{x}\overbrace{Q_{y}\dots Q_{y}}^{m\text{個}}Q_{z}=q_{0}, \dots, q_{i}, \overbrace{q_{i+1}, \dots, q_{i+j}, q_{i+1}, \dots, q_{i+j}}^{\text{$q_{i+1}, \dots, q_{i+j}$ の反復が $m$回}}, q_{i+j+1}, \dots, q_{k}$$&lt;br /&gt;
は記号列 $xy^{m}z$ による $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
$q_{0}=q_{I}$, $q_{k}\in F$ であるから、$xy^{m}z$ は $\mathautomaton{A}$ に受理される。 &lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
===  反復補題の補足 ===&lt;br /&gt;
本稿の反復補題の $|xy|\leq n$ という条件を外したものも反復補題と呼ばれる。&lt;br /&gt;
反復補題の証明中において、$w$ の部分列を考えたことがそれ以外の条件の証明に対して非本質的であることに注意すると、&lt;br /&gt;
$|xy|\leq n$ という条件が余計であると考えられるからであろう。&lt;br /&gt;
&lt;br /&gt;
==  $\emptyword$ 動作なしの有限オートマトン ==&lt;br /&gt;
この項では&lt;br /&gt;
'''$\emptyword$ 動作なしの有限オートマトン(finite automaton without $\emptyword$-transitions)'''&lt;br /&gt;
について述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=$\emptyword$ 動作なしの有限オートマトン |label=def-finite_automaton_non_emptyword }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が&lt;br /&gt;
次の条件を満たすとき、&lt;br /&gt;
'''$\mathautomaton{A}$ は $\emptyword$ 動作なしの有限オートマトン(finite automaton without $\emptyword$-transitions)である'''と言う:&lt;br /&gt;
* $(q, a, q')\in \Delta$ に対して $a=\emptyword$ ならば $q=q'$&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=prop-finite_automaton_non_emptyword }}&lt;br /&gt;
任意の有限オートマトンに対して、それと等価な $\emptyword$ 動作なしの有限オートマトンが存在する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ==== {{ref |type=prop |label=prop-finite_automaton_non_emptyword }} の証明 ==== --&amp;gt;&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ を有限オートマトンとする。&lt;br /&gt;
&amp;lt;!-- $\mathautomaton{A}$ が $\emptyword$ 動作なしの有限オートマトンであれば、示すことはない。 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$q\in Q$, $a\in \Sigma$ にたいして、集合 $\mathof{C}{q, a}$ を次のように定める:&lt;br /&gt;
\[ \mathof{C}{q, a}=\mathsetintension{(q, a, q')}{ \text{記号列 $a$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する}}. \]&lt;br /&gt;
&lt;br /&gt;
$\mathof{C_{\emptyword}}{q_{I}}$ を次のように定義する:&lt;br /&gt;
\[\mathof{C_{\emptyword}}{q_{I}}=\mathsetintension{q'\in Q}{\text{記号列 } \emptyword \text{ による } q_{I} \text{ から } q' \text{ への } \mathautomaton{A} \text{ の状態遷移が存在する} }. \]&lt;br /&gt;
&lt;br /&gt;
次のように集合 $\Delta'_{0}$, $\Delta'_{\emptyword}$ および $\Delta'$ を次のように定める:&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\Delta'_{0}&amp;amp;=\bigcup_{q\in Q, a\in \Sigma} \mathof{C}{q, a}, \\&lt;br /&gt;
\Delta'_{\emptyword}&amp;amp;=\mathsetintension{(q, \emptyword, q)}{q\in Q}, \\&lt;br /&gt;
\Delta'&amp;amp;=\Delta'_{0}\cup \Delta'_{\emptyword}.&lt;br /&gt;
\end{align*}&lt;br /&gt;
また、&lt;br /&gt;
\[F'=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
F, &amp;amp; \text{if } F\cap\mathof{C_{\emptyword}}{q_{I}}=\emptyset, \\&lt;br /&gt;
F \cup \mathsetextension{q_{I}}, &amp;amp; \text{if } F\cap\mathof{C_{\emptyword}}{q_{I}}\neq\emptyset.&lt;br /&gt;
\end{cases}&lt;br /&gt;
\]&lt;br /&gt;
とする。&lt;br /&gt;
このとき$\mathautomaton{A}'=(Q, \Sigma, \Delta', q_{I}, F')$ は $\emptyword$ 動作なしの有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
記号列 $w\neq\emptyword$ に対して、以下が同値であることを示す:&lt;br /&gt;
# 記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する&lt;br /&gt;
# 記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在する&lt;br /&gt;
&lt;br /&gt;
次のように集合 $\Delta_{\emptyword}$ および $\Delta_{0}$  を次のように定める。&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\Delta_{\emptyword}&amp;amp;=\mathsetintension{(q, a, q')\in \Delta}{a=\emptyword\text{ かつ }q\neq q'}, \\&lt;br /&gt;
\Delta_{0}&amp;amp;=\Delta\setminus\Delta_{\emptyword}.&lt;br /&gt;
\end{align*}&lt;br /&gt;
以下 $\Delta_{0} \subseteq \Delta'_{0}$ に注意する。&lt;br /&gt;
&lt;br /&gt;
1 $\Rightarrow$ 2:&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在すると仮定する。&lt;br /&gt;
$\left|w\right|$ に対する帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|=1$ のとき:&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在することから $(q, w, q')\in \mathof{C}{q, w}$。&lt;br /&gt;
よって、$(q, w, q')\in \Delta'$。よって、$q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|\gt 1$ のとき: $w=w_{0}a$ とおく（ただし、$a\in\Sigma$）。&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在することから&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{k}$ （ただし、各 $i=1, \dots, k$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）。&lt;br /&gt;
# すべての $i\in \{1, \dots, k\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$。&lt;br /&gt;
# $q_{0}=q$, $q_{k}=q'$。&lt;br /&gt;
&lt;br /&gt;
を満たす状態の列 $q_{0}, q_{1}, \dots, q_{k}$ と記号の列 $a_{1}, a_{2}, \dots, a_{k}$が存在する&lt;br /&gt;
（ただし、$k\geq l$）。&lt;br /&gt;
このとき、$w_{0}=a_{1}\dots a_{k_{0}}$, $a=a_{k_{0}+1}$, $1\leq k_{0}\lt k$ を満たす $k_{0}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
すると、$q=q_{0}, q_{1}, \dots, q_{k_{0}}$ は記号列 $w_{0}$ による $q$ から $q_{k_{0}}$ への $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
また、$q_{k_{0}}, q_{k_{0}+1}, \dots, q_{k}=q'$ は記号列 $a$ による $q_{k_{0}}$ から $q'$ への $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から&lt;br /&gt;
記号列 $w_{0}$ による $q$ から $q_{k_{0}}$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
また、記号列 $a$ による $q_{k_{0}}$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在することから $(q_{k_{0}}, a, q')\in \mathof{C}{q_{k_{0}}, a}$。ゆえに、記号列 $w=w_{0}a$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
2 $\Rightarrow$ 1:&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在すると仮定する。&lt;br /&gt;
$\left|w\right|$ に対する帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|=1$ のとき:&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在することから&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{k}$ （ただし、各 $i=1, \dots, k$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）。&lt;br /&gt;
# すべての $i\in \{1, \dots, k\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta'$。&lt;br /&gt;
# $q_{0}=q$, $q_{k}=q'$。&lt;br /&gt;
&lt;br /&gt;
を満たす状態の列 $q_{0}, q_{1}, \dots, q_{k}$ と記号の列 $a_{1}, a_{2}, \dots, a_{k}$が存在する&lt;br /&gt;
（ただし、$k\geq l$）。&lt;br /&gt;
$\left|w\right|=1$ であるから、&lt;br /&gt;
\[a_{i}=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
w &amp;amp; i=k_{0} \\&lt;br /&gt;
\emptyword &amp;amp; i\neq k_{0}&lt;br /&gt;
\end{cases}&lt;br /&gt;
\]&lt;br /&gt;
を満たす $1\leq k_{0}$ が存在する。このとき、$\Delta'$ の定義から &lt;br /&gt;
\[q_{i}=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
q &amp;amp; i\lt k_{0} \\&lt;br /&gt;
q' &amp;amp; k_{0}\leq i&lt;br /&gt;
\end{cases}&lt;br /&gt;
\]&lt;br /&gt;
であって、$(q, w, q')\in \Delta'_{0}$ である。&lt;br /&gt;
$\Delta'_{0}$ の定義から $(q, w, q')\in \mathof{C}{q, w}$。&lt;br /&gt;
これは記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在することを意味する。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|\gt 1$ のとき: $w=w_{0}a$ とおく（ただし、$a\in\Sigma$）。&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在することから&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{k}$ （ただし、各 $i=1, \dots, k$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）。&lt;br /&gt;
# すべての $i\in \{1, \dots, k\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$。&lt;br /&gt;
# $q_{0}=q$, $q_{k}=q'$。&lt;br /&gt;
&lt;br /&gt;
を満たす状態の列 $q_{0}, q_{1}, \dots, q_{k}$ と記号の列 $a_{1}, a_{2}, \dots, a_{k}$が存在する&lt;br /&gt;
（ただし、$k\geq l$）。&lt;br /&gt;
このとき、$w_{0}=a_{1}\dots a_{k_{0}}$, $a=a_{k_{0}+1}$, $1\leq k_{0}\lt k$ を満たす $k_{0}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
すると、$q=q_{0}, q_{1}, \dots, q_{k_{0}}$ は記号列 $w_{0}$ による $q$ から $q_{k_{0}}$ への $\mathautomaton{A}'$ の状態遷移である。&lt;br /&gt;
また、$q_{k_{0}}, q_{k_{0}+1}, \dots, q_{k}=q'$ は記号列 $a$ による $q_{k_{0}}$ から $q'$ への $\mathautomaton{A}'$ の状態遷移である。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から&lt;br /&gt;
記号列 $w_{0}$ による $q$ から $q_{k_{0}}$ への $\mathautomaton{A}$ の状態遷移が存在し、&lt;br /&gt;
また、記号列 $a$ による $q_{k_{0}}$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する。ゆえに、記号列 $w=w_{0}a$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
以上を踏まえて、$L(\mathautomaton{A})=L(\mathautomaton{A}')$ を示す。&lt;br /&gt;
&lt;br /&gt;
$w\in L(\mathautomaton{A})$ を仮定する。&lt;br /&gt;
$w=\emptyword$ のとき、$F\cap\mathof{C_{\emptyword}}{q_{I}}\neq\emptyset$ である。&lt;br /&gt;
ゆえに、$q_{I}\in F'$。$(q_{I}, \emptyword, q_{I})\in \Delta'$ に注意すると、&lt;br /&gt;
$\emptyword$ による $q_{I}$ から $q_{I}$ への $\mathautomaton{A}'$ の状態遷移が存在するので、&lt;br /&gt;
$\emptyword\in L(\mathautomaton{A}')$。&lt;br /&gt;
&lt;br /&gt;
$w\neq \emptyword$ のとき、&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q\in F$ への $\mathautomaton{A}$ の状態遷移が存在することから、&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q\in F'$ への $\mathautomaton{A}'$ の状態遷移が存在することが速やかにわかる。ゆえに $w\in L(\mathautomaton{A}')$。&lt;br /&gt;
&lt;br /&gt;
以上より $L(\mathautomaton{A})\subseteq L(\mathautomaton{A}')$。&lt;br /&gt;
&lt;br /&gt;
$w\in L(\mathautomaton{A}')$ を仮定する。&lt;br /&gt;
$w=\emptyword$ のとき、$(q_{I}, \emptyword, q_{I})\in \Delta'$ かつ $q_{I}\in F'$ である。&lt;br /&gt;
&lt;br /&gt;
$F\cap\mathof{C_{\emptyword}}{q_{I}}=\emptyset$ のとき、$q_{I}\notin F$。また、$F=F'$ である。&lt;br /&gt;
まとめて、$q_{I}\notin F=F'\ni q_{I}$。これは矛盾である。&lt;br /&gt;
よって、$F\cap\mathof{C_{\emptyword}}{q_{I}}\neq\emptyset$ である。&lt;br /&gt;
ゆえに、$q\in \mathof{C_{\emptyword}}{q_{I}}$, $q\in F$ を満たす状態 $q\in Q$ が存在する。&lt;br /&gt;
$q\in \mathof{C_{\emptyword}}{q_{I}}$ であるから、&lt;br /&gt;
$\emptyword$ による $q_{I}$ から $q$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
$q\in F$ であるから $\emptyword\in L(\mathautomaton{A}')$。&lt;br /&gt;
&lt;br /&gt;
$w\neq \emptyword$ のとき、&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q\in F$ への $\mathautomaton{A}'$ の状態遷移が存在することから、&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q\in F'$ への $\mathautomaton{A}$ の状態遷移が存在することが速やかにわかる。&lt;br /&gt;
&lt;br /&gt;
以上より $L(\mathautomaton{A}')\subseteq L(\mathautomaton{A})$。&lt;br /&gt;
&lt;br /&gt;
$L(\mathautomaton{A})\subseteq L(\mathautomaton{A}')$ より$L(\mathautomaton{A})=L(\mathautomaton{A}')$。&lt;br /&gt;
$\mathautomaton{A}'$ が $\emptyword$ 動作なしの有限オートマトンであるから、命題の主張を得る。&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
==  決定性有限オートマトン ==&lt;br /&gt;
この項では'''決定性有限オートマトン(deterministic finite automaton)'''について述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=決定性有限オートマトン |label=def-deterministic_finite_automaton }}&lt;br /&gt;
$\emptyword$ 動作なしの有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が次の条件を満たすとき、'''$\mathautomaton{A}$ は決定性有限オートマトン(deterministic finite automaton)である'''と言う:&lt;br /&gt;
&lt;br /&gt;
* 各 $(q, a) \in Q\times \Sigma$ という組に対して、$(q, a, q')\in \Delta$ という形の元は高々一個&lt;br /&gt;
&lt;br /&gt;
有限オートマトン $\mathautomaton{A}$ が決定性有限オートマトンとは限らないことを明示したいときに、&lt;br /&gt;
'''$\mathautomaton{A}$ は非決定性有限オートマトン(nondeterministic finite automaton)である'''と言うことがある。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=prop-finite_automaton_non_emptyword }}&lt;br /&gt;
任意の有限オートマトンに対して、それと等価な決定性有限オートマトンが存在する。&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
$\mathautomaton{A}_{0}=(Q_{0}, \Sigma, \Delta_{0}, q_{I}, F_{0})$ を有限オートマトンとする。&lt;br /&gt;
{{ref |type=prop |label=prop-finite_automaton_non_emptyword }} から&lt;br /&gt;
$\mathautomaton{A}_{0}$ と等価な&lt;br /&gt;
$\emptyword$ 動作なしの有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
$S\subseteq Q$, $a\in (\Sigma \cup \mathsetextension{\emptyword})$ に対して、集合 $\mathof{T}{S, a}$ を次のように定める:&lt;br /&gt;
\[&lt;br /&gt;
\mathof{T}{S, a}=\mathsetintension{q'\in Q}{(q, a, q')\in\Delta \text{ for } q\in S}.&lt;br /&gt;
\]&lt;br /&gt;
次のように集合 $\Delta'$, $F'$ を定める。&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\Delta' &amp;amp;=\mathsetintension{(S, a, \mathof{T}{S, a})}{S\subseteq Q, a\in (\Sigma \cup \mathsetextension{\emptyword}) } \\&lt;br /&gt;
F' &amp;amp;=\mathsetintension{S\subseteq Q}{S\cap F\neq \emptyset}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
このとき、$\mathautomaton{A}'=(\mathpowerset{Q}, \Sigma, \Delta', \mathsetextension{q_{I}}, F')$&lt;br /&gt;
は決定性有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
$\mathof{L}{\mathautomaton{A}}=\mathof{L}{\mathautomaton{A}'}$ を示す。&lt;br /&gt;
&lt;br /&gt;
まず、$\mathof{L}{\mathautomaton{A}}\subseteq\mathof{L}{\mathautomaton{A}'}$&lt;br /&gt;
を示すために次の命題($*$)を示す:&lt;br /&gt;
&lt;br /&gt;
($*$)&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q$ への $\mathautomaton{A}$ の状態遷移が存在するとき、次を満たす&lt;br /&gt;
$S\in \mathpowerset{Q}$ が存在する:&lt;br /&gt;
+ $q\in S$。 &lt;br /&gt;
+ 記号列 $w$ による $\mathsetextension{q_{I}}$ から $S$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q$ への $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
$(q_{I}=)q_{0}, \dots, q_{n}(=q)$ が存在すると仮定する。&lt;br /&gt;
($*$) の 1., 2. を満たす $S$ が存在することを $n$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$n=0$ のときは明らか。&lt;br /&gt;
&lt;br /&gt;
$n\gt 0$ のとき、次を満たす $w'\in \kleenecl{\Sigma}$, $a\in \Sigma$ が存在する:&lt;br /&gt;
+ $w=w'a$。 &lt;br /&gt;
+ $(q_{n-1}, a, q_{n})\in \Delta$。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から、$q_{n-1}\in S'$、&lt;br /&gt;
記号列 $w'$ による $\mathsetextension{q_{I}}$ から $S'$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
$(q_{n-1}, a, q_{n})\in \Delta$ より、次を満たす $S\in \mathpowerset{Q}$ が存在する:&lt;br /&gt;
+ $q_{n}\in S$。&lt;br /&gt;
+ $(S', a, S)\in \Delta'$。&lt;br /&gt;
&lt;br /&gt;
ゆえに、$q\in S$ で&lt;br /&gt;
記号列 $w$ による $\mathsetextension{q_{I}}$ から $S$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
以上より ($*$) は示された。&lt;br /&gt;
&lt;br /&gt;
さて、$w\in \mathof{L}{\mathautomaton{A}}$ を仮定する。&lt;br /&gt;
すると、記号列 $w$ による $q_{I}$ から $q\in F$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
(*) より次を満たす $S\in \mathpowerset{Q}$ が存在する:&lt;br /&gt;
+ $q\in S$。 &lt;br /&gt;
+ 記号列 $w$ による $\mathsetextension{q_{I}}$ から $S$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
$q\in S$ より $S\cap F\neq \emptyset$ であるから、$S\in F'$。&lt;br /&gt;
ゆえに、$w\in \mathof{L}{\mathautomaton{A}'}$。&lt;br /&gt;
よって、$\mathof{L}{\mathautomaton{A}}\subseteq \mathof{L}{\mathautomaton{A}'}$。&lt;br /&gt;
&lt;br /&gt;
次に $\mathof{L}{\mathautomaton{A}'}\subseteq\mathof{L}{\mathautomaton{A}}$&lt;br /&gt;
を示すために次の命題($**$)を示す:&lt;br /&gt;
&lt;br /&gt;
($**$)  &lt;br /&gt;
記号列 $w$ による $\mathsetextension{q_{I}}$ から $S$ への $\mathautomaton{A}'$ の状態遷移が存在するとき、&lt;br /&gt;
任意の $q\in S$ に対して記号列 $w$ による $q_{I}$ から $q$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ による $\mathsetextension{q_{I}}$ から $S$ への $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
$(\mathsetextension{q_{I}}=)S_{0}, \dots, S_{n}(=S)$ が存在すると仮定する。&lt;br /&gt;
任意の $q\in S$ に対して記号列 $w$ による $q_{I}$ から $q$ への $\mathautomaton{A}$&lt;br /&gt;
の状態遷移が存在することを $n$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$n=0$ のときは明らか。&lt;br /&gt;
&lt;br /&gt;
$n\gt 0$ のとき、$q\in S$ とする。&lt;br /&gt;
このとき、次を満たす $w'\in \kleenecl{\Sigma}$, $a\in \Sigma$ が存在する:&lt;br /&gt;
+ $w=w'a$。 &lt;br /&gt;
+ $(S_{n-1}, a, S)\in \Delta'$。&lt;br /&gt;
&lt;br /&gt;
$(S_{n-1}, a, S)\in \Delta'$ のであるから、$(q', a, q)\in \Delta$ を満たす $q'\in S_{n-1}$ が存在する。&lt;br /&gt;
帰納法の仮定から記号列 $w'$ による $q_{I}$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
$(q', a, q)\in \Delta$ から、&lt;br /&gt;
帰納法の仮定から記号列 $w$ による $q_{I}$ から $q$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
以上より ($**$) は示された。&lt;br /&gt;
&lt;br /&gt;
さて、$w\in \mathof{L}{\mathautomaton{A}'}$ を仮定する。&lt;br /&gt;
すると、記号列 $w$ による $\mathsetextension{q_{I}}$ から $S\in F'$ への $\mathautomaton{A}'$&lt;br /&gt;
の状態遷移が存在する。&lt;br /&gt;
このとき、$S\cap F\neq \emptyset$ であるから、$q\in S$ かつ $q\in F$ を満たす $q$ が存在する。&lt;br /&gt;
($**$) から記号列 $w$ による $q_{I}$ から $q$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
$q\in F$ であるから、$w\in \mathof{L}{\mathautomaton{A}}$。&lt;br /&gt;
よって、$\mathof{L}{\mathautomaton{A}'}\subseteq\mathof{L}{\mathautomaton{A}}$。&lt;br /&gt;
&lt;br /&gt;
以上より $L(\mathautomaton{A})=L(\mathautomaton{A}')$。&lt;br /&gt;
$\mathautomaton{A}'$ が決定性有限オートマトンであるから、命題の主張を得る。&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
==  参考文献 ==&lt;br /&gt;
# 新屋 良磨、オートマトン理論再考、コンピュータ ソフトウェア、2017、34 巻、3 号、p. 3_3-3_35、公開日 2017/09/25、Print ISSN 0289-6540、[https://doi.org/10.11309/jssst.34.3_3]、[https://www.jstage.jst.go.jp/article/jssst/34/3/34_3_3/_article/-char/ja]&lt;br /&gt;
# 五十嵐喜英他、『[https://www.amazon.co.jp/gp/product/4434158783/infinitytopoi-22  数理情報科学シリーズ ２４ オートマトンと形式言語の基礎]』、牧野書店、2011&lt;br /&gt;
# Martin Aigner,Guenter M. Ziegler,Karl H. Hofmann, [https://www.amazon.co.jp/Proofs-BOOK-Martin-Aigner-dp-3662572648/dp/3662572648/infinitytopoi-22  &amp;quot;Proofs from THE BOOK&amp;quot;], Springer, 2004&lt;br /&gt;
&lt;br /&gt;
== 脚注 ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 関連項目  ==&lt;br /&gt;
* [[形式言語]]&lt;br /&gt;
* [[正規表現]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
|+ Chomsky階層&lt;br /&gt;
! 文法のタイプ&lt;br /&gt;
! 言語のクラス&lt;br /&gt;
! 計算モデル&lt;br /&gt;
|-&lt;br /&gt;
! タイプ0&lt;br /&gt;
| [[句構造言語]]&lt;br /&gt;
| [[Turingマシン]]&lt;br /&gt;
|-&lt;br /&gt;
! タイプ1&lt;br /&gt;
| [[文脈依存言語]]&lt;br /&gt;
| [[線形有界オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ2&lt;br /&gt;
| [[文脈自由言語]]&lt;br /&gt;
| [[プッシュダウン・オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ3&lt;br /&gt;
| [[正規言語]]&lt;br /&gt;
| [[有限オートマトン]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E6%AD%A3%E8%A6%8F%E8%A8%80%E8%AA%9E&amp;diff=7282</id>
		<title>正規言語</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E6%AD%A3%E8%A6%8F%E8%A8%80%E8%AA%9E&amp;diff=7282"/>
		<updated>2021-06-24T08:34:03Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: Add Myhill-Nerode Theorem&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{TOC |align=right |noautonum=1 }}&amp;lt;!-- 右寄せ連番無し目次をここに表示 --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Category:形式言語理論|セイキゲンゴ]]&lt;br /&gt;
{{begin |preamble}}&lt;br /&gt;
&amp;lt;!-- 参考文献 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 定理環境 --&amp;gt;&lt;br /&gt;
{{newtheorem |type=theorem |display=定理}}&lt;br /&gt;
{{newtheorem |type=lemma |display=補題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=definition |display=定義 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=prop |display=命題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=example |display=例 |family=theorem }}&lt;br /&gt;
&amp;lt;!-- MathJax commands --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\newcommand{\mathsetextension}[1]{%&lt;br /&gt;
\left\{ #1 \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathsetintension}[2]{%&lt;br /&gt;
\left\{ #1 \left| #2 \right.\right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathof}[2]{%&lt;br /&gt;
\mathop{#1}\left(#2\right)%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathderiv}{\mathrel{\mathop{\Rightarrow}^{*}}}&lt;br /&gt;
\newcommand{\mathgen}{\rightsquigarrow}&lt;br /&gt;
\newcommand{\mathgenfun}[1]{\mathbf{#1}}&lt;br /&gt;
\newcommand{\mirrorim}[1]{\overleftarrow{#1}}&lt;br /&gt;
\newcommand{\emptyword}{\varepsilon}&lt;br /&gt;
\newcommand{\kleenecl}[1]{{#1}^{*}}&lt;br /&gt;
\newcommand{\inverse}[1]{{#1}^{-1}}&lt;br /&gt;
\newcommand{\interpret}[1]{[\![#1]\!]}&lt;br /&gt;
\newcommand{\mathautomaton}[1]{\mathcal{#1}}&lt;br /&gt;
\newcommand{\mathnat}{\mathbb{N}}&lt;br /&gt;
\newcommand{\qed}{\blacksquare}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
{{end |preamble}}&lt;br /&gt;
'''正規言語（regular language）'''とは右線形文法(right linear grammar)または左線形文法(left linear grammar)によって定められる形式言語である。&lt;br /&gt;
&lt;br /&gt;
右線形文法は句構造文法の一種であるから、&lt;br /&gt;
右線形言語は[[句構造言語]]の一種である。&lt;br /&gt;
&lt;br /&gt;
また、右線形文法は文脈自由文法の一種であるから、&lt;br /&gt;
右線形言語は[[文脈自由言語]]の一種である。&lt;br /&gt;
&lt;br /&gt;
以下、項目[[形式言語]]、[[句構造言語]]において定められている言語上の演算や文法の等価性の定義などについては特に断らず用いる。&lt;br /&gt;
&lt;br /&gt;
==  正規言語の導入 ==&lt;br /&gt;
この節では'''正規言語'''を定義する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=definition |name=右線形文法 |label=def-right_linear_grammar }}&lt;br /&gt;
'''右線形文法（right linear grammar）'''とは&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# $\Sigma$ と互いに素な'''変数記号（variable）'''の空でない有限集合 $V$&lt;br /&gt;
# '''生成規則（production rule）'''と呼ばれる有限集合 $R \subseteq V \times (\kleenecl{\Sigma}V)\cup (\kleenecl{\Sigma})$&lt;br /&gt;
# '''開始記号(start symbol)'''または'''初期記号'''と呼ばれる $S\in V$&lt;br /&gt;
&lt;br /&gt;
の４つ組$(V, \Sigma, R, S)$である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
これは、[[句構造言語#def-phrase_structure_grammar | 句構造文法]]の一種である。また、[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]の一種である。&lt;br /&gt;
&lt;br /&gt;
[[句構造言語]]のときと同様、$\Sigma$ の元を'''終端記号(terminal)'''、$V$ の元を'''非終端記号(non-terminal)'''と呼ぶことも多い。&lt;br /&gt;
&lt;br /&gt;
以下では、元$(A, \alpha)\in R$ のことを$A\mathgen\alpha$と書く。&lt;br /&gt;
&lt;br /&gt;
[[句構造言語#def-derivation | 導出]]、[[句構造言語#def-phrase_structure_lang | 生成される言語]]などは&lt;br /&gt;
句構造言語と同様に定義される。&lt;br /&gt;
&lt;br /&gt;
'''正規言語'''とは何らかの右線形文法によって生成される言語のことを言う。&lt;br /&gt;
&lt;br /&gt;
==  正規言語の例 ==&lt;br /&gt;
この節では正規言語の例を紹介する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列全体 |label=ex-all_lang }}&lt;br /&gt;
$V=\left\{ S \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen\emptyword, S\mathgen 0S, S\mathgen 1S \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
$0$ と $1$ からなる有限記号列全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、$0$ と $1$ からなる有限記号列全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる。&lt;br /&gt;
&lt;br /&gt;
\begin{gather*}&lt;br /&gt;
S \Rightarrow \emptyword \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 0\emptyword = 0 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 1\emptyword = 1 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 00\emptyword = 00 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 01\emptyword = 01 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 10\emptyword = 10 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 11\emptyword = 11 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 000S \Rightarrow 000\emptyword = 000 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 001S \Rightarrow 001\emptyword = 001 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 010S \Rightarrow 010\emptyword = 010 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 011S \Rightarrow 011\emptyword = 011 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 100S \Rightarrow 100\emptyword = 100 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 101S \Rightarrow 101\emptyword = 101 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 110S \Rightarrow 110\emptyword = 110 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 111S \Rightarrow 111\emptyword = 111&lt;br /&gt;
\end{gather*}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体 |label=ex-only_three_one_lang }}&lt;br /&gt;
$V=\left\{ S, A_{1}, A_{2}, A_{3} \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen 0S, S\mathgen 1A_{1}, A_{1}\mathgen 0A_{1}, A_{1}\mathgen 1A_{2}, A_{2}\mathgen 0A_{2}, A_{2}\mathgen 1A_{3}, A_{3}\mathgen 0A_{3}, A_{3}\mathgen \emptyword \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
S &amp;amp;\Rightarrow 1A_{1} \Rightarrow 11A_{2} \Rightarrow 111A_{3} \Rightarrow 111\emptyword = 111 \\&lt;br /&gt;
S &amp;amp;\Rightarrow 0S \\&lt;br /&gt;
&amp;amp;\Rightarrow 01A_{1} \Rightarrow 010A_{1} \Rightarrow 0100A_{1} \\&lt;br /&gt;
&amp;amp;\Rightarrow 01001A_{2} \Rightarrow 010010A_{2} \Rightarrow 0100100A_{2} \Rightarrow 01001000A_{2} \\&lt;br /&gt;
&amp;amp;\Rightarrow 010010001A_{3} \Rightarrow 0100100010A_{3} \Rightarrow 01001000100A_{3} \Rightarrow 010010001000A_{3} \Rightarrow 0100100010000A_{3} \Rightarrow 0100100010000\emptyword =0100100010000&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=自然数の二進表現全体 |label=ex-bi_lang }}&lt;br /&gt;
$V=\left\{ S, A_{1} \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen 0, S\mathgen 1A_{1}, A_{1}\mathgen 0A_{1}, A_{1}\mathgen 1A_{1}, A_{1}\mathgen \emptyword \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
自然数の二進表現全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、自然数の二進表現全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる&lt;br /&gt;
&lt;br /&gt;
\begin{gather*}&lt;br /&gt;
S \Rightarrow 0 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 1\emptyword = 1 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 10\emptyword = 10 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 11\emptyword = 11 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 100\emptyword = 100 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 101\emptyword = 101 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 100\emptyword = 110 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 111\emptyword = 111 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 1000A_{1} \Rightarrow 1000\emptyword = 1000 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 1001A_{1} \Rightarrow 1001\emptyword = 1001 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 1010A_{1} \Rightarrow 1010\emptyword = 1010 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 1011A_{1} \Rightarrow 1011\emptyword = 1011 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 1100A_{1} \Rightarrow 1100\emptyword = 1100 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 1101A_{1} \Rightarrow 1101\emptyword = 1101 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 1110A_{1} \Rightarrow 1110\emptyword = 1110 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 1111A_{1} \Rightarrow 1111\emptyword = 1111&lt;br /&gt;
\end{gather*}&lt;br /&gt;
&lt;br /&gt;
==  正規表現、有限オートマトンとの関係 ==&lt;br /&gt;
この節では正規言語、[[正規表現]]および[[有限オートマトン]]との関係を述べる。以下では[[正規表現]]と[[有限オートマトン]]の定義などは既知とする。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=theorem |label=thm-regularandNFA }}&lt;br /&gt;
言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $L=\interpret{\alpha}$ なる正規表現 $\alpha$ が存在する。&lt;br /&gt;
# $L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
この節ではこの定理を証明する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=lemma |label=lemma-of-thm-regularandNFA }}&lt;br /&gt;
正規言語 $G=(V, \Sigma, R, S)$ に対して、&lt;br /&gt;
$G$ と[[句構造言語#句構造文法の等価性 | 等価 ]]であって、&lt;br /&gt;
すべての生成規則の右辺が&lt;br /&gt;
$(\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
の元である右線形文法が存在する。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
正規言語 $G=(V, \Sigma, R, S)$ について、&lt;br /&gt;
$R=\{A_{0}\mathgen \alpha_{0}, \ldots, A_{n}\mathgen \alpha_{n}\}$ （ただし $n\in\mathnat$）&lt;br /&gt;
とする。&lt;br /&gt;
&lt;br /&gt;
$G_{i}=(V_{i}, \Sigma, R_{i}, S)$&lt;br /&gt;
（ただし $n=0, \ldots, n+1$）&lt;br /&gt;
を次のように定義する。&lt;br /&gt;
&lt;br /&gt;
* $G_{0}=G$&lt;br /&gt;
* $\alpha_{i}\in (\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
のとき、$G_{i+1}:=G_{i}$ とする。&lt;br /&gt;
* $\alpha_{i}\in \kleenecl{\Sigma} \setminus (\Sigma \cup\{\emptyword\})$ のとき、$\alpha_{i}=a_{0}\ldots a_{m}$ （ただし、$m$ は $1$ 以上の自然数であって、$a_{j}\in \Sigma$ for $j\in \mathnat$）とする。&lt;br /&gt;
** $V_{i+1}:=V_{i}\cup \{B_{0}, \ldots, B_{m}\}$ （ただし、各 $B_{j}$ は $B_{j}\notin V_{i}\cup \Sigma$ を満たす変数記号）。&lt;br /&gt;
** $R_{i+1}:=R_{i}\setminus \{A_{i}\mathgen \alpha_{i}\}\cup \{A_{i} \mathgen a_{0}B_{0}, B_{0} \mathgen a_{1}B_{1}, \ldots, B_{m-1} \mathgen a_{m}B_{m}, B_{m}\mathgen \emptyword\}$。&lt;br /&gt;
* $\alpha_{i}\in \kleenecl{\Sigma}V\setminus (\Sigma \cup\{\emptyword\})V$ のとき、$\alpha_{i}=a_{0}\ldots a_{m} A'_{i}$ （ただし、$m$ は $1$ 以上の自然数であって、$a_{j}\in \Sigma$ for $j\in \mathnat$）とする。&lt;br /&gt;
** $V_{i+1}:=V_{i}\cup \{B_{0}, \ldots, B_{m}\}$ （ただし、各 $B_{j}$ は $B_{j}\notin V_{i}\cup \Sigma$ を満たす変数記号）。&lt;br /&gt;
** $R_{i+1}:=R_{i}\setminus \{A_{i}\mathgen \alpha_{i}\}\cup \{A_{i} \mathgen a_{0}B_{0}, B_{0} \mathgen a_{1}B_{1}, \ldots, B_{m-1} \mathgen a_{m}B_{m}, B_{m}\mathgen A'_{i}\}$。&lt;br /&gt;
&lt;br /&gt;
各 $i$ に対して、 $L(G_{i})=L(G_{i+1})$ に注意すると&lt;br /&gt;
$G_{n+1}$ が求める文法であることがわかる。&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 | display=Proof of {{ref |type=theorem |label=thm-regularandNFA }}. }}&lt;br /&gt;
(2. $\Rightarrow$ 1.)&lt;br /&gt;
$L=\interpret{\alpha}$ なる正規表現 $\alpha$ が存在するとき、&lt;br /&gt;
$L$ を生成する右線形文法が存在することを言えば良い。&lt;br /&gt;
&lt;br /&gt;
正規表現の構成についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
Case 1.&lt;br /&gt;
$L=\interpret{\emptyset}=\emptyset$ のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \emptyset, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 2.&lt;br /&gt;
$L=\interpret{\emptyword}=\{\emptyword\}$ のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \{S \mathgen \emptyword\}, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 3.&lt;br /&gt;
$L=\interpret{a}=\{a\}$ (ただし、$a\in \Sigma$) のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \{S \mathgen a\}, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 4.&lt;br /&gt;
$L=\interpret{\alpha\beta}=\interpret{\alpha}\cdot\interpret{\beta}$&lt;br /&gt;
（ただし、$\alpha$, $\beta$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$, $\interpret{\beta}$&lt;br /&gt;
を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$\interpret{\alpha}$ を生成する右線形文法を&lt;br /&gt;
$G=(V_{\alpha}, \Sigma, R_{\alpha}, S_{\alpha})$、&lt;br /&gt;
$\interpret{\beta}$ を生成する右線形文法を&lt;br /&gt;
$G=(V_{\beta}, \Sigma, R_{\beta}, S_{\beta})$ とする。&lt;br /&gt;
このとき、$V_{\alpha}\cap V_{\beta}=\emptyset$ と仮定しても&lt;br /&gt;
一般性を失わない（必要であれば、変数記号を適切に置き換えれば良い）。&lt;br /&gt;
&lt;br /&gt;
さて、&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
R_{\alpha}^{(V)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R_{\alpha}}{\gamma \in \kleenecl{\Sigma}V}  \\&lt;br /&gt;
R_{\alpha}^{(0)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R_{\alpha}}{\gamma \in \kleenecl{\Sigma}}  &lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$R_{\alpha}=R_{\alpha}^{(V)}\cup R_{\alpha}^{(0)}$,&lt;br /&gt;
$R_{\alpha}^{(V)}\cap R_{\alpha}^{(0)}=\emptyset$ である。&lt;br /&gt;
\[R_{\alpha}^{(S_{\beta})}:=\mathsetintension{A\mathgen \gamma S_{\beta}}{A\mathgen \gamma \in R_{\alpha}, \gamma \in \kleenecl{\Sigma}}\]&lt;br /&gt;
とすると、&lt;br /&gt;
$G=(V_{\alpha}\cup V_{\beta}, \Sigma, R_{\alpha}^{V}\cup R_{\alpha}^{(S_{\beta})}\cup R_{\beta}, S_{\alpha})$&lt;br /&gt;
は$\interpret{\alpha}\cdot\interpret{\beta}$ を生成する右線形文法である。&lt;br /&gt;
&lt;br /&gt;
Case 5.&lt;br /&gt;
$L=\interpret{\alpha +\beta}=\interpret{\alpha}\cup \interpret{\beta}$&lt;br /&gt;
（ただし、$\alpha$, $\beta$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$, $\interpret{\beta}$&lt;br /&gt;
を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$\interpret{\alpha}$ を生成する右線形文法を&lt;br /&gt;
$G=(V_{\alpha}, \Sigma, R_{\alpha}, S_{\alpha})$、&lt;br /&gt;
$\interpret{\beta}$ を生成する右線形文法を&lt;br /&gt;
$G=(V_{\beta}, \Sigma, R_{\beta}, S_{\beta})$ とおく&lt;br /&gt;
（ただし、$V_{\alpha}\cap V_{\beta}=\emptyset$ とする）。&lt;br /&gt;
&lt;br /&gt;
このとき、右線形文法&lt;br /&gt;
$G=(V_{\alpha}\cup V_{\beta}\cup \{S\}, \Sigma, R_{\alpha}\cup R_{\beta}\cup \{S\mathgen S_{\alpha}, S\mathgen S_{\beta}\}, S)$&lt;br /&gt;
（ただし、$S\notin V_{\alpha}\cup V_{\beta}$）は&lt;br /&gt;
$\interpret{\alpha}\cup \interpret{\beta}$ を生成する。&lt;br /&gt;
&lt;br /&gt;
Case 6.&lt;br /&gt;
$L=\interpret{\kleenecl{\alpha}}=\kleenecl{\interpret{\alpha}}$&lt;br /&gt;
（ただし、$\alpha$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$&lt;br /&gt;
を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$\interpret{\alpha}$ を生成する右線形文法を&lt;br /&gt;
$G=(V, \Sigma, R, S)$ とする。&lt;br /&gt;
&lt;br /&gt;
さて、&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
R^{(V)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R}{\gamma \in \kleenecl{\Sigma}V} \\&lt;br /&gt;
R^{(0)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R}{\gamma \in \kleenecl{\Sigma}}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$R=R^{(V)}\cup R^{(0)}$,&lt;br /&gt;
$R^{(V)}\cap R^{(0)}=\emptyset$ である。&lt;br /&gt;
&lt;br /&gt;
\[R^{(S)}:=\mathsetintension{A\mathgen \gamma S}{A\mathgen \gamma \in R, \gamma \in \kleenecl{\Sigma}}\]&lt;br /&gt;
とすると、右線形文法&lt;br /&gt;
$G=(V, \Sigma, R^{(V)}\cup R^{(S)}\cup \{S\mathgen \emptyword\}, S)$ は&lt;br /&gt;
$\kleenecl{\interpret{\alpha}}$ を生成する。&lt;br /&gt;
&lt;br /&gt;
以上、Case 1-6 より(2. $\Rightarrow$ 1.) は示された。&lt;br /&gt;
&lt;br /&gt;
(1. $\Rightarrow$ 3.)&lt;br /&gt;
$L$ が正規言語であるとき、補題 2から&lt;br /&gt;
すべての生成規則の右辺が&lt;br /&gt;
$(\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
の元である$L$ を生成する右線形文法が存在する。&lt;br /&gt;
この文法を $G=(V, \Sigma, R, S)$ とする。&lt;br /&gt;
&lt;br /&gt;
まず、有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \delta, q_{I}, F)$&lt;br /&gt;
を次のように定義する。&lt;br /&gt;
&lt;br /&gt;
* $Q=V \cup \{f\}$ （ただし、$f\notin V$）&lt;br /&gt;
* $q_{I}=S$&lt;br /&gt;
* $\Delta = \{(A, a, A') | A, A'\in V, a\in \Sigma\cup\{\emptyword\}, A \mathgen aA'\in R \} \cup \{ (A, a, f) | A\in V, a\in \Sigma\cup\{\emptyword\}, A \mathgen a\in R\} \}$&lt;br /&gt;
* $F=\{f\}$&lt;br /&gt;
&lt;br /&gt;
次に、$wA\in \kleenecl{\Sigma}V$&lt;br /&gt;
に対して以下の２条件は同値であることを示す。&lt;br /&gt;
&lt;br /&gt;
(a) $S$ から始まる&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G}\cdots \Rightarrow_{G} \alpha_{n}(=wA)\]&lt;br /&gt;
(ただし、$\alpha_{i}=w_{i}A_{i}$ for $1\leq i\leq n$)&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
&lt;br /&gt;
(b) 記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ A_{0}, A_{1}, \ldots, A_{n}\]&lt;br /&gt;
（ただし、$A_{0}=S$, $A_{n}=A$）が存在する。&lt;br /&gt;
&lt;br /&gt;
(a) $\Rightarrow$ (b) を $n$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$n=1$ のとき、&lt;br /&gt;
$w=a$ なる $a\in\Sigma\cup\{\emptyword\}$が存在し、&lt;br /&gt;
$S\mathgen aA \in R$ であるはずである。&lt;br /&gt;
このとき、$\mathautomaton{A}$ の定義から&lt;br /&gt;
$(S, a, A)\in \Delta$である。&lt;br /&gt;
ゆえに、記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A \]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n&amp;gt;1$ のとき、&lt;br /&gt;
$w=w'a$ （ただし、$a\in \Sigma\cup\{\emptyword\}$）とおく。&lt;br /&gt;
このとき、$G$ の生成規則の形から&lt;br /&gt;
$w_{n-1}=w'$, &lt;br /&gt;
$A_{n-1}\mathgen aA \in R$&lt;br /&gt;
である。&lt;br /&gt;
このとき、帰納法の仮定から&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n-1}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[S, A_{1}, \ldots, A_{n-1} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
$A_{n-1}\mathgen aA \in R$&lt;br /&gt;
であるから、&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$であることに注意すると&lt;br /&gt;
記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{1}, \ldots, A_{n-1}, A \]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
(b) $\Rightarrow$ (a) を $n$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$n=1$ のとき、&lt;br /&gt;
$w=a$ なる $a\in\Sigma\cup\{\emptyword\}$が存在し、&lt;br /&gt;
$(S, a, A)\in \Delta$ のはずである。&lt;br /&gt;
このとき、$\mathautomaton{A}$ の定義から&lt;br /&gt;
$S\mathgen aA \in R$ である。ゆえに&lt;br /&gt;
\[ S \Rightarrow_{G} aA \]&lt;br /&gt;
である。&lt;br /&gt;
&lt;br /&gt;
$n&amp;gt;1$ のとき、&lt;br /&gt;
記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[A_{0}, A_{1}, \ldots, A_{n-1}A_{n} \]&lt;br /&gt;
（ただし、$A_{0}=S$, $A_{n}=A$）が存在すると仮定する。&lt;br /&gt;
すると、&lt;br /&gt;
$w=w'a$,&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$&lt;br /&gt;
を満たす&lt;br /&gt;
$a\in\Sigma\cup\{\emptyword\}$, $w'\in\kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
すると、記号列 $w'$ による $S$ から $A_{n-1}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[A_{0}, A_{1}, \ldots, A_{n-1} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
帰納法の仮定から&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n-1}(=w'A_{n-1})\]&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$ であるから、&lt;br /&gt;
$A_{n-1} \mathgen  aA\in R$ であるので、&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G} \cdots \Rightarrow_{G} w'A_{n-1} \Rightarrow_{G} w'aA(=wA) \]&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
 &lt;br /&gt;
最後に $L=L(\mathautomaton{A})$ を示す。&lt;br /&gt;
&lt;br /&gt;
$w\in L$ を仮定する。&lt;br /&gt;
すると、導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} \Rightarrow_{G} w\]&lt;br /&gt;
が存在する。&lt;br /&gt;
$G$ の生成規則の形から&lt;br /&gt;
$w=w'a$, $\alpha_{n}=w'A_{n}$, $A_{n}\mathgen a \in R$&lt;br /&gt;
を満たす $A_{n}\in V$, $a\in \Sigma\cup\{\emptyword\}$, &lt;br /&gt;
$w'\in \kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
このとき、&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n}$ への $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, A_{1}, \ldots, A_{n} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
$A_{n}\mathgen a \in R$&lt;br /&gt;
であるから、&lt;br /&gt;
$(A_{n}, a, f)\in \Delta$&lt;br /&gt;
に注意すると、&lt;br /&gt;
記号列 $w'a=w$ による $S$ から $f$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, \ldots, A_{n}, f \]&lt;br /&gt;
が存在する。&lt;br /&gt;
ゆえに $w\in L(\mathautomaton{A})$ である。&lt;br /&gt;
&lt;br /&gt;
逆に、$w\in L(\mathautomaton{A})$ とする。&lt;br /&gt;
すると、&lt;br /&gt;
記号列 $w$ による $S$ から $f$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, A_{1}, \ldots, A_{n}, f\]&lt;br /&gt;
が存在する。&lt;br /&gt;
すると、&lt;br /&gt;
$w=w'a$, $(A_{n}, a, f) \in \Delta$&lt;br /&gt;
を満たす $a\in \Sigma\cup\{\emptyword\}$, &lt;br /&gt;
$w'\in \kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
また、&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, \ldots, A_{n} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
よって、導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} (=w'A_{n})\]&lt;br /&gt;
が存在する。&lt;br /&gt;
$(A_{n}, a, f) \in \Delta$ から&lt;br /&gt;
$A_{n}\mathgen a$ であるので、&lt;br /&gt;
$w$ の導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} \Rightarrow_{G} w (=w'a)\]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
以上より(1. $\Rightarrow$ 3.)は示された。&lt;br /&gt;
&lt;br /&gt;
(3. $\Rightarrow$ 2.)&lt;br /&gt;
$L$ を受理する有限オートマトンを&lt;br /&gt;
$\mathautomaton{A}=(\{q_{1}, q_{2}, \ldots, q_{n}\}, \Sigma, \Delta, q_{1}, \{q_{F_{0}}, q_{F_{1}}, \ldots, q_{F_{m}}\})$ とおく。&lt;br /&gt;
&lt;br /&gt;
簡単のため、以下&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\sum_{\alpha \in A} \alpha &amp;amp;= (\alpha_{0}+ \cdots + \alpha_{k}) \quad \text{（ただし、A は正規表現の空でない有限集合であって、A=\{a_{0}, \ldots, a_{k}\}）}, \\&lt;br /&gt;
Q_{ij}&amp;amp;=\{a\in \Sigma\cup\{\emptyword\} | (q_{i}, a, q_{j})\in \Delta\}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
という略記を用いる。&lt;br /&gt;
&lt;br /&gt;
正規表現 $\alpha^{(l)}_{ij}$ （ただし、$1\leq i, j \leq n$, $0\leq l \leq n$）を次のように帰納的に定める。&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\alpha^{(0)}_{ij}&amp;amp;=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
\emptyset, &amp;amp; \text{if Q_{ij}=\emptyset}, \\&lt;br /&gt;
\sum_{a\in Q_{ij}}a, &amp;amp; \text{if Q_{ij}\neq \emptyset, i\neq j}; \\&lt;br /&gt;
\kleenecl{\left(\sum_{a\in Q_{ij}}a\right)}, &amp;amp; \text{if Q_{ij}\neq \emptyset, i=j}; &lt;br /&gt;
\end{cases}\\&lt;br /&gt;
\alpha^{(l)}_{ij}&amp;amp;=\alpha^{(l-1)}_{ij} + \alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}, \quad \text{（ただし、1\leq l）}.&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
$w\in \interpret{\alpha^{(l)}_{ij}}$ であるとき、&lt;br /&gt;
記号列 $w$ による $q_{i}$ から $q_{j}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{0}}, q_{k_{1}}, \ldots, q_{k_{p}} \]&lt;br /&gt;
（ただし、$k_{0}=i$, $k_{p}=j$, $1\leq q\leq p-1$ のとき $1\leq k_{q} \leq l$）が存在することを $l$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$l=0$ については明らか。&lt;br /&gt;
&lt;br /&gt;
$l&amp;gt;0$ のとき、$w\in \interpret{\alpha^{(l)}_{ij}}$ であるとすると、&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{ij}}$ または&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}}$ である。&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{ij}}$ のときは帰納法の仮定より明らか。&lt;br /&gt;
&lt;br /&gt;
$w\in \interpret{ \alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}}$ とする。すると&lt;br /&gt;
$w_{1}\in \interpret{\alpha^{(l-1)}_{il}}$,&lt;br /&gt;
$w_{2}\in \interpret{\alpha^{(l-1)}_{ll}}$,&lt;br /&gt;
$w_{3}\in \interpret{\alpha^{(l-1)}_{lj}}$,&lt;br /&gt;
$w=w_{1}(w_{2})^{s}w_{3}$ （ただし、$s\in \mathnat$） を満たす記号列 $w_{1}$, $w_{2}$, $w_{3}$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から、&lt;br /&gt;
記号列 $w_{t}$ （$t=1, 2, 3$）による$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{t0}}, q_{k_{t1}}, \ldots, q_{k_{tp}} \]&lt;br /&gt;
（ただし、$k_{10}=i$, $k_{1p}=k_{20}=k_{2p}=k_{30}=l$, $k_{3p}=j$, $1\leq q\leq p-1$ のとき $1\leq k_{q} \leq l-1$）が存在する。&lt;br /&gt;
すると、&lt;br /&gt;
記号列 $w$ による $q_{i}$ から $q_{j}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{10}}, q_{k_{11}}, \ldots, q_{k_{1p}}, \overbrace{q_{k_{21}}, \ldots, q_{k_{2p}}}^{s}, q_{k_{31}}, \ldots, q_{k_{3p}} \]&lt;br /&gt;
が存在することがわかる。&lt;br /&gt;
&lt;br /&gt;
以上のことに注意すると、&lt;br /&gt;
\[ \alpha^{(n)}_{1F_{0}}+\alpha^{(n)}_{1F_{1}}+ \cdots + \alpha^{(n)}_{1F_{m}}\]&lt;br /&gt;
は $\mathautomaton{A}$ が受理する記号列全体である。&lt;br /&gt;
 &lt;br /&gt;
以上より(3. $\Rightarrow$ 2.)は示された。&lt;br /&gt;
{{end  |proof }}&lt;br /&gt;
&lt;br /&gt;
== Myhill-Nerodeの定理  ==&lt;br /&gt;
この節ではMyhill-Nerodeの定理について述べる．&lt;br /&gt;
この定理は正規言語の[[形式言語#def-quotient |左商]]による定式化とみなせる．&lt;br /&gt;
&lt;br /&gt;
{{theorem | type=theorem | name=Myhill-Nerodeの定理 | label=thm-Myhill-Nerode }}&lt;br /&gt;
$\Sigma$ 上の形式言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $\inverse{\kleenecl{\Sigma}}L$ は有限集合。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  正規言語と左線形文法 ==&lt;br /&gt;
この節では正規言語と左線形文法との関係を述べる。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=definition |name=左線形文法 |label=def-left_linear_grammar }}&lt;br /&gt;
'''左線形文法（left linear grammar）'''とは&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# $\Sigma$ と互いに素な'''変数記号（variable）'''の有限集合 $V$&lt;br /&gt;
# '''生成規則（production rule）'''と呼ばれる有限集合 $R \subseteq V \times V\kleenecl{(\Sigma)}\cup \kleenecl{(\Sigma)}$&lt;br /&gt;
# '''開始記号(start symbol)'''または'''初期記号'''と呼ばれる $S\in V$&lt;br /&gt;
&lt;br /&gt;
の４つ組$(V, \Sigma, R, S)$である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
これは、[[句構造言語#def-phrase_structure_grammar | 句構造文法]]の一種である。また、[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]の一種である。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=thm-left_linear_grammar }}&lt;br /&gt;
言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $L$ を生成する左線形文法が存在する。&lt;br /&gt;
&lt;br /&gt;
==  正規言語ではない形式言語の例  ==&lt;br /&gt;
この節では正規言語ではない[[形式言語]]の例を紹介する。&lt;br /&gt;
&lt;br /&gt;
そのような例が存在すること自体は右線形文法が[[集合の濃度#具体的な濃度 | 高々可算個]]しかないことと[[形式言語]]の濃度が[[集合の濃度#具体的な濃度 | 非加算]]であることに注意すると、明らかである。&lt;br /&gt;
しかし、その具体例を構成し、正規言語ではないことを示すことはそれほど簡単ではない。このとき強力な武器となるのが[[有限オートマトン#pumping_lemma | 反復補題]]である。&lt;br /&gt;
&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]] については当該項目を参照せよ。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0^{n}1^{n}$ という形をした記号列全体 |label=ex-counter_example_reg_lang_n }}&lt;br /&gt;
$0^{n}1^{n}$ （ただし、$n\in\mathnat$）という形の記号列全体は正規言語ではない。しかしながら[[文脈自由言語]]ではある．この記号列全体を生成する[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]は[[文脈自由言語#ex-counter_example_reg_lang_n | この例]]を参照せよ．&lt;br /&gt;
&lt;br /&gt;
'''$0^{n}1^{n}$ という形の記号列全体が正規言語ではないことの証明'''&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
背理法により示す。&lt;br /&gt;
&lt;br /&gt;
$0^{n}1^{n}$ という形の記号列全体 $L$ が正規言語であると仮定する。&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }}より、$L=L(\mathautomaton{A})$ を満たす&lt;br /&gt;
有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n_{0}=|Q|$ とする。仮定より&lt;br /&gt;
$\mathautomaton{A}$ は $w=0^{n_{0}}1^{n_{0}}$ を受理する。&lt;br /&gt;
すると$\left|w\right|&amp;gt;n_{0}$ であるから&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]] より&lt;br /&gt;
次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w=xyz$。&lt;br /&gt;
# $\left|y\right|&amp;gt;0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は&lt;br /&gt;
$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n_{0}$。&lt;br /&gt;
&lt;br /&gt;
このとき、 $xy=0^{k}$ （ただし、$0\lt k\leq n_{0}$）&lt;br /&gt;
であることに注意する。&lt;br /&gt;
すると、 $x=0^{k_{0}}$, $y=0^{k_{1}}$&lt;br /&gt;
（ただし、$0\leq k_{0}\leq k$, $0\lt k_{1}\leq k$,&lt;br /&gt;
$k=k_{0}+k_{1}$）&lt;br /&gt;
を満たす自然数 $k_{0}$, $k_{1}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
さて、$\mathautomaton{A}$ は&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]]の条件から、&lt;br /&gt;
記号列 $xz$ を受理するはずである。&lt;br /&gt;
しかし、$xz=0^{n_{0}-k_{1}}b^{n_{0}}$, $n_{0}-k_{1}\lt n_{0}$&lt;br /&gt;
であるから $xz\notin L$ である。&lt;br /&gt;
これは $L=L(\mathautomaton{A})$ に矛盾する。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$w\mirrorim{w}$ という形をした記号列全体 |label=ex-counter_example_reg_lang_mirror }}&lt;br /&gt;
$w\mirrorim{w}$（ただし、$n\in\mathnat$）という形の記号列全体は正規言語ではない。しかしながら[[文脈自由言語]]ではある．この記号列全体を生成する[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]は[[文脈自由言語#ex-counter_example_reg_lang_mirror | この例]]を参照せよ．&lt;br /&gt;
'''$w\mirrorim{w}$ という形の記号列全体が正規言語ではないことの証明'''&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
背理法により示す。&lt;br /&gt;
&lt;br /&gt;
$w\mirrorim{w}$ という形の記号列全体 $L$ が正規言語であると仮定する。&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }}より、&lt;br /&gt;
$L=L(\mathautomaton{A})$ を満たす&lt;br /&gt;
有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n_{0}=|Q|$ とする。以下 $w_{0}=0^{n_{0}}1$ とする。&lt;br /&gt;
仮定より $\mathautomaton{A}$ は $w_{0}\mirrorim{w_{0}}$ を受理する。&lt;br /&gt;
すると $\left|w_{0}\mirrorim{w_{0}}\right|&amp;gt;n_{0}$ であるから&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題 ]] より&lt;br /&gt;
次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w_{0}\mirrorim{w_{0}}=xyz$。&lt;br /&gt;
# $\left|y\right|&amp;gt;0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は&lt;br /&gt;
$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n_{0}$。&lt;br /&gt;
&lt;br /&gt;
このとき、 $xy=0^{k}$ （ただし、$0\lt k\leq n_{0}$）&lt;br /&gt;
であることに注意する。&lt;br /&gt;
すると、 $x=0^{k_{0}}$, $y=0^{k_{1}}$&lt;br /&gt;
（ただし、$0\leq k_{0}\leq k$, $0\lt k_{1}\leq k$,&lt;br /&gt;
$k=k_{0}+k_{1}$）&lt;br /&gt;
を満たす自然数 $k_{0}$, $k_{1}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
さて、$\mathautomaton{A}$ は&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題 ]] の条件から、&lt;br /&gt;
記号列 $xz$ を受理するはずである。&lt;br /&gt;
しかし、$xz=0^{n_{0}-k_{1}}1\mirrorim{w_{0}}=0^{n_{0}-k_{1}}110^{n_{0}}$, $n_{0}-k_{1}\lt n_{0}$&lt;br /&gt;
であるから $xz\notin L$ である。&lt;br /&gt;
これは $L=L(\mathautomaton{A})$ に矛盾する。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
==  参考文献 ==&lt;br /&gt;
# 新屋 良磨、オートマトン理論再考、コンピュータ ソフトウェア、2017、34 巻、3 号、p. 3_3-3_35、公開日 2017/09/25、Print ISSN 0289-6540、https://doi.org/10.11309/jssst.34.3_3、https://www.jstage.jst.go.jp/article/jssst/34/3/34_3_3/_article/-char/ja&lt;br /&gt;
# 五十嵐喜英他、『[[数理情報科学シリーズ ２４ オートマトンと形式言語の基礎]]』、牧野書店、2011&lt;br /&gt;
&lt;br /&gt;
== 関連項目 ==&lt;br /&gt;
* [[形式言語]]&lt;br /&gt;
* [[正規表現]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
|+ Chomsky階層&lt;br /&gt;
! 文法のタイプ&lt;br /&gt;
! 言語のクラス&lt;br /&gt;
! 計算モデル&lt;br /&gt;
|-&lt;br /&gt;
! タイプ0&lt;br /&gt;
| [[句構造言語]]&lt;br /&gt;
| [[Turingマシン]]&lt;br /&gt;
|-&lt;br /&gt;
! タイプ1&lt;br /&gt;
| [[文脈依存言語]]&lt;br /&gt;
| [[線形有界オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ2&lt;br /&gt;
| [[文脈自由言語]]&lt;br /&gt;
| [[プッシュダウン・オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ3&lt;br /&gt;
| [[正規言語]]&lt;br /&gt;
| [[有限オートマトン]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E5%BD%A2%E5%BC%8F%E8%A8%80%E8%AA%9E&amp;diff=7281</id>
		<title>形式言語</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E5%BD%A2%E5%BC%8F%E8%A8%80%E8%AA%9E&amp;diff=7281"/>
		<updated>2021-06-24T08:32:16Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: Add label=def-quotient&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{TOC |align=right |noautonum=1 }}&amp;lt;!-- 右寄せ連番無し目次をここに表示 --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Category:形式言語理論|ケイシキゲンゴ]]&lt;br /&gt;
{{begin |preamble}}&lt;br /&gt;
&amp;lt;!-- 参考文献 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 定理環境 --&amp;gt;&lt;br /&gt;
{{newtheorem |type=theorem |display=定理}}&lt;br /&gt;
{{newtheorem |type=lemma |display=補題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=definition |display=定義 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=prop |display=命題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=example |display=例 |family=theorem }}&lt;br /&gt;
&amp;lt;!-- MathJax commands --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\newcommand{\mathsetextension}[1]{%&lt;br /&gt;
\left\{ #1 \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathsetintension}[2]{%&lt;br /&gt;
\left\{ #1 \left| #2 \right.\right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathof}[2]{%&lt;br /&gt;
\mathop{#1}\left(#2\right)%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathderiv}{\mathrel{\mathop{\Rightarrow}}^{*}}&lt;br /&gt;
\newcommand{\mathgen}{\rightsquigarrow}&lt;br /&gt;
\newcommand{\mathgenfun}[1]{\mathbf{#1}}&lt;br /&gt;
\newcommand{\mirrorim}[1]{\overleftarrow{#1}}&lt;br /&gt;
\newcommand{\emptyword}{\varepsilon}&lt;br /&gt;
\newcommand{\kleenecl}[1]{{#1}^{*}}&lt;br /&gt;
\newcommand{\interpret}[1]{[\![#1]\!]}&lt;br /&gt;
\newcommand{\mathautomaton}[1]{\mathcal{#1}}&lt;br /&gt;
\newcommand{\mathnat}{\mathbb{N}}&lt;br /&gt;
\newcommand{\qed}{\blacksquare}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
{{end |preamble}}&lt;br /&gt;
'''形式言語（formal language）'''とは有限な記号列の集合である。&lt;br /&gt;
&lt;br /&gt;
==  形式言語の導入 ==&lt;br /&gt;
この節においては、形式言語の定義を行う。&lt;br /&gt;
{{theorem |type=definition |name=記号列}}&lt;br /&gt;
'''記号集合（alphabet）'''とは'''記号（letter）'''の空でない集合である。&lt;br /&gt;
通常、形式言語を考える際は記号集合に有限性を課すことが多い。&lt;br /&gt;
本稿においても記号集合は特に断らない限り有限であるとする。&lt;br /&gt;
&lt;br /&gt;
記号集合 $\Sigma$ の元を有限個並べたものを'''語（word）'''や'''有限記号列（finite string）'''、&lt;br /&gt;
また単に'''記号列（string）'''などという。&lt;br /&gt;
以下では記号列で統一する。&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ の'''長さ（length）'''とは記号列を構成する&lt;br /&gt;
記号の個数である。&lt;br /&gt;
$w$ の長さを $\left|w\right|$ とあらわす。&lt;br /&gt;
&lt;br /&gt;
長さ $0$ の記号列を'''空列（empty string または empty word）'''という。&lt;br /&gt;
以下 $\emptyword$ によって空列を表す。&lt;br /&gt;
&lt;br /&gt;
{{id |id=id_concatenation}}&lt;br /&gt;
{{theorem |type=definition |name=連接}}&lt;br /&gt;
記号列 $a_{1}\dots a_{n}$ と $b_{1}\dots b_{m}$ の'''連接（concatenation）'''とは&lt;br /&gt;
記号列 $a_{1}\dots a_{n}b_{1}\dots b_{m}$ である。&lt;br /&gt;
&lt;br /&gt;
$w_{1}$ と $w_{2}$ が記号列を表すとき、$w_{1}$ と $w_{2}$ の連接を&lt;br /&gt;
$w_{1}\cdot w_{2}$ または単に $w_{1}w_{2}$ で表す。&lt;br /&gt;
&lt;br /&gt;
同じ記号列 $w$ を $n$ 個並べた記号列を $w^{n}$ と表す。形式的には記号列 $w$ と自然数 $n$ に対して、&lt;br /&gt;
# $w^{0}=\emptyword$&lt;br /&gt;
# $w^{n+1}=ww^{n}$&lt;br /&gt;
&lt;br /&gt;
と帰納的に定義する。&lt;br /&gt;
&lt;br /&gt;
同様にして記号列の集合 $L_{1}$, $L_{2}$ についてその連接を&lt;br /&gt;
\[L_{1}L_{2}= \mathsetintension{wv}{w\in L_{1}, v\in L_{2}} \]&lt;br /&gt;
と定義する。&lt;br /&gt;
&lt;br /&gt;
また，記号列の集合 $L$ に対して、$L^{n}$ （$n$ は自然数）を&lt;br /&gt;
# $L^{0}=\mathsetextension{\emptyword}$&lt;br /&gt;
# $L^{n+1}=\mathsetintension{wv}{w\in L, v\in L^{n}}$&lt;br /&gt;
&lt;br /&gt;
と帰納的に定義する。&lt;br /&gt;
&lt;br /&gt;
{{id |id=id_kleeneclosure}}&lt;br /&gt;
{{theorem |type=definition |name=Kleene閉包}}&lt;br /&gt;
記号列の集合 $L$ の'''Kleene閉包（Kleene closure）''' $\kleenecl{L}$ は&lt;br /&gt;
\[ \kleenecl{L} = \bigcup_{n=0}^{\infty} L^{n} \]&lt;br /&gt;
と定義される。&lt;br /&gt;
&lt;br /&gt;
記号集合 $\Sigma$ のKleene閉包 $\kleenecl{\Sigma}$ は、&lt;br /&gt;
$\Sigma$ の元を長さ $1$ の記号列とみなすことで自然に定義される。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=形式言語}}&lt;br /&gt;
記号集合 $\Sigma$ 上の'''形式言語（formal language）'''とは&lt;br /&gt;
$\kleenecl{\Sigma}$ の部分集合である。&lt;br /&gt;
&lt;br /&gt;
特に誤解のない限り、形式言語のことを単に'''言語（language）'''と呼ぶこともある。&lt;br /&gt;
&lt;br /&gt;
==  形式言語を扱う上でよく使われる演算など  ==&lt;br /&gt;
この節においては形式言語を考える際によく使われる演算などの定義・解説を行う。&lt;br /&gt;
以下では，特に断りのない限り記号集合 $\Sigma$ を固定する。&lt;br /&gt;
===  連接 ===&lt;br /&gt;
'''連接'''について述べる。&lt;br /&gt;
{{theorem |type=definition |name=連接}}&lt;br /&gt;
上記の[[#id_concatenation|連接の節]]を参照。&lt;br /&gt;
{{theorem |type=example |name=連接}}&lt;br /&gt;
* 記号列''math''と記号列''pedia''の連接は''mathpedia''である。&lt;br /&gt;
* 記号列''no''と記号列''where''の連接は''nowhere''である。&lt;br /&gt;
* 記号列''counter''と記号列''example''の連接は''counterexample''である。&lt;br /&gt;
* 記号列''ultra''と記号列''seven''の連接は''ultraseven''である。&lt;br /&gt;
* 記号列''bicycle''と記号列''repairman''の連接は''bicyclerepairman''である。&lt;br /&gt;
* 記号列 $\emptyword$ と記号列 $\emptyword$ の連接は $\emptyword$ である。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |name=連接の性質}}&lt;br /&gt;
* 任意の記号列 $w$ に対して、$w\emptyword=\emptyword w=w$ である。 &lt;br /&gt;
&lt;br /&gt;
====  連接とモノイド ====&lt;br /&gt;
* 連接 $\cdot$ を $\kleenecl{\Sigma}$ 上の演算とみなすことで、$(\kleenecl{\Sigma}, \cdot)$&lt;br /&gt;
は[[モノイド]]になる。単位元は $\emptyword$ である。&lt;br /&gt;
** 特に $(\kleenecl{\Sigma}, \cdot)$ を '''$\Sigma$ が生成する自由モノイド'''という。&lt;br /&gt;
&lt;br /&gt;
===  接頭語と接尾語 ===&lt;br /&gt;
形式言語の'''接頭語'''と'''接尾語'''について述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=接頭語、接尾語}}&lt;br /&gt;
$w=a_{0}\ldots a_{n}$ を記号列とする&lt;br /&gt;
（ただし、すべての $i$ に対して $a_{i}$ は記号であって、$a_{i}\neq \emptyword$ とする）。&lt;br /&gt;
&lt;br /&gt;
$w_{p}=a_{0}\ldots a_{n_{0}}$ （ただし、$0\leq n_{0}\leq n$）であるとき、&lt;br /&gt;
$w_{p}$ を $w$ の'''接頭語（prefix）'''と言う。&lt;br /&gt;
$w$ の接頭語 $w_{p}$ が $|w_{p}|&amp;lt;|w|$ を満たすとき、$w_{p}$ を'''真の接頭語（proper prefix）'''と言う。&lt;br /&gt;
&lt;br /&gt;
$w_{s}=a_{n_{0}}\ldots a_{n}$ （ただし、$0\leq n_{0}\leq n$）であるとき、&lt;br /&gt;
$w_{s}$ を $w$ の'''接尾語（suffix）'''と言う。&lt;br /&gt;
$w$ の接尾語 $w_{s}$ が $|w_{s}|&amp;lt;|w|$ を満たすとき、$w_{s}$ を'''真の接尾語（proper suffix）'''と言う。&lt;br /&gt;
&lt;br /&gt;
===  鏡像  ===&lt;br /&gt;
'''鏡像'''について述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=鏡像}}&lt;br /&gt;
$\kleenecl{\Sigma}$ の元 $w$ の&lt;br /&gt;
'''鏡像（mirror image）''' $\mirrorim{w}$ を次のように帰納的に定義する。&lt;br /&gt;
&lt;br /&gt;
# $w=\emptyword$ のとき、$\mirrorim{w}=\emptyword$ である。&lt;br /&gt;
# $w=av$ のとき、$\mirrorim{w}=\mirrorim{v}a$ である。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=鏡像}}&lt;br /&gt;
* 記号列''mathpedia''の鏡像は''aidephtam''である。&lt;br /&gt;
* 記号列''tomato''の鏡像は''otamot''である。&lt;br /&gt;
* 記号列''dog''の鏡像は''god''である。&lt;br /&gt;
* 記号列''top''の鏡像は''pot''である。&lt;br /&gt;
* 記号列''lol''の鏡像は''lol''である。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |name=鏡像の性質}}&lt;br /&gt;
* $\mirrorim{\mirrorim{w}}=w$&lt;br /&gt;
&lt;br /&gt;
===  商 ===&lt;br /&gt;
形式言語の'''商'''について述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem | type=definition | name=商 | label=def-quotient}}&lt;br /&gt;
$\Sigma$ 上の形式言語 $L$、文字列 $w \in \kleenecl{\Sigma}$ に対して&lt;br /&gt;
$L$ の $w$ による'''左商（left quotient）'''を&lt;br /&gt;
\[w^{-1}L:= \mathsetintension{v \in \kleenecl{\Sigma}}{wv \in L} \]&lt;br /&gt;
と定める。&lt;br /&gt;
&lt;br /&gt;
また、$L$ の $w$ による'''右商（right quotient）'''を&lt;br /&gt;
\[Lw^{-1}:=\mathsetintension{v \in \kleenecl{\Sigma}}{vw \in L} \]&lt;br /&gt;
と定める。&lt;br /&gt;
&lt;br /&gt;
形式言語 $L$ の左商全体の集合を ${\kleenecl{\Sigma}}^{-1}L$ 右商全体の集合を $L{\Sigma^{*}}^{-1}$ で表す。つまり、&lt;br /&gt;
\begin{align*}%&lt;br /&gt;
{\kleenecl{\Sigma}}^{-1}L &amp;amp;:= \mathsetintension{w^{-1}L}{w \in \kleenecl{\Sigma}} \\&lt;br /&gt;
L{\kleenecl{\Sigma}}^{-1} &amp;amp;:= \mathsetintension{Lw^{-1}}{w \in \kleenecl{\Sigma}}&lt;br /&gt;
\end{align*}&lt;br /&gt;
である。&lt;br /&gt;
&lt;br /&gt;
===  （言語の）数え上げ関数と母関数 ===&lt;br /&gt;
形式言語の'''数え上げ関数'''と'''母関数'''について述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=数え上げ関数}}&lt;br /&gt;
形式言語 $L$ の'''数え上げ関数（counting function）''' $\Gamma_{L}:{\mathnat\to\mathnat}$ とは&lt;br /&gt;
\[\Gamma_{L}(n)=\mathof{\#}{\mathsetintension{w\in L}{|w|=n}}\]&lt;br /&gt;
で定義される関数である（ただし、$\#$ は有限集合を受け取りそこに所属する元の個数を返す関数）。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=母関数}}&lt;br /&gt;
形式言語 $L$ の'''母関数（generating function）'''とは形式的べき級数&lt;br /&gt;
\[\mathof{\mathgenfun{L}}{z}:=\sum_{n\geq 0} \mathof{\Gamma_{L}}{n}z^{n}\]&lt;br /&gt;
のことである（ただし、$\Gamma_{L}$ は $L$ の数え上げ関数）。&lt;br /&gt;
&lt;br /&gt;
==  参考文献 ==&lt;br /&gt;
# 新屋 良磨、オートマトン理論再考、コンピュータ ソフトウェア、2017、34 巻、3 号、p. 3_3-3_35、公開日 2017/09/25、Print ISSN 0289-6540、https://doi.org/10.11309/jssst.34.3_3、https://www.jstage.jst.go.jp/article/jssst/34/3/34_3_3/_article/-char/ja&lt;br /&gt;
# 五十嵐喜英他、『[https://www.amazon.co.jp/gp/product/4434158783/infinitytopoi-22  数理情報科学シリーズ ２４ オートマトンと形式言語の基礎]』、牧野書店、2011&lt;br /&gt;
&lt;br /&gt;
==  関連項目 ==&lt;br /&gt;
* 主要な[[形式言語]]のクラス&lt;br /&gt;
** [[正規言語]]&lt;br /&gt;
*** [[正規表現]]&lt;br /&gt;
** [[文脈自由言語]]&lt;br /&gt;
*** [[BNF記法]]&lt;br /&gt;
** [[文脈依存言語]]&lt;br /&gt;
** [[句構造言語]]&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E6%AD%A3%E8%A6%8F%E8%A8%80%E8%AA%9E&amp;diff=7280</id>
		<title>正規言語</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E6%AD%A3%E8%A6%8F%E8%A8%80%E8%AA%9E&amp;diff=7280"/>
		<updated>2021-06-24T08:10:20Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: Move a section&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{TOC |align=right |noautonum=1 }}&amp;lt;!-- 右寄せ連番無し目次をここに表示 --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Category:形式言語理論|セイキゲンゴ]]&lt;br /&gt;
{{begin |preamble}}&lt;br /&gt;
&amp;lt;!-- 参考文献 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 定理環境 --&amp;gt;&lt;br /&gt;
{{newtheorem |type=theorem |display=定理}}&lt;br /&gt;
{{newtheorem |type=lemma |display=補題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=definition |display=定義 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=prop |display=命題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=example |display=例 |family=theorem }}&lt;br /&gt;
&amp;lt;!-- MathJax commands --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\newcommand{\mathsetextension}[1]{%&lt;br /&gt;
\left\{ #1 \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathsetintension}[2]{%&lt;br /&gt;
\left\{ #1 \left| #2 \right.\right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathof}[2]{%&lt;br /&gt;
\mathop{#1}\left(#2\right)%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathderiv}{\mathrel{\mathop{\Rightarrow}^{*}}}&lt;br /&gt;
\newcommand{\mathgen}{\rightsquigarrow}&lt;br /&gt;
\newcommand{\mathgenfun}[1]{\mathbf{#1}}&lt;br /&gt;
\newcommand{\mirrorim}[1]{\overleftarrow{#1}}&lt;br /&gt;
\newcommand{\emptyword}{\varepsilon}&lt;br /&gt;
\newcommand{\kleenecl}[1]{{#1}^{*}}&lt;br /&gt;
\newcommand{\interpret}[1]{[\![#1]\!]}&lt;br /&gt;
\newcommand{\mathautomaton}[1]{\mathcal{#1}}&lt;br /&gt;
\newcommand{\mathnat}{\mathbb{N}}&lt;br /&gt;
\newcommand{\qed}{\blacksquare}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
{{end |preamble}}&lt;br /&gt;
'''正規言語（regular language）'''とは右線形文法(right linear grammar)または左線形文法(left linear grammar)によって定められる形式言語である。&lt;br /&gt;
&lt;br /&gt;
右線形文法は句構造文法の一種であるから、&lt;br /&gt;
右線形言語は[[句構造言語]]の一種である。&lt;br /&gt;
&lt;br /&gt;
また、右線形文法は文脈自由文法の一種であるから、&lt;br /&gt;
右線形言語は[[文脈自由言語]]の一種である。&lt;br /&gt;
&lt;br /&gt;
以下、項目[[形式言語]]、[[句構造言語]]において定められている言語上の演算や文法の等価性の定義などについては特に断らず用いる。&lt;br /&gt;
&lt;br /&gt;
==  正規言語の導入 ==&lt;br /&gt;
この節では'''正規言語'''を定義する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=definition |name=右線形文法 |label=def-right_linear_grammar }}&lt;br /&gt;
'''右線形文法（right linear grammar）'''とは&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# $\Sigma$ と互いに素な'''変数記号（variable）'''の空でない有限集合 $V$&lt;br /&gt;
# '''生成規則（production rule）'''と呼ばれる有限集合 $R \subseteq V \times (\kleenecl{\Sigma}V)\cup (\kleenecl{\Sigma})$&lt;br /&gt;
# '''開始記号(start symbol)'''または'''初期記号'''と呼ばれる $S\in V$&lt;br /&gt;
&lt;br /&gt;
の４つ組$(V, \Sigma, R, S)$である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
これは、[[句構造言語#def-phrase_structure_grammar | 句構造文法]]の一種である。また、[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]の一種である。&lt;br /&gt;
&lt;br /&gt;
[[句構造言語]]のときと同様、$\Sigma$ の元を'''終端記号(terminal)'''、$V$ の元を'''非終端記号(non-terminal)'''と呼ぶことも多い。&lt;br /&gt;
&lt;br /&gt;
以下では、元$(A, \alpha)\in R$ のことを$A\mathgen\alpha$と書く。&lt;br /&gt;
&lt;br /&gt;
[[句構造言語#def-derivation | 導出]]、[[句構造言語#def-phrase_structure_lang | 生成される言語]]などは&lt;br /&gt;
句構造言語と同様に定義される。&lt;br /&gt;
&lt;br /&gt;
'''正規言語'''とは何らかの右線形文法によって生成される言語のことを言う。&lt;br /&gt;
&lt;br /&gt;
==  正規言語の例 ==&lt;br /&gt;
この節では正規言語の例を紹介する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列全体 |label=ex-all_lang }}&lt;br /&gt;
$V=\left\{ S \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen\emptyword, S\mathgen 0S, S\mathgen 1S \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
$0$ と $1$ からなる有限記号列全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、$0$ と $1$ からなる有限記号列全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる。&lt;br /&gt;
&lt;br /&gt;
\begin{gather*}&lt;br /&gt;
S \Rightarrow \emptyword \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 0\emptyword = 0 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 1\emptyword = 1 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 00\emptyword = 00 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 01\emptyword = 01 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 10\emptyword = 10 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 11\emptyword = 11 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 000S \Rightarrow 000\emptyword = 000 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 001S \Rightarrow 001\emptyword = 001 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 010S \Rightarrow 010\emptyword = 010 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 011S \Rightarrow 011\emptyword = 011 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 100S \Rightarrow 100\emptyword = 100 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 101S \Rightarrow 101\emptyword = 101 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 110S \Rightarrow 110\emptyword = 110 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 111S \Rightarrow 111\emptyword = 111&lt;br /&gt;
\end{gather*}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体 |label=ex-only_three_one_lang }}&lt;br /&gt;
$V=\left\{ S, A_{1}, A_{2}, A_{3} \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen 0S, S\mathgen 1A_{1}, A_{1}\mathgen 0A_{1}, A_{1}\mathgen 1A_{2}, A_{2}\mathgen 0A_{2}, A_{2}\mathgen 1A_{3}, A_{3}\mathgen 0A_{3}, A_{3}\mathgen \emptyword \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
S &amp;amp;\Rightarrow 1A_{1} \Rightarrow 11A_{2} \Rightarrow 111A_{3} \Rightarrow 111\emptyword = 111 \\&lt;br /&gt;
S &amp;amp;\Rightarrow 0S \\&lt;br /&gt;
&amp;amp;\Rightarrow 01A_{1} \Rightarrow 010A_{1} \Rightarrow 0100A_{1} \\&lt;br /&gt;
&amp;amp;\Rightarrow 01001A_{2} \Rightarrow 010010A_{2} \Rightarrow 0100100A_{2} \Rightarrow 01001000A_{2} \\&lt;br /&gt;
&amp;amp;\Rightarrow 010010001A_{3} \Rightarrow 0100100010A_{3} \Rightarrow 01001000100A_{3} \Rightarrow 010010001000A_{3} \Rightarrow 0100100010000A_{3} \Rightarrow 0100100010000\emptyword =0100100010000&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=自然数の二進表現全体 |label=ex-bi_lang }}&lt;br /&gt;
$V=\left\{ S, A_{1} \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen 0, S\mathgen 1A_{1}, A_{1}\mathgen 0A_{1}, A_{1}\mathgen 1A_{1}, A_{1}\mathgen \emptyword \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
自然数の二進表現全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、自然数の二進表現全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる&lt;br /&gt;
&lt;br /&gt;
\begin{gather*}&lt;br /&gt;
S \Rightarrow 0 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 1\emptyword = 1 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 10\emptyword = 10 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 11\emptyword = 11 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 100\emptyword = 100 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 101\emptyword = 101 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 100\emptyword = 110 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 111\emptyword = 111 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 1000A_{1} \Rightarrow 1000\emptyword = 1000 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 1001A_{1} \Rightarrow 1001\emptyword = 1001 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 1010A_{1} \Rightarrow 1010\emptyword = 1010 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 1011A_{1} \Rightarrow 1011\emptyword = 1011 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 1100A_{1} \Rightarrow 1100\emptyword = 1100 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 1101A_{1} \Rightarrow 1101\emptyword = 1101 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 1110A_{1} \Rightarrow 1110\emptyword = 1110 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 1111A_{1} \Rightarrow 1111\emptyword = 1111&lt;br /&gt;
\end{gather*}&lt;br /&gt;
&lt;br /&gt;
==  正規表現、有限オートマトンとの関係 ==&lt;br /&gt;
この節では正規言語、[[正規表現]]および[[有限オートマトン]]との関係を述べる。以下では[[正規表現]]と[[有限オートマトン]]の定義などは既知とする。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=theorem |label=thm-regularandNFA }}&lt;br /&gt;
言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $L=\interpret{\alpha}$ なる正規表現 $\alpha$ が存在する。&lt;br /&gt;
# $L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
この節ではこの定理を証明する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=lemma |label=lemma-of-thm-regularandNFA }}&lt;br /&gt;
正規言語 $G=(V, \Sigma, R, S)$ に対して、&lt;br /&gt;
$G$ と[[句構造言語#句構造文法の等価性 | 等価 ]]であって、&lt;br /&gt;
すべての生成規則の右辺が&lt;br /&gt;
$(\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
の元である右線形文法が存在する。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
正規言語 $G=(V, \Sigma, R, S)$ について、&lt;br /&gt;
$R=\{A_{0}\mathgen \alpha_{0}, \ldots, A_{n}\mathgen \alpha_{n}\}$ （ただし $n\in\mathnat$）&lt;br /&gt;
とする。&lt;br /&gt;
&lt;br /&gt;
$G_{i}=(V_{i}, \Sigma, R_{i}, S)$&lt;br /&gt;
（ただし $n=0, \ldots, n+1$）&lt;br /&gt;
を次のように定義する。&lt;br /&gt;
&lt;br /&gt;
* $G_{0}=G$&lt;br /&gt;
* $\alpha_{i}\in (\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
のとき、$G_{i+1}:=G_{i}$ とする。&lt;br /&gt;
* $\alpha_{i}\in \kleenecl{\Sigma} \setminus (\Sigma \cup\{\emptyword\})$ のとき、$\alpha_{i}=a_{0}\ldots a_{m}$ （ただし、$m$ は $1$ 以上の自然数であって、$a_{j}\in \Sigma$ for $j\in \mathnat$）とする。&lt;br /&gt;
** $V_{i+1}:=V_{i}\cup \{B_{0}, \ldots, B_{m}\}$ （ただし、各 $B_{j}$ は $B_{j}\notin V_{i}\cup \Sigma$ を満たす変数記号）。&lt;br /&gt;
** $R_{i+1}:=R_{i}\setminus \{A_{i}\mathgen \alpha_{i}\}\cup \{A_{i} \mathgen a_{0}B_{0}, B_{0} \mathgen a_{1}B_{1}, \ldots, B_{m-1} \mathgen a_{m}B_{m}, B_{m}\mathgen \emptyword\}$。&lt;br /&gt;
* $\alpha_{i}\in \kleenecl{\Sigma}V\setminus (\Sigma \cup\{\emptyword\})V$ のとき、$\alpha_{i}=a_{0}\ldots a_{m} A'_{i}$ （ただし、$m$ は $1$ 以上の自然数であって、$a_{j}\in \Sigma$ for $j\in \mathnat$）とする。&lt;br /&gt;
** $V_{i+1}:=V_{i}\cup \{B_{0}, \ldots, B_{m}\}$ （ただし、各 $B_{j}$ は $B_{j}\notin V_{i}\cup \Sigma$ を満たす変数記号）。&lt;br /&gt;
** $R_{i+1}:=R_{i}\setminus \{A_{i}\mathgen \alpha_{i}\}\cup \{A_{i} \mathgen a_{0}B_{0}, B_{0} \mathgen a_{1}B_{1}, \ldots, B_{m-1} \mathgen a_{m}B_{m}, B_{m}\mathgen A'_{i}\}$。&lt;br /&gt;
&lt;br /&gt;
各 $i$ に対して、 $L(G_{i})=L(G_{i+1})$ に注意すると&lt;br /&gt;
$G_{n+1}$ が求める文法であることがわかる。&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 | display=Proof of {{ref |type=theorem |label=thm-regularandNFA }}. }}&lt;br /&gt;
(2. $\Rightarrow$ 1.)&lt;br /&gt;
$L=\interpret{\alpha}$ なる正規表現 $\alpha$ が存在するとき、&lt;br /&gt;
$L$ を生成する右線形文法が存在することを言えば良い。&lt;br /&gt;
&lt;br /&gt;
正規表現の構成についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
Case 1.&lt;br /&gt;
$L=\interpret{\emptyset}=\emptyset$ のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \emptyset, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 2.&lt;br /&gt;
$L=\interpret{\emptyword}=\{\emptyword\}$ のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \{S \mathgen \emptyword\}, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 3.&lt;br /&gt;
$L=\interpret{a}=\{a\}$ (ただし、$a\in \Sigma$) のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \{S \mathgen a\}, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 4.&lt;br /&gt;
$L=\interpret{\alpha\beta}=\interpret{\alpha}\cdot\interpret{\beta}$&lt;br /&gt;
（ただし、$\alpha$, $\beta$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$, $\interpret{\beta}$&lt;br /&gt;
を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$\interpret{\alpha}$ を生成する右線形文法を&lt;br /&gt;
$G=(V_{\alpha}, \Sigma, R_{\alpha}, S_{\alpha})$、&lt;br /&gt;
$\interpret{\beta}$ を生成する右線形文法を&lt;br /&gt;
$G=(V_{\beta}, \Sigma, R_{\beta}, S_{\beta})$ とする。&lt;br /&gt;
このとき、$V_{\alpha}\cap V_{\beta}=\emptyset$ と仮定しても&lt;br /&gt;
一般性を失わない（必要であれば、変数記号を適切に置き換えれば良い）。&lt;br /&gt;
&lt;br /&gt;
さて、&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
R_{\alpha}^{(V)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R_{\alpha}}{\gamma \in \kleenecl{\Sigma}V}  \\&lt;br /&gt;
R_{\alpha}^{(0)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R_{\alpha}}{\gamma \in \kleenecl{\Sigma}}  &lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$R_{\alpha}=R_{\alpha}^{(V)}\cup R_{\alpha}^{(0)}$,&lt;br /&gt;
$R_{\alpha}^{(V)}\cap R_{\alpha}^{(0)}=\emptyset$ である。&lt;br /&gt;
\[R_{\alpha}^{(S_{\beta})}:=\mathsetintension{A\mathgen \gamma S_{\beta}}{A\mathgen \gamma \in R_{\alpha}, \gamma \in \kleenecl{\Sigma}}\]&lt;br /&gt;
とすると、&lt;br /&gt;
$G=(V_{\alpha}\cup V_{\beta}, \Sigma, R_{\alpha}^{V}\cup R_{\alpha}^{(S_{\beta})}\cup R_{\beta}, S_{\alpha})$&lt;br /&gt;
は$\interpret{\alpha}\cdot\interpret{\beta}$ を生成する右線形文法である。&lt;br /&gt;
&lt;br /&gt;
Case 5.&lt;br /&gt;
$L=\interpret{\alpha +\beta}=\interpret{\alpha}\cup \interpret{\beta}$&lt;br /&gt;
（ただし、$\alpha$, $\beta$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$, $\interpret{\beta}$&lt;br /&gt;
を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$\interpret{\alpha}$ を生成する右線形文法を&lt;br /&gt;
$G=(V_{\alpha}, \Sigma, R_{\alpha}, S_{\alpha})$、&lt;br /&gt;
$\interpret{\beta}$ を生成する右線形文法を&lt;br /&gt;
$G=(V_{\beta}, \Sigma, R_{\beta}, S_{\beta})$ とおく&lt;br /&gt;
（ただし、$V_{\alpha}\cap V_{\beta}=\emptyset$ とする）。&lt;br /&gt;
&lt;br /&gt;
このとき、右線形文法&lt;br /&gt;
$G=(V_{\alpha}\cup V_{\beta}\cup \{S\}, \Sigma, R_{\alpha}\cup R_{\beta}\cup \{S\mathgen S_{\alpha}, S\mathgen S_{\beta}\}, S)$&lt;br /&gt;
（ただし、$S\notin V_{\alpha}\cup V_{\beta}$）は&lt;br /&gt;
$\interpret{\alpha}\cup \interpret{\beta}$ を生成する。&lt;br /&gt;
&lt;br /&gt;
Case 6.&lt;br /&gt;
$L=\interpret{\kleenecl{\alpha}}=\kleenecl{\interpret{\alpha}}$&lt;br /&gt;
（ただし、$\alpha$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$&lt;br /&gt;
を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$\interpret{\alpha}$ を生成する右線形文法を&lt;br /&gt;
$G=(V, \Sigma, R, S)$ とする。&lt;br /&gt;
&lt;br /&gt;
さて、&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
R^{(V)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R}{\gamma \in \kleenecl{\Sigma}V} \\&lt;br /&gt;
R^{(0)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R}{\gamma \in \kleenecl{\Sigma}}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$R=R^{(V)}\cup R^{(0)}$,&lt;br /&gt;
$R^{(V)}\cap R^{(0)}=\emptyset$ である。&lt;br /&gt;
&lt;br /&gt;
\[R^{(S)}:=\mathsetintension{A\mathgen \gamma S}{A\mathgen \gamma \in R, \gamma \in \kleenecl{\Sigma}}\]&lt;br /&gt;
とすると、右線形文法&lt;br /&gt;
$G=(V, \Sigma, R^{(V)}\cup R^{(S)}\cup \{S\mathgen \emptyword\}, S)$ は&lt;br /&gt;
$\kleenecl{\interpret{\alpha}}$ を生成する。&lt;br /&gt;
&lt;br /&gt;
以上、Case 1-6 より(2. $\Rightarrow$ 1.) は示された。&lt;br /&gt;
&lt;br /&gt;
(1. $\Rightarrow$ 3.)&lt;br /&gt;
$L$ が正規言語であるとき、補題 2から&lt;br /&gt;
すべての生成規則の右辺が&lt;br /&gt;
$(\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
の元である$L$ を生成する右線形文法が存在する。&lt;br /&gt;
この文法を $G=(V, \Sigma, R, S)$ とする。&lt;br /&gt;
&lt;br /&gt;
まず、有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \delta, q_{I}, F)$&lt;br /&gt;
を次のように定義する。&lt;br /&gt;
&lt;br /&gt;
* $Q=V \cup \{f\}$ （ただし、$f\notin V$）&lt;br /&gt;
* $q_{I}=S$&lt;br /&gt;
* $\Delta = \{(A, a, A') | A, A'\in V, a\in \Sigma\cup\{\emptyword\}, A \mathgen aA'\in R \} \cup \{ (A, a, f) | A\in V, a\in \Sigma\cup\{\emptyword\}, A \mathgen a\in R\} \}$&lt;br /&gt;
* $F=\{f\}$&lt;br /&gt;
&lt;br /&gt;
次に、$wA\in \kleenecl{\Sigma}V$&lt;br /&gt;
に対して以下の２条件は同値であることを示す。&lt;br /&gt;
&lt;br /&gt;
(a) $S$ から始まる&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G}\cdots \Rightarrow_{G} \alpha_{n}(=wA)\]&lt;br /&gt;
(ただし、$\alpha_{i}=w_{i}A_{i}$ for $1\leq i\leq n$)&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
&lt;br /&gt;
(b) 記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ A_{0}, A_{1}, \ldots, A_{n}\]&lt;br /&gt;
（ただし、$A_{0}=S$, $A_{n}=A$）が存在する。&lt;br /&gt;
&lt;br /&gt;
(a) $\Rightarrow$ (b) を $n$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$n=1$ のとき、&lt;br /&gt;
$w=a$ なる $a\in\Sigma\cup\{\emptyword\}$が存在し、&lt;br /&gt;
$S\mathgen aA \in R$ であるはずである。&lt;br /&gt;
このとき、$\mathautomaton{A}$ の定義から&lt;br /&gt;
$(S, a, A)\in \Delta$である。&lt;br /&gt;
ゆえに、記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A \]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n&amp;gt;1$ のとき、&lt;br /&gt;
$w=w'a$ （ただし、$a\in \Sigma\cup\{\emptyword\}$）とおく。&lt;br /&gt;
このとき、$G$ の生成規則の形から&lt;br /&gt;
$w_{n-1}=w'$, &lt;br /&gt;
$A_{n-1}\mathgen aA \in R$&lt;br /&gt;
である。&lt;br /&gt;
このとき、帰納法の仮定から&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n-1}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[S, A_{1}, \ldots, A_{n-1} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
$A_{n-1}\mathgen aA \in R$&lt;br /&gt;
であるから、&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$であることに注意すると&lt;br /&gt;
記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{1}, \ldots, A_{n-1}, A \]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
(b) $\Rightarrow$ (a) を $n$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$n=1$ のとき、&lt;br /&gt;
$w=a$ なる $a\in\Sigma\cup\{\emptyword\}$が存在し、&lt;br /&gt;
$(S, a, A)\in \Delta$ のはずである。&lt;br /&gt;
このとき、$\mathautomaton{A}$ の定義から&lt;br /&gt;
$S\mathgen aA \in R$ である。ゆえに&lt;br /&gt;
\[ S \Rightarrow_{G} aA \]&lt;br /&gt;
である。&lt;br /&gt;
&lt;br /&gt;
$n&amp;gt;1$ のとき、&lt;br /&gt;
記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[A_{0}, A_{1}, \ldots, A_{n-1}A_{n} \]&lt;br /&gt;
（ただし、$A_{0}=S$, $A_{n}=A$）が存在すると仮定する。&lt;br /&gt;
すると、&lt;br /&gt;
$w=w'a$,&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$&lt;br /&gt;
を満たす&lt;br /&gt;
$a\in\Sigma\cup\{\emptyword\}$, $w'\in\kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
すると、記号列 $w'$ による $S$ から $A_{n-1}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[A_{0}, A_{1}, \ldots, A_{n-1} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
帰納法の仮定から&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n-1}(=w'A_{n-1})\]&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$ であるから、&lt;br /&gt;
$A_{n-1} \mathgen  aA\in R$ であるので、&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G} \cdots \Rightarrow_{G} w'A_{n-1} \Rightarrow_{G} w'aA(=wA) \]&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
 &lt;br /&gt;
最後に $L=L(\mathautomaton{A})$ を示す。&lt;br /&gt;
&lt;br /&gt;
$w\in L$ を仮定する。&lt;br /&gt;
すると、導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} \Rightarrow_{G} w\]&lt;br /&gt;
が存在する。&lt;br /&gt;
$G$ の生成規則の形から&lt;br /&gt;
$w=w'a$, $\alpha_{n}=w'A_{n}$, $A_{n}\mathgen a \in R$&lt;br /&gt;
を満たす $A_{n}\in V$, $a\in \Sigma\cup\{\emptyword\}$, &lt;br /&gt;
$w'\in \kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
このとき、&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n}$ への $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, A_{1}, \ldots, A_{n} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
$A_{n}\mathgen a \in R$&lt;br /&gt;
であるから、&lt;br /&gt;
$(A_{n}, a, f)\in \Delta$&lt;br /&gt;
に注意すると、&lt;br /&gt;
記号列 $w'a=w$ による $S$ から $f$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, \ldots, A_{n}, f \]&lt;br /&gt;
が存在する。&lt;br /&gt;
ゆえに $w\in L(\mathautomaton{A})$ である。&lt;br /&gt;
&lt;br /&gt;
逆に、$w\in L(\mathautomaton{A})$ とする。&lt;br /&gt;
すると、&lt;br /&gt;
記号列 $w$ による $S$ から $f$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, A_{1}, \ldots, A_{n}, f\]&lt;br /&gt;
が存在する。&lt;br /&gt;
すると、&lt;br /&gt;
$w=w'a$, $(A_{n}, a, f) \in \Delta$&lt;br /&gt;
を満たす $a\in \Sigma\cup\{\emptyword\}$, &lt;br /&gt;
$w'\in \kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
また、&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, \ldots, A_{n} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
よって、導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} (=w'A_{n})\]&lt;br /&gt;
が存在する。&lt;br /&gt;
$(A_{n}, a, f) \in \Delta$ から&lt;br /&gt;
$A_{n}\mathgen a$ であるので、&lt;br /&gt;
$w$ の導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} \Rightarrow_{G} w (=w'a)\]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
以上より(1. $\Rightarrow$ 3.)は示された。&lt;br /&gt;
&lt;br /&gt;
(3. $\Rightarrow$ 2.)&lt;br /&gt;
$L$ を受理する有限オートマトンを&lt;br /&gt;
$\mathautomaton{A}=(\{q_{1}, q_{2}, \ldots, q_{n}\}, \Sigma, \Delta, q_{1}, \{q_{F_{0}}, q_{F_{1}}, \ldots, q_{F_{m}}\})$ とおく。&lt;br /&gt;
&lt;br /&gt;
簡単のため、以下&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\sum_{\alpha \in A} \alpha &amp;amp;= (\alpha_{0}+ \cdots + \alpha_{k}) \quad \text{（ただし、A は正規表現の空でない有限集合であって、A=\{a_{0}, \ldots, a_{k}\}）}, \\&lt;br /&gt;
Q_{ij}&amp;amp;=\{a\in \Sigma\cup\{\emptyword\} | (q_{i}, a, q_{j})\in \Delta\}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
という略記を用いる。&lt;br /&gt;
&lt;br /&gt;
正規表現 $\alpha^{(l)}_{ij}$ （ただし、$1\leq i, j \leq n$, $0\leq l \leq n$）を次のように帰納的に定める。&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\alpha^{(0)}_{ij}&amp;amp;=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
\emptyset, &amp;amp; \text{if Q_{ij}=\emptyset}, \\&lt;br /&gt;
\sum_{a\in Q_{ij}}a, &amp;amp; \text{if Q_{ij}\neq \emptyset, i\neq j}; \\&lt;br /&gt;
\kleenecl{\left(\sum_{a\in Q_{ij}}a\right)}, &amp;amp; \text{if Q_{ij}\neq \emptyset, i=j}; &lt;br /&gt;
\end{cases}\\&lt;br /&gt;
\alpha^{(l)}_{ij}&amp;amp;=\alpha^{(l-1)}_{ij} + \alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}, \quad \text{（ただし、1\leq l）}.&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
$w\in \interpret{\alpha^{(l)}_{ij}}$ であるとき、&lt;br /&gt;
記号列 $w$ による $q_{i}$ から $q_{j}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{0}}, q_{k_{1}}, \ldots, q_{k_{p}} \]&lt;br /&gt;
（ただし、$k_{0}=i$, $k_{p}=j$, $1\leq q\leq p-1$ のとき $1\leq k_{q} \leq l$）が存在することを $l$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$l=0$ については明らか。&lt;br /&gt;
&lt;br /&gt;
$l&amp;gt;0$ のとき、$w\in \interpret{\alpha^{(l)}_{ij}}$ であるとすると、&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{ij}}$ または&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}}$ である。&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{ij}}$ のときは帰納法の仮定より明らか。&lt;br /&gt;
&lt;br /&gt;
$w\in \interpret{ \alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}}$ とする。すると&lt;br /&gt;
$w_{1}\in \interpret{\alpha^{(l-1)}_{il}}$,&lt;br /&gt;
$w_{2}\in \interpret{\alpha^{(l-1)}_{ll}}$,&lt;br /&gt;
$w_{3}\in \interpret{\alpha^{(l-1)}_{lj}}$,&lt;br /&gt;
$w=w_{1}(w_{2})^{s}w_{3}$ （ただし、$s\in \mathnat$） を満たす記号列 $w_{1}$, $w_{2}$, $w_{3}$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から、&lt;br /&gt;
記号列 $w_{t}$ （$t=1, 2, 3$）による$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{t0}}, q_{k_{t1}}, \ldots, q_{k_{tp}} \]&lt;br /&gt;
（ただし、$k_{10}=i$, $k_{1p}=k_{20}=k_{2p}=k_{30}=l$, $k_{3p}=j$, $1\leq q\leq p-1$ のとき $1\leq k_{q} \leq l-1$）が存在する。&lt;br /&gt;
すると、&lt;br /&gt;
記号列 $w$ による $q_{i}$ から $q_{j}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{10}}, q_{k_{11}}, \ldots, q_{k_{1p}}, \overbrace{q_{k_{21}}, \ldots, q_{k_{2p}}}^{s}, q_{k_{31}}, \ldots, q_{k_{3p}} \]&lt;br /&gt;
が存在することがわかる。&lt;br /&gt;
&lt;br /&gt;
以上のことに注意すると、&lt;br /&gt;
\[ \alpha^{(n)}_{1F_{0}}+\alpha^{(n)}_{1F_{1}}+ \cdots + \alpha^{(n)}_{1F_{m}}\]&lt;br /&gt;
は $\mathautomaton{A}$ が受理する記号列全体である。&lt;br /&gt;
 &lt;br /&gt;
以上より(3. $\Rightarrow$ 2.)は示された。&lt;br /&gt;
{{end  |proof }}&lt;br /&gt;
&lt;br /&gt;
==  正規言語と左線形文法 ==&lt;br /&gt;
この節では正規言語と左線形文法との関係を述べる。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=definition |name=左線形文法 |label=def-left_linear_grammar }}&lt;br /&gt;
'''左線形文法（left linear grammar）'''とは&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# $\Sigma$ と互いに素な'''変数記号（variable）'''の有限集合 $V$&lt;br /&gt;
# '''生成規則（production rule）'''と呼ばれる有限集合 $R \subseteq V \times V\kleenecl{(\Sigma)}\cup \kleenecl{(\Sigma)}$&lt;br /&gt;
# '''開始記号(start symbol)'''または'''初期記号'''と呼ばれる $S\in V$&lt;br /&gt;
&lt;br /&gt;
の４つ組$(V, \Sigma, R, S)$である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
これは、[[句構造言語#def-phrase_structure_grammar | 句構造文法]]の一種である。また、[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]の一種である。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=thm-left_linear_grammar }}&lt;br /&gt;
言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $L$ を生成する左線形文法が存在する。&lt;br /&gt;
&lt;br /&gt;
==  正規言語ではない形式言語の例  ==&lt;br /&gt;
この節では正規言語ではない[[形式言語]]の例を紹介する。&lt;br /&gt;
&lt;br /&gt;
そのような例が存在すること自体は右線形文法が[[集合の濃度#具体的な濃度 | 高々可算個]]しかないことと[[形式言語]]の濃度が[[集合の濃度#具体的な濃度 | 非加算]]であることに注意すると、明らかである。&lt;br /&gt;
しかし、その具体例を構成し、正規言語ではないことを示すことはそれほど簡単ではない。このとき強力な武器となるのが[[有限オートマトン#pumping_lemma | 反復補題]]である。&lt;br /&gt;
&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]] については当該項目を参照せよ。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0^{n}1^{n}$ という形をした記号列全体 |label=ex-counter_example_reg_lang_n }}&lt;br /&gt;
$0^{n}1^{n}$ （ただし、$n\in\mathnat$）という形の記号列全体は正規言語ではない。しかしながら[[文脈自由言語]]ではある．この記号列全体を生成する[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]は[[文脈自由言語#ex-counter_example_reg_lang_n | この例]]を参照せよ．&lt;br /&gt;
&lt;br /&gt;
'''$0^{n}1^{n}$ という形の記号列全体が正規言語ではないことの証明'''&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
背理法により示す。&lt;br /&gt;
&lt;br /&gt;
$0^{n}1^{n}$ という形の記号列全体 $L$ が正規言語であると仮定する。&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }}より、$L=L(\mathautomaton{A})$ を満たす&lt;br /&gt;
有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n_{0}=|Q|$ とする。仮定より&lt;br /&gt;
$\mathautomaton{A}$ は $w=0^{n_{0}}1^{n_{0}}$ を受理する。&lt;br /&gt;
すると$\left|w\right|&amp;gt;n_{0}$ であるから&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]] より&lt;br /&gt;
次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w=xyz$。&lt;br /&gt;
# $\left|y\right|&amp;gt;0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は&lt;br /&gt;
$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n_{0}$。&lt;br /&gt;
&lt;br /&gt;
このとき、 $xy=0^{k}$ （ただし、$0&amp;lt; k\leq n_{0}$）&lt;br /&gt;
であることに注意する。&lt;br /&gt;
すると、 $x=0^{k_{0}}$, $y=0^{k_{1}}$&lt;br /&gt;
（ただし、$0\leq k_{0}\leq k$, $0&amp;lt; k_{1}\leq k$,&lt;br /&gt;
$k=k_{0}+k_{1}$）&lt;br /&gt;
を満たす自然数 $k_{0}$, $k_{1}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
さて、$\mathautomaton{A}$ は&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]]の条件から、&lt;br /&gt;
記号列 $xz$ を受理するはずである。&lt;br /&gt;
しかし、$xz=0^{n_{0}-k_{1}}b^{n_{0}}$, $n_{0}-k_{1}&amp;lt;n_{0}$&lt;br /&gt;
であるから $xz\notin L$ である。&lt;br /&gt;
これは $L=L(\mathautomaton{A})$ に矛盾する。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$w\mirrorim{w}$ という形をした記号列全体 |label=ex-counter_example_reg_lang_mirror }}&lt;br /&gt;
$w\mirrorim{w}$（ただし、$n\in\mathnat$）という形の記号列全体は正規言語ではない。しかしながら[[文脈自由言語]]ではある．この記号列全体を生成する[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]は[[文脈自由言語#ex-counter_example_reg_lang_mirror | この例]]を参照せよ．&lt;br /&gt;
'''$w\mirrorim{w}$ という形の記号列全体が正規言語ではないことの証明'''&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
背理法により示す。&lt;br /&gt;
&lt;br /&gt;
$w\mirrorim{w}$ という形の記号列全体 $L$ が正規言語であると仮定する。&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }}より、&lt;br /&gt;
$L=L(\mathautomaton{A})$ を満たす&lt;br /&gt;
有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n_{0}=|Q|$ とする。以下 $w_{0}=0^{n_{0}}1$ とする。&lt;br /&gt;
仮定より $\mathautomaton{A}$ は $w_{0}\mirrorim{w_{0}}$ を受理する。&lt;br /&gt;
すると $\left|w_{0}\mirrorim{w_{0}}\right|&amp;gt;n_{0}$ であるから&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題 ]] より&lt;br /&gt;
次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w_{0}\mirrorim{w_{0}}=xyz$。&lt;br /&gt;
# $\left|y\right|&amp;gt;0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は&lt;br /&gt;
$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n_{0}$。&lt;br /&gt;
&lt;br /&gt;
このとき、 $xy=0^{k}$ （ただし、$0&amp;lt; k\leq n_{0}$）&lt;br /&gt;
であることに注意する。&lt;br /&gt;
すると、 $x=0^{k_{0}}$, $y=0^{k_{1}}$&lt;br /&gt;
（ただし、$0\leq k_{0}\leq k$, $0&amp;lt; k_{1}\leq k$,&lt;br /&gt;
$k=k_{0}+k_{1}$）&lt;br /&gt;
を満たす自然数 $k_{0}$, $k_{1}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
さて、$\mathautomaton{A}$ は&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題 ]] の条件から、&lt;br /&gt;
記号列 $xz$ を受理するはずである。&lt;br /&gt;
しかし、$xz=0^{n_{0}-k_{1}}1\mirrorim{w_{0}}=0^{n_{0}-k_{1}}110^{n_{0}}$, $n_{0}-k_{1}&amp;lt;n_{0}$&lt;br /&gt;
であるから $xz\notin L$ である。&lt;br /&gt;
これは $L=L(\mathautomaton{A})$ に矛盾する。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
==  参考文献 ==&lt;br /&gt;
# 新屋 良磨、オートマトン理論再考、コンピュータ ソフトウェア、2017、34 巻、3 号、p. 3_3-3_35、公開日 2017/09/25、Print ISSN 0289-6540、https://doi.org/10.11309/jssst.34.3_3、https://www.jstage.jst.go.jp/article/jssst/34/3/34_3_3/_article/-char/ja&lt;br /&gt;
# 五十嵐喜英他、『[[数理情報科学シリーズ ２４ オートマトンと形式言語の基礎]]』、牧野書店、2011&lt;br /&gt;
&lt;br /&gt;
== 関連項目 ==&lt;br /&gt;
* [[形式言語]]&lt;br /&gt;
* [[正規表現]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
|+ Chomsky階層&lt;br /&gt;
! 文法のタイプ&lt;br /&gt;
! 言語のクラス&lt;br /&gt;
! 計算モデル&lt;br /&gt;
|-&lt;br /&gt;
! タイプ0&lt;br /&gt;
| [[句構造言語]]&lt;br /&gt;
| [[Turingマシン]]&lt;br /&gt;
|-&lt;br /&gt;
! タイプ1&lt;br /&gt;
| [[文脈依存言語]]&lt;br /&gt;
| [[線形有界オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ2&lt;br /&gt;
| [[文脈自由言語]]&lt;br /&gt;
| [[プッシュダウン・オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ3&lt;br /&gt;
| [[正規言語]]&lt;br /&gt;
| [[有限オートマトン]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E6%9C%89%E9%99%90%E3%82%AA%E3%83%BC%E3%83%88%E3%83%9E%E3%83%88%E3%83%B3&amp;diff=7275</id>
		<title>有限オートマトン</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E6%9C%89%E9%99%90%E3%82%AA%E3%83%BC%E3%83%88%E3%83%9E%E3%83%88%E3%83%B3&amp;diff=7275"/>
		<updated>2021-06-23T17:28:16Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: Prove equivalence of  DFA and NFA&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:形式言語理論|ユウゲンオートマトン]]&lt;br /&gt;
[[Category:計算理論|ユウゲンオートマトン]]&lt;br /&gt;
{{begin |preamble}}&lt;br /&gt;
&amp;lt;!-- 参考文献 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 定理環境 --&amp;gt;&lt;br /&gt;
{{newtheorem |type=theorem |display=定理}}&lt;br /&gt;
{{newtheorem |type=lemma |display=補題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=definition |display=定義 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=prop |display=命題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=example |display=例 |family=theorem }}&lt;br /&gt;
&amp;lt;!-- MathJax commands --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\newcommand{\mathsetextension}[1]{%&lt;br /&gt;
\left\{ #1 \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathsetintension}[2]{%&lt;br /&gt;
\left\{ #1 \left| #2 \right. \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathof}[2]{%&lt;br /&gt;
\mathop{#1}\left(#2\right)%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathpowerset}[1]{%&lt;br /&gt;
2^{#1}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathderiv}{\mathrel{\mathop{\Rightarrow}}^{*}}&lt;br /&gt;
\newcommand{\mathgen}{\rightsquigarrow}&lt;br /&gt;
\newcommand{\emptyword}{\varepsilon}&lt;br /&gt;
\newcommand{\kleenecl}[1]{{#1}^{*}}&lt;br /&gt;
\newcommand{\interpret}[1]{[\![#1]\!]}&lt;br /&gt;
\newcommand{\mathautomaton}[1]{\mathcal{#1}}&lt;br /&gt;
\newcommand{\mathnat}{\mathbb{N}}&lt;br /&gt;
\newcommand{\qed}{\blacksquare}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
{{end |preamble}}&lt;br /&gt;
'''有限オートマトン（finite automaton）'''とは[[正規言語]]を受理する計算モデルである。&lt;br /&gt;
&lt;br /&gt;
以下、項目[[形式言語]]において定められている言語上の演算などについては特に断らず用いる。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{TOC |align=right |noautonum=1 }}&amp;lt;!-- 右寄せ連番無し目次をここに表示 --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  有限オートマトンの導入  ==&lt;br /&gt;
この節では'''有限オートマトン'''やその周辺の重要な諸概念を定義する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=有限オートマトン |label=def-finite_automaton }}&lt;br /&gt;
'''有限オートマトン（finite automaton）'''とは&lt;br /&gt;
# '''状態集合(a set of states)'''と呼ばれる有限集合 $Q$&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# '''遷移関係(transition relation)'''と呼ばれる集合 $\Delta \subseteq Q\times (\Sigma \cup \mathsetextension{\emptyword})  \times Q$ &lt;br /&gt;
# '''開始状態(initial state)'''と呼ばれる $q_{I}\in Q$&lt;br /&gt;
# '''受理状態(accepting state)'''や'''最終状態(final state)'''と呼ばれる集合 $F\subseteq Q$&lt;br /&gt;
&lt;br /&gt;
の５つ組 $(Q, \Sigma, \Delta, q_{I}, F)$ である。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=有限オートマトンの受理する言語 |label=def-language_accepted_finite_automaton }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ と&lt;br /&gt;
記号列 $w \in \kleenecl{\Sigma}$ について、&lt;br /&gt;
次の２条件を満たす状態の列 $q_{0}, q_{1}, \dots, q_{n}$ を&lt;br /&gt;
'''記号列 $w$ による $q_{0}$ から $q_{n}$ への $\mathautomaton{A}$ の状態遷移'''と言う。&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{n}$ （ただし、各 $i=1, \dots, n$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）&lt;br /&gt;
# すべての $i\in \{1, \dots n\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ による $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
$q_{0}, q_{1}, \dots, q_{n}$ であって $q_{0} = q_{I}$, $q_{n}\in F$ を満たすものが存在するとき、&lt;br /&gt;
「有限オートマトン $\mathautomaton{A}$ が&lt;br /&gt;
'''記号列 $w$ を受理する'''」と言う。&lt;br /&gt;
&lt;br /&gt;
有限オートマトン $\mathautomaton{A}$ が受理する&lt;br /&gt;
記号列全体のことを '''有限オートマトン $\mathautomaton{A}$ の受理する言語'''&lt;br /&gt;
と言い、$L(\mathautomaton{A})$ と書く。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=等価な有限オートマトン |label=def-equivalence_finite_automaton }}&lt;br /&gt;
'''有限オートマトン $\mathautomaton{A}$ と 有限オートマトン $\mathautomaton{A'}$ が等価である'''とは、&lt;br /&gt;
$L(\mathautomaton{A})=L(\mathautomaton{A'})$&lt;br /&gt;
を満たすことである。&lt;br /&gt;
&lt;br /&gt;
==  有限オートマトンの例 ==&lt;br /&gt;
この節では有限オートマトンの例を紹介する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列全体を受理する有限オートマトン |label=ex-FA_all }}[[ファイル:Fig FA all.svg|サムネイル]]&lt;br /&gt;
\begin{align*}Q&amp;amp;=\mathsetextension{q_{I}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{I}), (q_{I}, 1, q_{I})}\\ F&amp;amp;= \mathsetextension{q_{I}}\end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。また、$\mathautomaton{A}$ は決定性有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
$0$ と $1$ からなる有限記号列をすべて受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ のみを受理する有限オートマトン |label=ex-0-1-only }}[[ファイル:Fig- 0-1-only.svg|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{1}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{2}), (q_{1}, 1, q_{2})}\\ F&amp;amp;=\mathsetextension{q_{1}} \end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は$0$ と $1$ のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$ をちょうど3個含む記号列全体を受理する有限オートマトン |label=ex-only-three-one}}[[ファイル:Fig FA only three one.svg|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}, q_{3}} \\ \Sigma&amp;amp;=\mathsetextension{0, 1} \\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{I}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{2}), (q_{2}, 0, q_{2}), (q_{2}, 1, q_{3}), (q_{3}, 0, q_{3})} \\ F&amp;amp;=\mathsetextension{q_{3}} \end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$ をちょうど3個含む記号列のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列全体を受理する有限オートマトン その1 |label=ex-one-less-than-three-1 }}[[ファイル:Fig FA one less than three 1.svg|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}, q_{3}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{I}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{2}), (q_{2}, 0, q_{2}), (q_{2}, 1, q_{3}), (q_{3}, 0, q_{3}), (q_{I}, \emptyword, q_{3}), (q_{1}, \emptyword, q_{3}), (q_{2}, \emptyword, q_{3})}\\ F&amp;amp;= \mathsetextension{q_{3}}\end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列全体を受理する有限オートマトン その2 |label=ex-one-less-than-three-2 }}[[ファイル:Fig FA one less than three 2.png|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}, q_{3}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, \emptyword, q_{I}), (q_{I}, 0, q_{I}), (q_{I}, 0, q_{1}), (q_{I}, 0, q_{2}), (q_{I}, 0, q_{3}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{2}), (q_{2}, 0, q_{2}), (q_{2}, 1, q_{3})}\\ F&amp;amp;= \mathsetextension{q_{I},q_{3}}\end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ も&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=自然数の二進表現全体を受理する有限オートマトン |label=ex-bi }}[[ファイル:Fig FA bi.svg|サムネイル]]&lt;br /&gt;
\begin{align*}Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{2}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{1})}\\ F&amp;amp;= \mathsetextension{q_{1}, q_{2}}\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
自然数の二進表現のみを受理する。&lt;br /&gt;
&lt;br /&gt;
==  正規言語、正規表現との関係 ==&lt;br /&gt;
この節では有限オートマトン、[[正規言語]]および[[正規表現]]の関係を述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=theorem |label=thm-Regular_Lang }}&lt;br /&gt;
言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $L=\interpret{\alpha}$ なる正規表現 $\alpha$ が存在する。&lt;br /&gt;
# $L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
&lt;br /&gt;
この定理の証明は、項目[[正規言語#thm-regularandNFA|正規言語]]を参照せよ。&lt;br /&gt;
&lt;br /&gt;
==  反復補題（ポンピング補題） ==&lt;br /&gt;
この節では'''反復補題（pumping lemma）'''について述べる&amp;lt;ref name=&amp;quot;THE-BOOK&amp;quot;&amp;gt;Martin Aigner,Guenter M. Ziegler,Karl H. Hofmann, [&amp;quot;Proofs from THE BOOK&amp;quot;], Springer, 2004 によると、一般に定理が'''補題'''と呼ばれる条件は「広範囲の応用例を持つ」「一見して完璧に明らか」「証明も含めて美しい」の三条件を満たすことである。&amp;lt;/ref&amp;gt;。&lt;br /&gt;
反復補題は'''ポンピング補題'''や'''ポンプ補題'''と呼ばれることもある。&lt;br /&gt;
&lt;br /&gt;
反復補題は[[正規言語#not_regular_lang|ある記号列の集合が正規言語ではない証明]]などに用いられる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=lemma |name=反復補題 |label=pumping_lemma }}&lt;br /&gt;
状態集合の大きさが $n$ の有限オートマトン $\mathautomaton{A}$ に記号列 $w$ が受理されるとする。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|\gt n$ であるとき、次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w=xyz$。&lt;br /&gt;
# $\left|y\right|\gt 0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n$。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- '''{{ref |type=lemma |label=pumping_lemma }}の証明''' --&amp;gt;&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ に $w$ が受理されるとする。&lt;br /&gt;
以下 $n:=\left|Q\right|$, $l:=\left|w\right|$, $l\gt n$ とする。&lt;br /&gt;
&lt;br /&gt;
有限オートマトン $\mathautomaton{A}$ に $w$ が受理されることから、&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{k}$ （ただし、各 $i=1, \dots, k$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）。&lt;br /&gt;
# すべての $i\in \{1, \dots, k\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$。&lt;br /&gt;
# $q_{0}=q_{I}$, $q_{k}\in F$。&lt;br /&gt;
&lt;br /&gt;
を満たす状態の列 $q_{0}, q_{1}, \dots, q_{k}$ と記号の列 $a_{1}, a_{2}, \dots, a_{k}$が存在する&lt;br /&gt;
（ただし、$k\geq l$）。&lt;br /&gt;
&lt;br /&gt;
$l\gt n$ から長さが $n$ の $w$ の[[形式言語#prefix_suffix|接頭語]] $w_{0}$ が存在する。&lt;br /&gt;
すると、$q_{0}, q_{1}, \dots, q_{k}$&lt;br /&gt;
の部分列であって、$w_{0}$ による $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
$$q_{0}, q_{1}, \dots, q_{k_{0}}$$&lt;br /&gt;
が存在する（ただし $n\leq k_{0}\leq k$）。&lt;br /&gt;
&lt;br /&gt;
すると、鳩ノ巣原理より&lt;br /&gt;
# $(q_{i-1}, a_{i}, q_{i})$, $(q_{i+j-1}, a_{i+j}, q_{i+j})\in \Delta$&lt;br /&gt;
（ただし、$a_{i}\neq\emptyword$, $a_{i+j}\neq\emptyword$）&lt;br /&gt;
# $q_{i}=q_{i+j}$&lt;br /&gt;
&lt;br /&gt;
という条件を満たす自然数の組 $(i, j)$ （ただし $0\leq i\leq k_{0}$, $0&amp;lt; j\leq k_{0}$）が少なくとも１つ存在する。&lt;br /&gt;
以下その $i$, $j$ を固定する。&lt;br /&gt;
&lt;br /&gt;
\begin{align*} x&amp;amp;:=a_{1}a_{2}\ldots a_{i}, \\ y&amp;amp;:=a_{i+1}a_{i+2}\ldots a_{i+j}, \\ z&amp;amp;:=a_{i+j+1}a_{i+j+2}\ldots a_{k},\end{align*}&lt;br /&gt;
とすると、$w=xyz$ である。また、$a_{i+j}\neq\emptyword$ であるから $\left|y\right|\gt 0$。&lt;br /&gt;
さらに、定義より $xy$ は $w_{0}$ の部分列であるから、$|xy|\leq n$。&lt;br /&gt;
&lt;br /&gt;
任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ が $\mathautomaton{A}$ に受理されることを示す。&lt;br /&gt;
&lt;br /&gt;
以下、記号列 $x$, $y$, $z$ による $\mathautomaton{A}$ の状態遷移をそれぞれ&lt;br /&gt;
\begin{align*}Q_{x}&amp;amp;=q_{0}, \dots, q_{i}, \\ Q_{y}&amp;amp;=q_{i+1}, \dots, q_{i+j}, \\ Q_{z}&amp;amp;=q_{i+j+1}, \dots, q_{k}, \end{align*}&lt;br /&gt;
と書くことにする。&lt;br /&gt;
&lt;br /&gt;
$m=0$ のときを示す。&lt;br /&gt;
&lt;br /&gt;
$q_{i}=q_{i+j}$ に注意すると、$(q_{i}, a_{i+j+1}, q_{i+j+1})\in \Delta$ である。&lt;br /&gt;
よって、&lt;br /&gt;
$$Q_{x}Q_{z}=q_{0}, \dots, q_{i}, q_{i+j+1}, \dots, q_{k}$$&lt;br /&gt;
は記号列 $xz$ による $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
$q_{0}=q_{I}$, $q_{k}\in F$ であるから、$xz$($=xy^{0}z$) は $\mathautomaton{A}$ に受理される。&lt;br /&gt;
&lt;br /&gt;
$m\gt 0$ のときを示す。&lt;br /&gt;
&lt;br /&gt;
$q_{i}=q_{i+j}$ に注意すると、$(q_{i+j}, a_{i+j+1}, q_{i+1})\in \Delta$ である。&lt;br /&gt;
$$Q_{x}\overbrace{Q_{y}\dots Q_{y}}^{m\text{個}}Q_{z}=q_{0}, \dots, q_{i}, \overbrace{q_{i+1}, \dots, q_{i+j}, q_{i+1}, \dots, q_{i+j}}^{\text{$q_{i+1}, \dots, q_{i+j}$ の反復が $m$回}}, q_{i+j+1}, \dots, q_{k}$$&lt;br /&gt;
は記号列 $xy^{m}z$ による $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
$q_{0}=q_{I}$, $q_{k}\in F$ であるから、$xy^{m}z$ は $\mathautomaton{A}$ に受理される。 &lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
===  反復補題の補足 ===&lt;br /&gt;
本稿の反復補題の $|xy|\leq n$ という条件を外したものも反復補題と呼ばれる。&lt;br /&gt;
反復補題の証明中において、$w$ の部分列を考えたことがそれ以外の条件の証明に対して非本質的であることに注意すると、&lt;br /&gt;
$|xy|\leq n$ という条件が余計であると考えられるからであろう。&lt;br /&gt;
&lt;br /&gt;
==  $\emptyword$ 動作なしの有限オートマトン ==&lt;br /&gt;
この項では&lt;br /&gt;
'''$\emptyword$ 動作なしの有限オートマトン(finite automaton without $\emptyword$-transitions)'''&lt;br /&gt;
について述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=$\emptyword$ 動作なしの有限オートマトン |label=def-finite_automaton_non_emptyword }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が&lt;br /&gt;
次の条件を満たすとき、&lt;br /&gt;
'''$\mathautomaton{A}$ は $\emptyword$ 動作なしの有限オートマトン(finite automaton without $\emptyword$-transitions)である'''と言う:&lt;br /&gt;
* $(q, a, q')\in \Delta$ に対して $a=\emptyword$ ならば $q=q'$&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=prop-finite_automaton_non_emptyword }}&lt;br /&gt;
任意の有限オートマトンに対して、それと等価な $\emptyword$ 動作なしの有限オートマトンが存在する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ==== {{ref |type=prop |label=prop-finite_automaton_non_emptyword }} の証明 ==== --&amp;gt;&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ を有限オートマトンとする。&lt;br /&gt;
&amp;lt;!-- $\mathautomaton{A}$ が $\emptyword$ 動作なしの有限オートマトンであれば、示すことはない。 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$q\in Q$, $a\in \Sigma$ にたいして、集合 $\mathof{C}{q, a}$ を次のように定める:&lt;br /&gt;
\[ \mathof{C}{q, a}=\mathsetintension{(q, a, q')}{ \text{記号列 $a$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する}}. \]&lt;br /&gt;
&lt;br /&gt;
$\mathof{C_{\emptyword}}{q_{I}}$ を次のように定義する:&lt;br /&gt;
\[\mathof{C_{\emptyword}}{q_{I}}=\mathsetintension{q'\in Q}{\text{記号列 } \emptyword \text{ による } q_{I} \text{ から } q' \text{ への } \mathautomaton{A} \text{ の状態遷移が存在する} }. \]&lt;br /&gt;
&lt;br /&gt;
次のように集合 $\Delta'_{0}$, $\Delta'_{\emptyword}$ および $\Delta'$ を次のように定める:&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\Delta'_{0}&amp;amp;=\bigcup_{q\in Q, a\in \Sigma} \mathof{C}{q, a}, \\&lt;br /&gt;
\Delta'_{\emptyword}&amp;amp;=\mathsetintension{(q, \emptyword, q)}{q\in Q}, \\&lt;br /&gt;
\Delta'&amp;amp;=\Delta'_{0}\cup \Delta'_{\emptyword}.&lt;br /&gt;
\end{align*}&lt;br /&gt;
また、&lt;br /&gt;
\[F'=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
F, &amp;amp; \text{if } F\cap\mathof{C_{\emptyword}}{q_{I}}=\emptyset, \\&lt;br /&gt;
F \cup \mathsetextension{q_{I}}, &amp;amp; \text{if } F\cap\mathof{C_{\emptyword}}{q_{I}}\neq\emptyset.&lt;br /&gt;
\end{cases}&lt;br /&gt;
\]&lt;br /&gt;
とする。&lt;br /&gt;
このとき$\mathautomaton{A}'=(Q, \Sigma, \Delta', q_{I}, F')$ は $\emptyword$ 動作なしの有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
記号列 $w\neq\emptyword$ に対して、以下が同値であることを示す:&lt;br /&gt;
# 記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する&lt;br /&gt;
# 記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在する&lt;br /&gt;
&lt;br /&gt;
次のように集合 $\Delta_{\emptyword}$ および $\Delta_{0}$  を次のように定める。&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\Delta_{\emptyword}&amp;amp;=\mathsetintension{(q, a, q')\in \Delta}{a=\emptyword\text{ かつ }q\neq q'}, \\&lt;br /&gt;
\Delta_{0}&amp;amp;=\Delta\setminus\Delta_{\emptyword}.&lt;br /&gt;
\end{align*}&lt;br /&gt;
以下 $\Delta_{0} \subseteq \Delta'_{0}$ に注意する。&lt;br /&gt;
&lt;br /&gt;
1 $\Rightarrow$ 2:&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在すると仮定する。&lt;br /&gt;
$\left|w\right|$ に対する帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|=1$ のとき:&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在することから $(q, w, q')\in \mathof{C}{q, w}$。&lt;br /&gt;
よって、$(q, w, q')\in \Delta'$。よって、$q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|\gt 1$ のとき: $w=w_{0}a$ とおく（ただし、$a\in\Sigma$）。&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在することから&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{k}$ （ただし、各 $i=1, \dots, k$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）。&lt;br /&gt;
# すべての $i\in \{1, \dots, k\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$。&lt;br /&gt;
# $q_{0}=q$, $q_{k}=q'$。&lt;br /&gt;
&lt;br /&gt;
を満たす状態の列 $q_{0}, q_{1}, \dots, q_{k}$ と記号の列 $a_{1}, a_{2}, \dots, a_{k}$が存在する&lt;br /&gt;
（ただし、$k\geq l$）。&lt;br /&gt;
このとき、$w_{0}=a_{1}\dots a_{k_{0}}$, $a=a_{k_{0}+1}$, $1\leq k_{0}\lt k$ を満たす $k_{0}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
すると、$q=q_{0}, q_{1}, \dots, q_{k_{0}}$ は記号列 $w_{0}$ による $q$ から $q_{k_{0}}$ への $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
また、$q_{k_{0}}, q_{k_{0}+1}, \dots, q_{k}=q'$ は記号列 $a$ による $q_{k_{0}}$ から $q'$ への $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から&lt;br /&gt;
記号列 $w_{0}$ による $q$ から $q_{k_{0}}$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
また、記号列 $a$ による $q_{k_{0}}$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在することから $(q_{k_{0}}, a, q')\in \mathof{C}{q_{k_{0}}, a}$。ゆえに、記号列 $w=w_{0}a$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
2 $\Rightarrow$ 1:&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在すると仮定する。&lt;br /&gt;
$\left|w\right|$ に対する帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|=1$ のとき:&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在することから&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{k}$ （ただし、各 $i=1, \dots, k$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）。&lt;br /&gt;
# すべての $i\in \{1, \dots, k\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta'$。&lt;br /&gt;
# $q_{0}=q$, $q_{k}=q'$。&lt;br /&gt;
&lt;br /&gt;
を満たす状態の列 $q_{0}, q_{1}, \dots, q_{k}$ と記号の列 $a_{1}, a_{2}, \dots, a_{k}$が存在する&lt;br /&gt;
（ただし、$k\geq l$）。&lt;br /&gt;
$\left|w\right|=1$ であるから、&lt;br /&gt;
\[a_{i}=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
w &amp;amp; i=k_{0} \\&lt;br /&gt;
\emptyword &amp;amp; i\neq k_{0}&lt;br /&gt;
\end{cases}&lt;br /&gt;
\]&lt;br /&gt;
を満たす $1\leq k_{0}$ が存在する。このとき、$\Delta'$ の定義から &lt;br /&gt;
\[q_{i}=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
q &amp;amp; i\lt k_{0} \\&lt;br /&gt;
q' &amp;amp; k_{0}\leq i&lt;br /&gt;
\end{cases}&lt;br /&gt;
\]&lt;br /&gt;
であって、$(q, w, q')\in \Delta'_{0}$ である。&lt;br /&gt;
$\Delta'_{0}$ の定義から $(q, w, q')\in \mathof{C}{q, w}$。&lt;br /&gt;
これは記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在することを意味する。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|\gt 1$ のとき: $w=w_{0}a$ とおく（ただし、$a\in\Sigma$）。&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在することから&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{k}$ （ただし、各 $i=1, \dots, k$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）。&lt;br /&gt;
# すべての $i\in \{1, \dots, k\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$。&lt;br /&gt;
# $q_{0}=q$, $q_{k}=q'$。&lt;br /&gt;
&lt;br /&gt;
を満たす状態の列 $q_{0}, q_{1}, \dots, q_{k}$ と記号の列 $a_{1}, a_{2}, \dots, a_{k}$が存在する&lt;br /&gt;
（ただし、$k\geq l$）。&lt;br /&gt;
このとき、$w_{0}=a_{1}\dots a_{k_{0}}$, $a=a_{k_{0}+1}$, $1\leq k_{0}\lt k$ を満たす $k_{0}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
すると、$q=q_{0}, q_{1}, \dots, q_{k_{0}}$ は記号列 $w_{0}$ による $q$ から $q_{k_{0}}$ への $\mathautomaton{A}'$ の状態遷移である。&lt;br /&gt;
また、$q_{k_{0}}, q_{k_{0}+1}, \dots, q_{k}=q'$ は記号列 $a$ による $q_{k_{0}}$ から $q'$ への $\mathautomaton{A}'$ の状態遷移である。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から&lt;br /&gt;
記号列 $w_{0}$ による $q$ から $q_{k_{0}}$ への $\mathautomaton{A}$ の状態遷移が存在し、&lt;br /&gt;
また、記号列 $a$ による $q_{k_{0}}$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する。ゆえに、記号列 $w=w_{0}a$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
以上を踏まえて、$L(\mathautomaton{A})=L(\mathautomaton{A}')$ を示す。&lt;br /&gt;
&lt;br /&gt;
$w\in L(\mathautomaton{A})$ を仮定する。&lt;br /&gt;
$w=\emptyword$ のとき、$F\cap\mathof{C_{\emptyword}}{q_{I}}\neq\emptyset$ である。&lt;br /&gt;
ゆえに、$q_{I}\in F'$。$(q_{I}, \emptyword, q_{I})\in \Delta'$ に注意すると、&lt;br /&gt;
$\emptyword$ による $q_{I}$ から $q_{I}$ への $\mathautomaton{A}'$ の状態遷移が存在するので、&lt;br /&gt;
$\emptyword\in L(\mathautomaton{A}')$。&lt;br /&gt;
&lt;br /&gt;
$w\neq \emptyword$ のとき、&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q\in F$ への $\mathautomaton{A}$ の状態遷移が存在することから、&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q\in F'$ への $\mathautomaton{A}'$ の状態遷移が存在することが速やかにわかる。ゆえに $w\in L(\mathautomaton{A}')$。&lt;br /&gt;
&lt;br /&gt;
以上より $L(\mathautomaton{A})\subseteq L(\mathautomaton{A}')$。&lt;br /&gt;
&lt;br /&gt;
$w\in L(\mathautomaton{A}')$ を仮定する。&lt;br /&gt;
$w=\emptyword$ のとき、$(q_{I}, \emptyword, q_{I})\in \Delta'$ かつ $q_{I}\in F'$ である。&lt;br /&gt;
&lt;br /&gt;
$F\cap\mathof{C_{\emptyword}}{q_{I}}=\emptyset$ のとき、$q_{I}\notin F$。また、$F=F'$ である。&lt;br /&gt;
まとめて、$q_{I}\notin F=F'\ni q_{I}$。これは矛盾である。&lt;br /&gt;
よって、$F\cap\mathof{C_{\emptyword}}{q_{I}}\neq\emptyset$ である。&lt;br /&gt;
ゆえに、$q\in \mathof{C_{\emptyword}}{q_{I}}$, $q\in F$ を満たす状態 $q\in Q$ が存在する。&lt;br /&gt;
$q\in \mathof{C_{\emptyword}}{q_{I}}$ であるから、&lt;br /&gt;
$\emptyword$ による $q_{I}$ から $q$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
$q\in F$ であるから $\emptyword\in L(\mathautomaton{A}')$。&lt;br /&gt;
&lt;br /&gt;
$w\neq \emptyword$ のとき、&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q\in F$ への $\mathautomaton{A}'$ の状態遷移が存在することから、&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q\in F'$ への $\mathautomaton{A}$ の状態遷移が存在することが速やかにわかる。&lt;br /&gt;
&lt;br /&gt;
以上より $L(\mathautomaton{A}')\subseteq L(\mathautomaton{A})$。&lt;br /&gt;
&lt;br /&gt;
$L(\mathautomaton{A})\subseteq L(\mathautomaton{A}')$ より$L(\mathautomaton{A})=L(\mathautomaton{A}')$。&lt;br /&gt;
$\mathautomaton{A}'$ が $\emptyword$ 動作なしの有限オートマトンであるから、命題の主張を得る。&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
==  決定性有限オートマトン ==&lt;br /&gt;
この項では'''決定性有限オートマトン(deterministic finite automaton)'''について述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=決定性有限オートマトン |label=def-deterministic_finite_automaton }}&lt;br /&gt;
$\emptyword$ 動作なしの有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が次の条件を満たすとき、'''$\mathautomaton{A}$ は決定性有限オートマトン(deterministic finite automaton)である'''と言う:&lt;br /&gt;
&lt;br /&gt;
* 各 $(q, a) \in Q\times \Sigma$ という組に対して、$(q, a, q')\in \Delta$ という形の元は高々一個&lt;br /&gt;
&lt;br /&gt;
有限オートマトン $\mathautomaton{A}$ が決定性有限オートマトンとは限らないことを明示したいときに、&lt;br /&gt;
'''$\mathautomaton{A}$ は非決定性有限オートマトン(nondeterministic finite automaton)である'''と言うことがある。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=prop-finite_automaton_non_emptyword }}&lt;br /&gt;
任意の有限オートマトンに対して、それと等価な決定性有限オートマトンが存在する。&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
$\mathautomaton{A}_{0}=(Q_{0}, \Sigma, \Delta_{0}, q_{I}, F_{0})$ を有限オートマトンとする。&lt;br /&gt;
{{ref |type=prop |label=prop-finite_automaton_non_emptyword }} から&lt;br /&gt;
$\mathautomaton{A}_{0}$ と等価な&lt;br /&gt;
$\emptyword$ 動作なしの有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
$S\subseteq Q$, $a\in (\Sigma \cup \mathsetextension{\emptyword})$ に対して、集合 $\mathof{T}{S, a}$ を次のように定める:&lt;br /&gt;
\[&lt;br /&gt;
\mathof{T}{S, a}=\mathsetintension{q'\in Q}{(q, a, q')\in\Delta \text{ for } q\in S}.&lt;br /&gt;
\]&lt;br /&gt;
次のように集合 $\Delta'$, $F'$ を定める。&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\Delta' &amp;amp;=\mathsetintension{(S, a, \mathof{T}{S, a})}{S\subseteq Q, a\in (\Sigma \cup \mathsetextension{\emptyword}) } \\&lt;br /&gt;
F' &amp;amp;=\mathsetintension{S\subseteq Q}{S\cap F\neq \emptyset}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
このとき、$\mathautomaton{A}'=(\mathpowerset{Q}, \Sigma, \Delta', \mathsetextension{q_{I}}, F')$&lt;br /&gt;
は決定性有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
$\mathof{L}{\mathautomaton{A}}=\mathof{L}{\mathautomaton{A}'}$ を示す。&lt;br /&gt;
&lt;br /&gt;
まず、$\mathof{L}{\mathautomaton{A}}\subseteq\mathof{L}{\mathautomaton{A}'}$&lt;br /&gt;
を示すために次の命題($*$)を示す:&lt;br /&gt;
&lt;br /&gt;
($*$)&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q$ への $\mathautomaton{A}$ の状態遷移が存在するとき、次を満たす&lt;br /&gt;
$S\in \mathpowerset{Q}$ が存在する:&lt;br /&gt;
+ $q\in S$。 &lt;br /&gt;
+ 記号列 $w$ による $\mathsetextension{q_{I}}$ から $S$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q$ への $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
$(q_{I}=)q_{0}, \dots, q_{n}(=q)$ が存在すると仮定する。&lt;br /&gt;
($*$) の 1., 2. を満たす $S$ が存在することを $n$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$n=0$ のときは明らか。&lt;br /&gt;
&lt;br /&gt;
$n\gt 0$ のとき、次を満たす $w'\in \kleenecl{\Sigma}$, $a\in \Sigma$ が存在する:&lt;br /&gt;
+ $w=w'a$。 &lt;br /&gt;
+ $(q_{n-1}, a, q_{n})\in \Delta$。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から、$q_{n-1}\in S'$、&lt;br /&gt;
記号列 $w'$ による $\mathsetextension{q_{I}}$ から $S'$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
$(q_{n-1}, a, q_{n})\in \Delta$ より、次を満たす $S\in \mathpowerset{Q}$ が存在する:&lt;br /&gt;
+ $q_{n}\in S$。&lt;br /&gt;
+ $(S', a, S)\in \Delta'$。&lt;br /&gt;
&lt;br /&gt;
ゆえに、$q\in S$ で&lt;br /&gt;
記号列 $w$ による $\mathsetextension{q_{I}}$ から $S$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
以上より ($*$) は示された。&lt;br /&gt;
&lt;br /&gt;
さて、$w\in \mathof{L}{\mathautomaton{A}}$ を仮定する。&lt;br /&gt;
すると、記号列 $w$ による $q_{I}$ から $q\in F$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
(*) より次を満たす $S\in \mathpowerset{Q}$ が存在する:&lt;br /&gt;
+ $q\in S$。 &lt;br /&gt;
+ 記号列 $w$ による $\mathsetextension{q_{I}}$ から $S$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
$q\in S$ より $S\cap F\neq \emptyset$ であるから、$S\in F'$。&lt;br /&gt;
ゆえに、$w\in \mathof{L}{\mathautomaton{A}'}$。&lt;br /&gt;
よって、$\mathof{L}{\mathautomaton{A}}\subseteq \mathof{L}{\mathautomaton{A}'}$。&lt;br /&gt;
&lt;br /&gt;
次に $\mathof{L}{\mathautomaton{A}'}\subseteq\mathof{L}{\mathautomaton{A}}$&lt;br /&gt;
を示すために次の命題($**$)を示す:&lt;br /&gt;
&lt;br /&gt;
($**$)  &lt;br /&gt;
記号列 $w$ による $\mathsetextension{q_{I}}$ から $S$ への $\mathautomaton{A}'$ の状態遷移が存在するとき、&lt;br /&gt;
任意の $q\in S$ に対して記号列 $w$ による $q_{I}$ から $q$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ による $\mathsetextension{q_{I}}$ から $S$ への $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
$(\mathsetextension{q_{I}}=)S_{0}, \dots, S_{n}(=S)$ が存在すると仮定する。&lt;br /&gt;
任意の $q\in S$ に対して記号列 $w$ による $q_{I}$ から $q$ への $\mathautomaton{A}$&lt;br /&gt;
の状態遷移が存在することを $n$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$n=0$ のときは明らか。&lt;br /&gt;
&lt;br /&gt;
$n\gt 0$ のとき、$q\in S$ とする。&lt;br /&gt;
このとき、次を満たす $w'\in \kleenecl{\Sigma}$, $a\in \Sigma$ が存在する:&lt;br /&gt;
+ $w=w'a$。 &lt;br /&gt;
+ $(S_{n-1}, a, S)\in \Delta'$。&lt;br /&gt;
&lt;br /&gt;
$(S_{n-1}, a, S)\in \Delta'$ のであるから、$(q', a, q)\in \Delta$ を満たす $q'\in S_{n-1}$ が存在する。&lt;br /&gt;
帰納法の仮定から記号列 $w'$ による $q_{I}$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
$(q', a, q)\in \Delta$ から、&lt;br /&gt;
帰納法の仮定から記号列 $w$ による $q_{I}$ から $q$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
以上より ($**$) は示された。&lt;br /&gt;
&lt;br /&gt;
さて、$w\in \mathof{L}{\mathautomaton{A}'}$ を仮定する。&lt;br /&gt;
すると、記号列 $w$ による $\mathsetextension{q_{I}}$ から $S\in F'$ への $\mathautomaton{A}'$&lt;br /&gt;
の状態遷移が存在する。&lt;br /&gt;
このとき、$S\cap F\neq \emptyset$ であるから、$q\in S$ かつ $q\in F$ を満たす $q$ が存在する。&lt;br /&gt;
($**$) から記号列 $w$ による $q_{I}$ から $q$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
$q\in F$ であるから、$w\in \mathof{L}{\mathautomaton{A}}$。&lt;br /&gt;
よって、$\mathof{L}{\mathautomaton{A}'}\subseteq\mathof{L}{\mathautomaton{A}}$。&lt;br /&gt;
&lt;br /&gt;
以上より $L(\mathautomaton{A})=L(\mathautomaton{A}')$。&lt;br /&gt;
$\mathautomaton{A}'$ が決定性有限オートマトンであるから、命題の主張を得る。&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
==  参考文献 ==&lt;br /&gt;
# 新屋 良磨、オートマトン理論再考、コンピュータ ソフトウェア、2017、34 巻、3 号、p. 3_3-3_35、公開日 2017/09/25、Print ISSN 0289-6540、[https://doi.org/10.11309/jssst.34.3_3]、[https://www.jstage.jst.go.jp/article/jssst/34/3/34_3_3/_article/-char/ja]&lt;br /&gt;
# 五十嵐喜英他、『[https://www.amazon.co.jp/gp/product/4434158783/infinitytopoi-22 | 数理情報科学シリーズ ２４ オートマトンと形式言語の基礎]』、牧野書店、2011&lt;br /&gt;
# Martin Aigner,Guenter M. Ziegler,Karl H. Hofmann, [https://www.amazon.co.jp/Proofs-BOOK-Martin-Aigner-dp-3662572648/dp/3662572648/infinitytopoi-22 | &amp;quot;Proofs from THE BOOK&amp;quot;], Springer, 2004&lt;br /&gt;
&lt;br /&gt;
== 脚注 ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 関連項目  ==&lt;br /&gt;
* [[形式言語]]&lt;br /&gt;
* [[正規表現]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
|+ Chomsky階層&lt;br /&gt;
! 文法のタイプ&lt;br /&gt;
! 言語のクラス&lt;br /&gt;
! 計算モデル&lt;br /&gt;
|-&lt;br /&gt;
! タイプ0&lt;br /&gt;
| [[句構造言語]]&lt;br /&gt;
| [[Turingマシン]]&lt;br /&gt;
|-&lt;br /&gt;
! タイプ1&lt;br /&gt;
| [[文脈依存言語]]&lt;br /&gt;
| [[線形有界オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ2&lt;br /&gt;
| [[文脈自由言語]]&lt;br /&gt;
| [[プッシュダウン・オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ3&lt;br /&gt;
| [[正規言語]]&lt;br /&gt;
| [[有限オートマトン]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E6%9C%89%E9%99%90%E3%82%AA%E3%83%BC%E3%83%88%E3%83%9E%E3%83%88%E3%83%B3&amp;diff=6859</id>
		<title>有限オートマトン</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E6%9C%89%E9%99%90%E3%82%AA%E3%83%BC%E3%83%88%E3%83%9E%E3%83%88%E3%83%B3&amp;diff=6859"/>
		<updated>2021-05-31T14:57:01Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: Fix a typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:形式言語理論|ユウゲンオートマトン]]&lt;br /&gt;
[[Category:計算理論|ユウゲンオートマトン]]&lt;br /&gt;
{{begin |preamble}}&lt;br /&gt;
&amp;lt;!-- 参考文献 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 定理環境 --&amp;gt;&lt;br /&gt;
{{newtheorem |type=theorem |display=定理}}&lt;br /&gt;
{{newtheorem |type=lemma |display=補題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=definition |display=定義 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=prop |display=命題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=example |display=例 |family=theorem }}&lt;br /&gt;
&amp;lt;!-- MathJax commands --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\newcommand{\mathsetextension}[1]{%&lt;br /&gt;
\left\{ #1 \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathsetintension}[2]{%&lt;br /&gt;
\left\{ #1 \left| #2 \right. \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathof}[2]{%&lt;br /&gt;
\mathop{#1}\left(#2\right)%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathderiv}{\mathrel{\mathop{\Rightarrow}}^{*}}&lt;br /&gt;
\newcommand{\mathgen}{\rightsquigarrow}&lt;br /&gt;
\newcommand{\emptyword}{\varepsilon}&lt;br /&gt;
\newcommand{\kleenecl}[1]{{#1}^{*}}&lt;br /&gt;
\newcommand{\interpret}[1]{[\![#1]\!]}&lt;br /&gt;
\newcommand{\mathautomaton}[1]{\mathcal{#1}}&lt;br /&gt;
\newcommand{\mathnat}{\mathbb{N}}&lt;br /&gt;
\newcommand{\qed}{\blacksquare}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
{{end |preamble}}&lt;br /&gt;
'''有限オートマトン（finite automaton）'''とは[[正規言語]]を受理する計算モデルである。&lt;br /&gt;
&lt;br /&gt;
以下、項目[[形式言語]]において定められている言語上の演算などについては特に断らず用いる。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{TOC |align=right |noautonum=1 }}&amp;lt;!-- 右寄せ連番無し目次をここに表示 --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  有限オートマトンの導入  ==&lt;br /&gt;
この節では'''有限オートマトン'''やその周辺の重要な諸概念を定義する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=有限オートマトン |label=def-finite_automaton }}&lt;br /&gt;
'''有限オートマトン（finite automaton）'''とは&lt;br /&gt;
# '''状態集合(a set of states)'''と呼ばれる有限集合 $Q$&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# '''遷移関係(transition relation)'''と呼ばれる集合 $\Delta \subseteq Q\times (\Sigma \cup \{\emptyword\})  \times Q$ &lt;br /&gt;
# '''開始状態(initial state)'''と呼ばれる $q_{I}\in Q$&lt;br /&gt;
# '''受理状態(accepting state)'''や'''最終状態(final state)'''と呼ばれる集合 $F\subseteq Q$&lt;br /&gt;
&lt;br /&gt;
の５つ組 $(Q, \Sigma, \Delta, q_{I}, F)$ である。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=有限オートマトンの受理する言語 |label=def-language_accepted_finite_automaton }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ と&lt;br /&gt;
記号列 $w \in \kleenecl{\Sigma}$ について、&lt;br /&gt;
次の２条件を満たす状態の列 $q_{0}, q_{1}, \dots, q_{n}$ を&lt;br /&gt;
'''記号列 $w$ による $q_{0}$ から $q_{n}$ への $\mathautomaton{A}$ の状態遷移'''と言う。&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{n}$ （ただし、各 $i=1, \dots, n$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）&lt;br /&gt;
# すべての $i\in \{1, \dots n\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ による $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
$q_{0}, q_{1}, \dots, q_{n}$ であって $q_{0} = q_{I}$, $q_{n}\in F$ を満たすものが存在するとき、&lt;br /&gt;
「有限オートマトン $\mathautomaton{A}$ が&lt;br /&gt;
'''記号列 $w$ を受理する'''」と言う。&lt;br /&gt;
&lt;br /&gt;
有限オートマトン $\mathautomaton{A}$ が受理する&lt;br /&gt;
記号列全体のことを '''有限オートマトン $\mathautomaton{A}$ の受理する言語'''&lt;br /&gt;
と言い、$L(\mathautomaton{A})$ と書く。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=等価な有限オートマトン |label=def-equivalence_finite_automaton }}&lt;br /&gt;
'''有限オートマトン $\mathautomaton{A}$ と 有限オートマトン $\mathautomaton{A'}$ が等価である'''とは，&lt;br /&gt;
$L(\mathautomaton{A})=L(\mathautomaton{A'})$&lt;br /&gt;
を満たすことである。&lt;br /&gt;
&lt;br /&gt;
==  有限オートマトンの例 ==&lt;br /&gt;
この節では有限オートマトンの例を紹介する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列全体を受理する有限オートマトン |label=ex-FA_all }}[[ファイル:Fig FA all.svg|サムネイル]]&lt;br /&gt;
\begin{align*}Q&amp;amp;=\mathsetextension{q_{I}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{I}), (q_{I}, 1, q_{I})}\\ F&amp;amp;= \mathsetextension{q_{I}}\end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。また、$\mathautomaton{A}$ は決定性有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
$0$ と $1$ からなる有限記号列をすべて受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ のみを受理する有限オートマトン |label=ex-0-1-only }}[[ファイル:Fig- 0-1-only.svg|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{1}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{2}), (q_{1}, 1, q_{2})}\\ F&amp;amp;=\mathsetextension{q_{1}} \end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は$0$ と $1$ のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$ をちょうど3個含む記号列全体を受理する有限オートマトン |label=ex-only-three-one}}[[ファイル:Fig FA only three one.svg|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}, q_{3}} \\ \Sigma&amp;amp;=\mathsetextension{0, 1} \\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{I}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{2}), (q_{2}, 0, q_{2}), (q_{2}, 1, q_{3}), (q_{3}, 0, q_{3})} \\ F&amp;amp;=\mathsetextension{q_{3}} \end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$ をちょうど3個含む記号列のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列全体を受理する有限オートマトン その1 |label=ex-one-less-than-three-1 }}[[ファイル:Fig FA one less than three 1.svg|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}, q_{3}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{I}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{2}), (q_{2}, 0, q_{2}), (q_{2}, 1, q_{3}), (q_{3}, 0, q_{3}), (q_{I}, \emptyword, q_{3}), (q_{1}, \emptyword, q_{3}), (q_{2}, \emptyword, q_{3})}\\ F&amp;amp;= \mathsetextension{q_{3}}\end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列全体を受理する有限オートマトン その2 |label=ex-one-less-than-three-2 }}[[ファイル:Fig FA one less than three 2.png|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}, q_{3}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, \emptyword, q_{I}), (q_{I}, 0, q_{I}), (q_{I}, 0, q_{1}), (q_{I}, 0, q_{2}), (q_{I}, 0, q_{3}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{2}), (q_{2}, 0, q_{2}), (q_{2}, 1, q_{3})}\\ F&amp;amp;= \mathsetextension{q_{I},q_{3}}\end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ も&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=自然数の二進表現全体を受理する有限オートマトン |label=ex-bi }}[[ファイル:Fig FA bi.svg|サムネイル]]&lt;br /&gt;
\begin{align*}Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{2}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{1})}\\ F&amp;amp;= \mathsetextension{q_{1}, q_{2}}\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
自然数の二進表現のみを受理する。&lt;br /&gt;
&lt;br /&gt;
==  正規言語、正規表現との関係 ==&lt;br /&gt;
この節では有限オートマトン、[[正規言語]]および[[正規表現]]の関係を述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=theorem |label=thm-Regular_Lang }}&lt;br /&gt;
言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $L=\interpret{\alpha}$ なる正規表現 $\alpha$ が存在する。&lt;br /&gt;
# $L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
&lt;br /&gt;
この定理の証明は、項目[[正規言語#thm-regularandNFA|正規言語]]を参照せよ。&lt;br /&gt;
&lt;br /&gt;
==  反復補題（ポンピング補題） ==&lt;br /&gt;
この節では'''反復補題（pumping lemma）'''について述べる&amp;lt;ref name=&amp;quot;THE-BOOK&amp;quot;&amp;gt;Martin Aigner,Guenter M. Ziegler,Karl H. Hofmann, [&amp;quot;Proofs from THE BOOK&amp;quot;], Springer, 2004 によると、一般に定理が'''補題'''と呼ばれる条件は「広範囲の応用例を持つ」「一見して完璧に明らか」「証明も含めて美しい」の三条件を満たすことである。&amp;lt;/ref&amp;gt;。&lt;br /&gt;
反復補題は'''ポンピング補題'''や'''ポンプ補題'''と呼ばれることもある。&lt;br /&gt;
&lt;br /&gt;
反復補題は[[正規言語#not_regular_lang|ある記号列の集合が正規言語ではない証明]]などに用いられる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=lemma |name=反復補題 |label=pumping_lemma }}&lt;br /&gt;
状態集合の大きさが $n$ の有限オートマトン $\mathautomaton{A}$ に記号列 $w$ が受理されるとする。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|\gt n$ であるとき、次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w=xyz$。&lt;br /&gt;
# $\left|y\right|\gt 0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n$。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- '''{{ref |type=lemma |label=pumping_lemma }}の証明''' --&amp;gt;&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ に $w$ が受理されるとする。&lt;br /&gt;
以下 $n:=\left|Q\right|$, $l:=\left|w\right|$, $l\gt n$ とする。&lt;br /&gt;
&lt;br /&gt;
有限オートマトン $\mathautomaton{A}$ に $w$ が受理されることから、&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{k}$ （ただし、各 $i=1, \dots, k$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）。&lt;br /&gt;
# すべての $i\in \{1, \dots, k\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$。&lt;br /&gt;
# $q_{0}=q_{I}$, $q_{k}\in F$。&lt;br /&gt;
&lt;br /&gt;
を満たす状態の列 $q_{0}, q_{1}, \dots, q_{k}$ と記号の列 $a_{1}, a_{2}, \dots, a_{k}$が存在する&lt;br /&gt;
（ただし、$k\geq l$）。&lt;br /&gt;
&lt;br /&gt;
$l\gt n$ から長さが $n$ の $w$ の[[形式言語#prefix_suffix|接頭語]] $w_{0}$ が存在する。&lt;br /&gt;
すると、$q_{0}, q_{1}, \dots, q_{k}$&lt;br /&gt;
の部分列であって、$w_{0}$ による $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
$$q_{0}, q_{1}, \dots, q_{k_{0}}$$&lt;br /&gt;
が存在する（ただし $n\leq k_{0}\leq k$）。&lt;br /&gt;
&lt;br /&gt;
すると、鳩ノ巣原理より&lt;br /&gt;
# $(q_{i-1}, a_{i}, q_{i})$, $(q_{i+j-1}, a_{i+j}, q_{i+j})\in \Delta$&lt;br /&gt;
（ただし、$a_{i}\neq\emptyword$, $a_{i+j}\neq\emptyword$）&lt;br /&gt;
# $q_{i}=q_{i+j}$&lt;br /&gt;
&lt;br /&gt;
という条件を満たす自然数の組 $(i, j)$ （ただし $0\leq i\leq k_{0}$, $0&amp;lt; j\leq k_{0}$）が少なくとも１つ存在する。&lt;br /&gt;
以下その $i$, $j$ を固定する。&lt;br /&gt;
&lt;br /&gt;
\begin{align*} x&amp;amp;:=a_{1}a_{2}\ldots a_{i}, \\ y&amp;amp;:=a_{i+1}a_{i+2}\ldots a_{i+j}, \\ z&amp;amp;:=a_{i+j+1}a_{i+j+2}\ldots a_{k},\end{align*}&lt;br /&gt;
とすると、$w=xyz$ である。また、$a_{i+j}\neq\emptyword$ であるから $\left|y\right|\gt 0$。&lt;br /&gt;
さらに、定義より $xy$ は $w_{0}$ の部分列であるから、$|xy|\leq n$。&lt;br /&gt;
&lt;br /&gt;
任意の$m\in\mathnat$に対して，記号列 $xy^{m}z$ が $\mathautomaton{A}$ に受理されることを示す。&lt;br /&gt;
&lt;br /&gt;
以下，記号列 $x$, $y$, $z$ による $\mathautomaton{A}$ の状態遷移をそれぞれ&lt;br /&gt;
\begin{align*}Q_{x}&amp;amp;=q_{0}, \dots, q_{i}, \\ Q_{y}&amp;amp;=q_{i+1}, \dots, q_{i+j}, \\ Q_{z}&amp;amp;=q_{i+j+1}, \dots, q_{k}, \end{align*}&lt;br /&gt;
と書くことにする。&lt;br /&gt;
&lt;br /&gt;
$m=0$ のときを示す。&lt;br /&gt;
&lt;br /&gt;
$q_{i}=q_{i+j}$ に注意すると、$(q_{i}, a_{i+j+1}, q_{i+j+1})\in \Delta$ である。&lt;br /&gt;
よって、&lt;br /&gt;
$$Q_{x}Q_{z}=q_{0}, \dots, q_{i}, q_{i+j+1}, \dots, q_{k}$$&lt;br /&gt;
は記号列 $xz$ による $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
$q_{0}=q_{I}$, $q_{k}\in F$ であるから、$xz$($=xy^{0}z$) は $\mathautomaton{A}$ に受理される。&lt;br /&gt;
&lt;br /&gt;
$m\gt 0$ のときを示す。&lt;br /&gt;
&lt;br /&gt;
$q_{i}=q_{i+j}$ に注意すると、$(q_{i+j}, a_{i+j+1}, q_{i+1})\in \Delta$ である。&lt;br /&gt;
$$Q_{x}\overbrace{Q_{y}\dots Q_{y}}^{m\text{個}}Q_{z}=q_{0}, \dots, q_{i}, \overbrace{q_{i+1}, \dots, q_{i+j}, q_{i+1}, \dots, q_{i+j}}^{\text{$q_{i+1}, \dots, q_{i+j}$ の反復が $m$回}}, q_{i+j+1}, \dots, q_{k}$$&lt;br /&gt;
は記号列 $xy^{m}z$ による $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
$q_{0}=q_{I}$, $q_{k}\in F$ であるから、$xy^{m}z$ は $\mathautomaton{A}$ に受理される。 &lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
===  反復補題の補足 ===&lt;br /&gt;
本稿の反復補題の $|xy|\leq n$ という条件を外したものも反復補題と呼ばれる。&lt;br /&gt;
反復補題の証明中において、$w$ の部分列を考えたことがそれ以外の条件の証明に対して非本質的であることに注意すると、&lt;br /&gt;
$|xy|\leq n$ という条件が余計であると考えられるからであろう。&lt;br /&gt;
&lt;br /&gt;
==  $\emptyword$ 動作なしの有限オートマトン ==&lt;br /&gt;
この項では&lt;br /&gt;
'''$\emptyword$ 動作なしの有限オートマトン(finite automaton without $\emptyword$-transitions)'''&lt;br /&gt;
について述べる．&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=$\emptyword$ 動作なしの有限オートマトン |label=def-finite_automaton_non_emptyword }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が&lt;br /&gt;
次の条件を満たすとき、&lt;br /&gt;
'''$\mathautomaton{A}$ は $\emptyword$ 動作なしの有限オートマトン(finite automaton without $\emptyword$-transitions)である'''と言う:&lt;br /&gt;
* $(q, a, q')\in \Delta$ に対して $a=\emptyword$ ならば $q=q'$&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=prop-finite_automaton_non_emptyword }}&lt;br /&gt;
任意の有限オートマトンに対して、それと等価な $\emptyword$ 動作なしの有限オートマトンが存在する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ==== {{ref |type=prop |label=prop-finite_automaton_non_emptyword }} の証明 ==== --&amp;gt;&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ を有限オートマトンとする。&lt;br /&gt;
&amp;lt;!-- $\mathautomaton{A}$ が $\emptyword$ 動作なしの有限オートマトンであれば，示すことはない。 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$q\in Q$, $a\in \Sigma$ にたいして、集合 $\mathof{C}{q, a}$ を次のように定める:&lt;br /&gt;
\[ \mathof{C}{q, a}=\mathsetintension{(q, a, q')}{ \text{記号列 $a$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する}}. \]&lt;br /&gt;
&lt;br /&gt;
$\mathof{C_{\emptyword}}{q_{I}}$ を次のように定義する:&lt;br /&gt;
\[\mathof{C_{\emptyword}}{q_{I}}=\mathsetintension{q'\in Q}{\text{記号列 } \emptyword \text{ による } q_{I} \text{ から } q' \text{ への } \mathautomaton{A} \text{ の状態遷移が存在する} }. \]&lt;br /&gt;
&lt;br /&gt;
次のように集合 $\Delta'_{0}$, $\Delta'_{\emptyword}$ および $\Delta'$ を次のように定める:&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\Delta'_{0}&amp;amp;=\bigcup_{q\in Q, a\in \Sigma} \mathof{C}{q, a}, \\&lt;br /&gt;
\Delta'_{\emptyword}&amp;amp;=\mathsetintension{(q, \emptyword, q)}{q\in Q}, \\&lt;br /&gt;
\Delta'&amp;amp;=\Delta'_{0}\cup \Delta'_{\emptyword}.&lt;br /&gt;
\end{align*}&lt;br /&gt;
また、&lt;br /&gt;
\[F'=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
F, &amp;amp; \text{if } F\cap\mathof{C_{\emptyword}}{q_{I}}=\emptyset, \\&lt;br /&gt;
F \cup \mathsetextension{q_{I}}, &amp;amp; \text{if } F\cap\mathof{C_{\emptyword}}{q_{I}}\neq\emptyset.&lt;br /&gt;
\end{cases}&lt;br /&gt;
\]&lt;br /&gt;
とする。&lt;br /&gt;
このとき$\mathautomaton{A}'=(Q, \Sigma, \Delta', q_{I}, F')$ は $\emptyword$ 動作なしの有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
記号列 $w\neq\emptyword$ に対して、以下が同値であることを示す:&lt;br /&gt;
# 記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する&lt;br /&gt;
# 記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在する&lt;br /&gt;
&lt;br /&gt;
次のように集合 $\Delta_{\emptyword}$ および $\Delta_{0}$  を次のように定める。&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\Delta_{\emptyword}&amp;amp;=\mathsetintension{(q, a, q')\in \Delta}{a=\emptyword\text{ かつ }q\neq q'}, \\&lt;br /&gt;
\Delta_{0}&amp;amp;=\Delta\setminus\Delta_{\emptyword}.&lt;br /&gt;
\end{align*}&lt;br /&gt;
以下 $\Delta_{0} \subseteq \Delta'_{0}$ に注意する。&lt;br /&gt;
&lt;br /&gt;
1 $\Rightarrow$ 2:&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在すると仮定する。&lt;br /&gt;
$\left|w\right|$ に対する帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|=1$ のとき:&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在することから $(q, w, q')\in \mathof{C}{q, w}$。&lt;br /&gt;
よって、$(q, w, q')\in \Delta'$。よって、$q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|\gt 1$ のとき: $w=w_{0}a$ とおく（ただし、$a\in\Sigma$）。&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在することから&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{k}$ （ただし、各 $i=1, \dots, k$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）。&lt;br /&gt;
# すべての $i\in \{1, \dots, k\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$。&lt;br /&gt;
# $q_{0}=q$, $q_{k}=q'$。&lt;br /&gt;
&lt;br /&gt;
を満たす状態の列 $q_{0}, q_{1}, \dots, q_{k}$ と記号の列 $a_{1}, a_{2}, \dots, a_{k}$が存在する&lt;br /&gt;
（ただし、$k\geq l$）。&lt;br /&gt;
このとき、$w_{0}=a_{1}\dots a_{k_{0}}$, $a=a_{k_{0}+1}$, $1\leq k_{0}\lt k$ を満たす $k_{0}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
すると、$q=q_{0}, q_{1}, \dots, q_{k_{0}}$ は記号列 $w_{0}$ による $q$ から $q_{k_{0}}$ への $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
また、$q_{k_{0}}, q_{k_{0}+1}, \dots, q_{k}=q'$ は記号列 $a$ による $q_{k_{0}}$ から $q'$ への $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から&lt;br /&gt;
記号列 $w_{0}$ による $q$ から $q_{k_{0}}$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
また、記号列 $a$ による $q_{k_{0}}$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在することから $(q_{k_{0}}, a, q')\in \mathof{C}{q_{k_{0}}, a}$。ゆえに、記号列 $w=w_{0}a$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
2 $\Rightarrow$ 1:&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在すると仮定する。&lt;br /&gt;
$\left|w\right|$ に対する帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|=1$ のとき:&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在することから&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{k}$ （ただし、各 $i=1, \dots, k$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）。&lt;br /&gt;
# すべての $i\in \{1, \dots, k\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta'$。&lt;br /&gt;
# $q_{0}=q$, $q_{k}=q'$。&lt;br /&gt;
&lt;br /&gt;
を満たす状態の列 $q_{0}, q_{1}, \dots, q_{k}$ と記号の列 $a_{1}, a_{2}, \dots, a_{k}$が存在する&lt;br /&gt;
（ただし、$k\geq l$）。&lt;br /&gt;
$\left|w\right|=1$ であるから、&lt;br /&gt;
\[a_{i}=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
w &amp;amp; i=k_{0} \\&lt;br /&gt;
\emptyword &amp;amp; i\neq k_{0}&lt;br /&gt;
\end{cases}&lt;br /&gt;
\]&lt;br /&gt;
を満たす $1\leq k_{0}$ が存在する。このとき、$\Delta'$ の定義から &lt;br /&gt;
\[q_{i}=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
q &amp;amp; i\lt k_{0} \\&lt;br /&gt;
q' &amp;amp; k_{0}\leq i&lt;br /&gt;
\end{cases}&lt;br /&gt;
\]&lt;br /&gt;
であって、$(q, w, q')\in \Delta'_{0}$ である。&lt;br /&gt;
$\Delta'_{0}$ の定義から $(q, w, q')\in \mathof{C}{q, w}$。&lt;br /&gt;
これは記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在することを意味する。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|\gt 1$ のとき: $w=w_{0}a$ とおく（ただし、$a\in\Sigma$）。&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在することから&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{k}$ （ただし、各 $i=1, \dots, k$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）。&lt;br /&gt;
# すべての $i\in \{1, \dots, k\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$。&lt;br /&gt;
# $q_{0}=q$, $q_{k}=q'$。&lt;br /&gt;
&lt;br /&gt;
を満たす状態の列 $q_{0}, q_{1}, \dots, q_{k}$ と記号の列 $a_{1}, a_{2}, \dots, a_{k}$が存在する&lt;br /&gt;
（ただし、$k\geq l$）。&lt;br /&gt;
このとき、$w_{0}=a_{1}\dots a_{k_{0}}$, $a=a_{k_{0}+1}$, $1\leq k_{0}\lt k$ を満たす $k_{0}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
すると、$q=q_{0}, q_{1}, \dots, q_{k_{0}}$ は記号列 $w_{0}$ による $q$ から $q_{k_{0}}$ への $\mathautomaton{A}'$ の状態遷移である。&lt;br /&gt;
また、$q_{k_{0}}, q_{k_{0}+1}, \dots, q_{k}=q'$ は記号列 $a$ による $q_{k_{0}}$ から $q'$ への $\mathautomaton{A}'$ の状態遷移である。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から&lt;br /&gt;
記号列 $w_{0}$ による $q$ から $q_{k_{0}}$ への $\mathautomaton{A}$ の状態遷移が存在し、&lt;br /&gt;
また、記号列 $a$ による $q_{k_{0}}$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する。ゆえに、記号列 $w=w_{0}a$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
以上を踏まえて、$L(\mathautomaton{A})=L(\mathautomaton{A}')$ を示す。&lt;br /&gt;
&lt;br /&gt;
$w\in L(\mathautomaton{A})$ を仮定する。&lt;br /&gt;
$w=\emptyword$ のとき、$F\cap\mathof{C_{\emptyword}}{q_{I}}\neq\emptyset$ である。&lt;br /&gt;
ゆえに、$q_{I}\in F'$。$(q_{I}, \emptyword, q_{I})\in \Delta'$ に注意すると、&lt;br /&gt;
$\emptyword$ による $q_{I}$ から $q_{I}$ への $\mathautomaton{A}'$ の状態遷移が存在するので、&lt;br /&gt;
$\emptyword\in L(\mathautomaton{A}')$。&lt;br /&gt;
&lt;br /&gt;
$w\neq \emptyword$ のとき、&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q\in F$ への $\mathautomaton{A}$ の状態遷移が存在することから、&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q\in F'$ への $\mathautomaton{A}'$ の状態遷移が存在することが速やかにわかる。ゆえに $w\in L(\mathautomaton{A}')$。&lt;br /&gt;
&lt;br /&gt;
以上より $L(\mathautomaton{A})\subseteq L(\mathautomaton{A}')$。&lt;br /&gt;
&lt;br /&gt;
$w\in L(\mathautomaton{A}')$ を仮定する。&lt;br /&gt;
$w=\emptyword$ のとき、$(q_{I}, \emptyword, q_{I})\in \Delta'$ かつ $q_{I}\in F'$ である。&lt;br /&gt;
&lt;br /&gt;
$F\cap\mathof{C_{\emptyword}}{q_{I}}=\emptyset$ のとき、$q_{I}\notin F$。また、$F=F'$ である。&lt;br /&gt;
まとめて、$q_{I}\notin F=F'\ni q_{I}$。これは矛盾である。&lt;br /&gt;
よって、$F\cap\mathof{C_{\emptyword}}{q_{I}}\neq\emptyset$ である。&lt;br /&gt;
ゆえに、$q\in \mathof{C_{\emptyword}}{q_{I}}$, $q\in F$ を満たす状態 $q\in Q$ が存在する。&lt;br /&gt;
$q\in \mathof{C_{\emptyword}}{q_{I}}$ であるから、&lt;br /&gt;
$\emptyword$ による $q_{I}$ から $q$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
$q\in F$ であるから $\emptyword\in L(\mathautomaton{A}')$。&lt;br /&gt;
&lt;br /&gt;
$w\neq \emptyword$ のとき、&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q\in F$ への $\mathautomaton{A}'$ の状態遷移が存在することから、&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q\in F'$ への $\mathautomaton{A}$ の状態遷移が存在することが速やかにわかる。&lt;br /&gt;
&lt;br /&gt;
以上より $L(\mathautomaton{A}')\subseteq L(\mathautomaton{A})$。&lt;br /&gt;
&lt;br /&gt;
$L(\mathautomaton{A})\subseteq L(\mathautomaton{A}')$ より$L(\mathautomaton{A})=L(\mathautomaton{A}')$。&lt;br /&gt;
$\mathautomaton{A}'$ が $\emptyword$ 動作なしの有限オートマトンであるから、命題の主張を得る。&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
==  決定性有限オートマトン ==&lt;br /&gt;
この項では'''決定性有限オートマトン(deterministic finite automaton)'''について述べる．&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=決定性有限オートマトン |label=def-deterministic_finite_automaton }}&lt;br /&gt;
$\emptyword$ 動作なしの有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が次の条件を満たすとき、'''$\mathautomaton{A}$ は決定性有限オートマトン(deterministic finite automaton)である'''と言う:&lt;br /&gt;
&lt;br /&gt;
* 各 $(q, a) \in Q\times \Sigma$ という組に対して、$(q, a, q')\in \Delta$ という形の元は高々一個&lt;br /&gt;
&lt;br /&gt;
有限オートマトン $\mathautomaton{A}$ が決定性有限オートマトンとは限らないことを明示したいときに、&lt;br /&gt;
'''$\mathautomaton{A}$ は非決定性有限オートマトン(nondeterministic finite automaton)である'''と言うことがある。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=prop-finite_automaton_non_emptyword }}&lt;br /&gt;
任意の有限オートマトンに対して、それと等価な決定性有限オートマトンが存在する。&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
Now writing.......&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
==  参考文献 ==&lt;br /&gt;
# 新屋 良磨、オートマトン理論再考、コンピュータ ソフトウェア、2017、34 巻、3 号、p. 3_3-3_35、公開日 2017/09/25、Print ISSN 0289-6540、[https://doi.org/10.11309/jssst.34.3_3]、[https://www.jstage.jst.go.jp/article/jssst/34/3/34_3_3/_article/-char/ja]&lt;br /&gt;
# 五十嵐喜英他、『[数理情報科学シリーズ ２４ オートマトンと形式言語の基礎]』、牧野書店、2011&lt;br /&gt;
# Martin Aigner,Guenter M. Ziegler,Karl H. Hofmann, [&amp;quot;Proofs from THE BOOK&amp;quot;], Springer, 2004&lt;br /&gt;
&lt;br /&gt;
== 脚注 ==&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 関連項目  ==&lt;br /&gt;
* [[形式言語]]&lt;br /&gt;
* [[正規表現]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
|+ Chomsky階層&lt;br /&gt;
! 文法のタイプ&lt;br /&gt;
! 言語のクラス&lt;br /&gt;
! 計算モデル&lt;br /&gt;
|-&lt;br /&gt;
! タイプ0&lt;br /&gt;
| [[句構造言語]]&lt;br /&gt;
| [[Turingマシン]]&lt;br /&gt;
|-&lt;br /&gt;
! タイプ1&lt;br /&gt;
| [[文脈依存言語]]&lt;br /&gt;
| [[線形有界オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ2&lt;br /&gt;
| [[文脈自由言語]]&lt;br /&gt;
| [[プッシュダウン・オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ3&lt;br /&gt;
| [[正規言語]]&lt;br /&gt;
| [[有限オートマトン]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E6%9C%89%E9%99%90%E3%82%AA%E3%83%BC%E3%83%88%E3%83%9E%E3%83%88%E3%83%B3&amp;diff=6803</id>
		<title>有限オートマトン</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E6%9C%89%E9%99%90%E3%82%AA%E3%83%BC%E3%83%88%E3%83%9E%E3%83%88%E3%83%B3&amp;diff=6803"/>
		<updated>2021-05-29T09:18:37Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: Fix a typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:形式言語理論|ユウゲンオートマトン]]&lt;br /&gt;
[[Category:計算理論|ユウゲンオートマトン]]&lt;br /&gt;
{{begin |preamble}}&lt;br /&gt;
&amp;lt;!-- 参考文献 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 定理環境 --&amp;gt;&lt;br /&gt;
{{newtheorem |type=theorem |display=定理}}&lt;br /&gt;
{{newtheorem |type=lemma |display=補題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=definition |display=定義 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=prop |display=命題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=example |display=例 |family=theorem }}&lt;br /&gt;
&amp;lt;!-- MathJax commands --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\newcommand{\mathsetextension}[1]{%&lt;br /&gt;
\left\{ #1 \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathsetintension}[2]{%&lt;br /&gt;
\left\{ #1 \left| #2 \right. \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathof}[2]{%&lt;br /&gt;
\mathop{#1}\left(#2\right)%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathderiv}{\mathrel{\mathop{\Rightarrow}}^{*}}&lt;br /&gt;
\newcommand{\mathgen}{\rightsquigarrow}&lt;br /&gt;
\newcommand{\emptyword}{\varepsilon}&lt;br /&gt;
\newcommand{\kleenecl}[1]{{#1}^{*}}&lt;br /&gt;
\newcommand{\interpret}[1]{[\![#1]\!]}&lt;br /&gt;
\newcommand{\mathautomaton}[1]{\mathcal{#1}}&lt;br /&gt;
\newcommand{\mathnat}{\mathbb{N}}&lt;br /&gt;
\newcommand{\qed}{\blacksquare}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
{{end |preamble}}&lt;br /&gt;
'''有限オートマトン（finite automaton）'''とは[[正規言語]]を受理する計算モデルである。&lt;br /&gt;
&lt;br /&gt;
以下、項目[[形式言語]]において定められている言語上の演算などについては特に断らず用いる。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{TOC |align=right |noautonum=1 }}&amp;lt;!-- 右寄せ連番無し目次をここに表示 --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  有限オートマトンの導入  ==&lt;br /&gt;
この節では'''有限オートマトン'''やその周辺の重要な諸概念を定義する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=有限オートマトン |label=def-finite_automaton }}&lt;br /&gt;
'''有限オートマトン（finite automaton）'''とは&lt;br /&gt;
# '''状態集合(a set of states)'''と呼ばれる有限集合 $Q$&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# '''遷移関係(transition relation)'''と呼ばれる集合 $\Delta \subseteq Q\times (\Sigma \cup \{\emptyword\})  \times Q$ &lt;br /&gt;
# '''開始状態(initial state)'''と呼ばれる $q_{I}\in Q$&lt;br /&gt;
# '''受理状態(accepting state)'''や'''最終状態(final state)'''と呼ばれる集合 $F\subseteq Q$&lt;br /&gt;
&lt;br /&gt;
の５つ組 $(Q, \Sigma, \Delta, q_{I}, F)$ である。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=有限オートマトンの受理する言語 |label=def-language_accepted_finite_automaton }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ と&lt;br /&gt;
記号列 $w \in \kleenecl{\Sigma}$ について、&lt;br /&gt;
次の２条件を満たす状態の列 $q_{0}, q_{1}, \dots, q_{n}$ を&lt;br /&gt;
'''記号列 $w$ による $q_{0}$ から $q_{n}$ への $\mathautomaton{A}$ の状態遷移'''と言う。&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{n}$ （ただし、各 $i=1, \dots, n$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）&lt;br /&gt;
# すべての $i\in \{1, \dots n\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ による $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
$q_{0}, q_{1}, \dots, q_{n}$ であって $q_{0} = q_{I}$, $q_{n}\in F$ を満たすものが存在するとき、&lt;br /&gt;
「有限オートマトン $\mathautomaton{A}$ が&lt;br /&gt;
'''記号列 $w$ を受理する'''」と言う。&lt;br /&gt;
&lt;br /&gt;
有限オートマトン $\mathautomaton{A}$ が受理する&lt;br /&gt;
記号列全体のことを '''有限オートマトン $\mathautomaton{A}$ の受理する言語'''&lt;br /&gt;
と言い、$L(\mathautomaton{A})$ と書く。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=等価な有限オートマトン |label=def-equivalence_finite_automaton }}&lt;br /&gt;
'''有限オートマトン $\mathautomaton{A}$ と 有限オートマトン $\mathautomaton{A'}$ が等価である'''とは，&lt;br /&gt;
$L(\mathautomaton{A})=L(\mathautomaton{A'})$&lt;br /&gt;
を満たすことである。&lt;br /&gt;
&lt;br /&gt;
==  有限オートマトンの例 ==&lt;br /&gt;
この節では有限オートマトンの例を紹介する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列全体を受理する有限オートマトン |label=ex-FA_all }}[[ファイル:Fig FA all.svg|サムネイル]]&lt;br /&gt;
\begin{align*}Q&amp;amp;=\mathsetextension{q_{I}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{I}), (q_{I}, 1, q_{I})}\\ F&amp;amp;= \mathsetextension{q_{I}}\end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。また、$\mathautomaton{A}$ は決定性有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
$0$ と $1$ からなる有限記号列をすべて受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ のみを受理する有限オートマトン |label=ex-0-1-only }}[[ファイル:Fig- 0-1-only.svg|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{1}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{2}), (q_{1}, 1, q_{2})}\\ F&amp;amp;=\mathsetextension{q_{1}} \end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は$0$ と $1$ のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$ をちょうど3個含む記号列全体を受理する有限オートマトン |label=ex-only-three-one}}[[ファイル:Fig FA only three one.svg|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}, q_{3}} \\ \Sigma&amp;amp;=\mathsetextension{0, 1} \\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{I}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{2}), (q_{2}, 0, q_{2}), (q_{2}, 1, q_{3}), (q_{3}, 0, q_{3})} \\ F&amp;amp;=\mathsetextension{q_{3}} \end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$ をちょうど3個含む記号列のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列全体を受理する有限オートマトン その1 |label=ex-one-less-than-three-1 }}[[ファイル:Fig FA one less than three 1.svg|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}, q_{3}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{I}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{2}), (q_{2}, 0, q_{2}), (q_{2}, 1, q_{3}), (q_{3}, 0, q_{3}), (q_{I}, \emptyword, q_{3}), (q_{1}, \emptyword, q_{3}), (q_{2}, \emptyword, q_{3})}\\ F&amp;amp;= \mathsetextension{q_{3}}\end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列全体を受理する有限オートマトン その2 |label=ex-one-less-than-three-2 }}[[ファイル:Fig FA one less than three 2.png|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}, q_{3}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, \emptyword, q_{I}), (q_{I}, 0, q_{I}), (q_{I}, 0, q_{1}), (q_{I}, 0, q_{2}), (q_{I}, 0, q_{3}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{2}), (q_{2}, 0, q_{2}), (q_{2}, 1, q_{3})}\\ F&amp;amp;= \mathsetextension{q_{I},q_{3}}\end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ も&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=自然数の二進表現全体を受理する有限オートマトン |label=ex-bi }}[[ファイル:Fig FA bi.svg|サムネイル]]&lt;br /&gt;
\begin{align*}Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{2}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{1})}\\ F&amp;amp;= \mathsetextension{q_{1}, q_{2}}\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
自然数の二進表現のみを受理する。&lt;br /&gt;
&lt;br /&gt;
==  正規言語、正規表現との関係 ==&lt;br /&gt;
この節では有限オートマトン、[[正規言語]]および[[正規表現]]の関係を述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=theorem |label=thm-Regular_Lang }}&lt;br /&gt;
言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $L=\interpret{\alpha}$ なる正規表現 $\alpha$ が存在する。&lt;br /&gt;
# $L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
&lt;br /&gt;
この定理の証明は、項目[[正規言語#thm-regularandNFA|正規言語]]を参照せよ。&lt;br /&gt;
&lt;br /&gt;
==  反復補題（ポンピング補題） ==&lt;br /&gt;
この節では'''反復補題（pumping lemma）'''について述べる&amp;lt;ref name=&amp;quot;THE-BOOK&amp;quot;&amp;gt;Martin Aigner,Guenter M. Ziegler,Karl H. Hofmann, [&amp;quot;Proofs from THE BOOK&amp;quot;], Springer, 2004 によると、一般に定理が'''補題'''と呼ばれる条件は「広範囲の応用例を持つ」「一見して完璧に明らか」「証明も含めて美しい」の三条件を満たすことである。&amp;lt;/ref&amp;gt;。&lt;br /&gt;
反復補題は'''ポンピング補題'''や'''ポンプ補題'''と呼ばれることもある。&lt;br /&gt;
&lt;br /&gt;
反復補題は[[正規言語#not_regular_lang|ある記号列の集合が正規言語ではない証明]]などに用いられる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=lemma |name=反復補題 |label=pumping_lemma }}&lt;br /&gt;
状態集合の大きさが $n$ の有限オートマトン $\mathautomaton{A}$ に記号列 $w$ が受理されるとする。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|\gt n$ であるとき、次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w=xyz$。&lt;br /&gt;
# $\left|y\right|\gt 0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n$。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- '''{{ref |type=lemma |label=pumping_lemma }}の証明''' --&amp;gt;&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ に $w$ が受理されるとする。&lt;br /&gt;
以下 $n:=\left|Q\right|$, $l:=\left|w\right|$, $l\gt n$ とする。&lt;br /&gt;
&lt;br /&gt;
有限オートマトン $\mathautomaton{A}$ に $w$ が受理されることから、&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{k}$ （ただし、各 $i=1, \dots, k$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）。&lt;br /&gt;
# すべての $i\in \{1, \dots, k\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$。&lt;br /&gt;
# $q_{0}=q_{I}$, $q_{k}\in F$。&lt;br /&gt;
&lt;br /&gt;
を満たす状態の列 $q_{0}, q_{1}, \dots, q_{k}$ と記号の列 $a_{1}, a_{2}, \dots, a_{k}$が存在する&lt;br /&gt;
（ただし、$k\geq l$）。&lt;br /&gt;
&lt;br /&gt;
$l\gt n$ から長さが $n$ の $w$ の[[形式言語#prefix_suffix|接頭語]] $w_{0}$ が存在する。&lt;br /&gt;
すると、$q_{0}, q_{1}, \dots, q_{k}$&lt;br /&gt;
の部分列であって、$w_{0}$ による $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
$$q_{0}, q_{1}, \dots, q_{k_{0}}$$&lt;br /&gt;
が存在する（ただし $n\leq k_{0}\leq k$）。&lt;br /&gt;
&lt;br /&gt;
すると、鳩ノ巣原理より&lt;br /&gt;
# $(q_{i-1}, a_{i}, q_{i})$, $(q_{i+j-1}, a_{i+j}, q_{i+j})\in \Delta$&lt;br /&gt;
（ただし、$a_{i}\neq\emptyword$, $a_{i+j}\neq\emptyword$）&lt;br /&gt;
# $q_{i}=q_{i+j}$&lt;br /&gt;
&lt;br /&gt;
という条件を満たす自然数の組 $(i, j)$ （ただし $0\leq i\leq k_{0}$, $0&amp;lt; j\leq k_{0}$）が少なくとも１つ存在する。&lt;br /&gt;
以下その $i$, $j$ を固定する。&lt;br /&gt;
&lt;br /&gt;
\begin{align*} x&amp;amp;:=a_{1}a_{2}\ldots a_{i}, \\ y&amp;amp;:=a_{i+1}a_{i+2}\ldots a_{i+j}, \\ z&amp;amp;:=a_{i+j+1}a_{i+j+2}\ldots a_{k},\end{align*}&lt;br /&gt;
とすると、$w=xyz$ である。また、$a_{i+j}\neq\emptyword$ であるから $\left|y\right|\gt 0$。&lt;br /&gt;
さらに、定義より $xy$ は $w_{0}$ の部分列であるから、$|xy|\leq n$。&lt;br /&gt;
&lt;br /&gt;
任意の$m\in\mathnat$に対して，記号列 $xy^{m}z$ が $\mathautomaton{A}$ に受理されることを示す。&lt;br /&gt;
&lt;br /&gt;
以下，記号列 $x$, $y$, $z$ による $\mathautomaton{A}$ の状態遷移をそれぞれ&lt;br /&gt;
\begin{align*}Q_{x}&amp;amp;=q_{0}, \dots, q_{i}, \\ Q_{y}&amp;amp;=q_{i+1}, \dots, q_{i+j}, \\ Q_{z}&amp;amp;=q_{i+j+1}, \dots, q_{k}, \end{align*}&lt;br /&gt;
と書くことにする。&lt;br /&gt;
&lt;br /&gt;
$m=0$ のときを示す。&lt;br /&gt;
&lt;br /&gt;
$q_{i}=q_{i+j}$ に注意すると、$(q_{i}, a_{i+j+1}, q_{i+j+1})\in \Delta$ である。&lt;br /&gt;
よって、&lt;br /&gt;
$$Q_{x}Q_{z}=q_{0}, \dots, q_{i}, q_{i+j+1}, \dots, q_{k}$$&lt;br /&gt;
は記号列 $xz$ による $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
$q_{0}=q_{I}$, $q_{k}\in F$ であるから、$xz$($=xy^{0}z$) は $\mathautomaton{A}$ に受理される。&lt;br /&gt;
&lt;br /&gt;
$m\gt 0$ のときを示す。&lt;br /&gt;
&lt;br /&gt;
$q_{i}=q_{i+j}$ に注意すると、$(q_{i+j}, a_{i+j+1}, q_{i+1})\in \Delta$ である。&lt;br /&gt;
$$Q_{x}\overbrace{Q_{y}\dots Q_{y}}^{m\text{個}}Q_{z}=q_{0}, \dots, q_{i}, \overbrace{q_{i+1}, \dots, q_{i+j}, q_{i+1}, \dots, q_{i+j}}^{\text{$q_{i+1}, \dots, q_{i+j}$ の反復が $m$回}}, q_{i+j+1}, \dots, q_{k}$$&lt;br /&gt;
は記号列 $xy^{m}z$ による $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
$q_{0}=q_{I}$, $q_{k}\in F$ であるから、$xy^{m}z$ は $\mathautomaton{A}$ に受理される。 &lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
===  反復補題の補足 ===&lt;br /&gt;
本稿の反復補題の $|xy|\leq n$ という条件を外したものも反復補題と呼ばれる。&lt;br /&gt;
反復補題の証明中において、$w$ の部分列を考えたことがそれ以外の条件の証明に対して非本質的であることに注意すると、&lt;br /&gt;
$|xy|\leq n$ という条件が余計であると考えられるからであろう。&lt;br /&gt;
&lt;br /&gt;
==  $\emptyword$ 動作なしの有限オートマトン ==&lt;br /&gt;
この項では&lt;br /&gt;
'''$\emptyword$ 動作なしの有限オートマトン(finite automaton without $\emptyword$-transitions)'''&lt;br /&gt;
について述べる．&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=$\emptyword$ 動作なしの有限オートマトン |label=def-finite_automaton_non_emptyword }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が&lt;br /&gt;
次の条件を満たすとき、&lt;br /&gt;
'''$\mathautomaton{A}$ は $\emptyword$ 動作なしの有限オートマトン(finite automaton without $\emptyword$-transitions)である'''と言う:&lt;br /&gt;
* $(q, a, q')\in \Delta$ に対して $a=\emptyword$ ならば $q=q'$&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=prop-finite_automaton_non_emptyword }}&lt;br /&gt;
任意の有限オートマトンに対して、それと等価な $\emptyword$ 動作なしの有限オートマトンが存在する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ==== {{ref |type=prop |label=prop-finite_automaton_non_emptyword }} の証明 ==== --&amp;gt;&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ を有限オートマトンとする。&lt;br /&gt;
&amp;lt;!-- $\mathautomaton{A}$ が $\emptyword$ 動作なしの有限オートマトンであれば，示すことはない。 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$q\in Q$, $a\in \Sigma$ にたいして、集合 $\mathof{C}{q, a}$ を次のように定める:&lt;br /&gt;
\[ \mathof{C}{q, a}=\mathsetintension{(q, a, q')}{ \text{記号列 $a$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する}}. \]&lt;br /&gt;
&lt;br /&gt;
$\mathof{C_{\emptyword}}{q_{I}}$ を次のように定義する:&lt;br /&gt;
\[\mathof{C_{\emptyword}}{q_{I}}=\mathsetintension{q'\in Q}{\text{記号列 } \emptyword \text{ による } q_{I} \text{ から } q' \text{ への } \mathautomaton{A} \text{ の状態遷移が存在する} }. \]&lt;br /&gt;
&lt;br /&gt;
次のように集合 $\Delta'_{0}$, $\Delta'_{\emptyword}$ および $\Delta'$ を次のように定める:&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\Delta'_{0}&amp;amp;=\bigcup_{q\in Q, a\in \Sigma} \mathof{C}{q, a}, \\&lt;br /&gt;
\Delta'_{\emptyword}&amp;amp;=\mathsetintension{(q, \emptyword, q)}{q\in Q}, \\&lt;br /&gt;
\Delta'&amp;amp;=\Delta'_{0}\cup \Delta'_{\emptyword}.&lt;br /&gt;
\end{align*}&lt;br /&gt;
また、&lt;br /&gt;
\[F'=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
F, &amp;amp; \text{if } F\cap\mathof{C_{\emptyword}}{q_{I}}=\emptyset, \\&lt;br /&gt;
F \cup \mathsetextension{q_{I}}, &amp;amp; \text{if } F\cap\mathof{C_{\emptyword}}{q_{I}}\neq\emptyset.&lt;br /&gt;
\end{cases}&lt;br /&gt;
\]&lt;br /&gt;
とする。&lt;br /&gt;
このとき$\mathautomaton{A}'=(Q, \Sigma, \Delta', q_{I}, F')$ は $\emptyword$ 動作なしの有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
記号列 $w\neq\emptyword$ に対して、以下が同値であることを示す:&lt;br /&gt;
# 記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する&lt;br /&gt;
# 記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在する&lt;br /&gt;
&lt;br /&gt;
次のように集合 $\Delta_{\emptyword}$ および $\Delta_{0}$  を次のように定める。&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\Delta_{\emptyword}&amp;amp;=\mathsetintension{(q, a, q')\in \Delta}{a=\emptyword\text{ かつ }q\neq q'}, \\&lt;br /&gt;
\Delta_{0}&amp;amp;=\Delta\setminus\Delta_{\emptyword}.&lt;br /&gt;
\end{align*}&lt;br /&gt;
以下 $\Delta_{0} \subseteq \Delta'_{0}$ に注意する。&lt;br /&gt;
&lt;br /&gt;
1 $\Rightarrow$ 2:&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在すると仮定する。&lt;br /&gt;
$\left|w\right|$ に対する帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|=1$ のとき:&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在することから $(q, w, q')\in \mathof{C}{q, w}$。&lt;br /&gt;
よって、$(q, w, q')\in \Delta'$。よって、$q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|\gt 1$ のとき: $w=w_{0}a$ とおく（ただし、$a\in\Sigma$）。&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在することから&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{k}$ （ただし、各 $i=1, \dots, k$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）。&lt;br /&gt;
# すべての $i\in \{1, \dots, k\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$。&lt;br /&gt;
# $q_{0}=q$, $q_{k}=q'$。&lt;br /&gt;
&lt;br /&gt;
を満たす状態の列 $q_{0}, q_{1}, \dots, q_{k}$ と記号の列 $a_{1}, a_{2}, \dots, a_{k}$が存在する&lt;br /&gt;
（ただし、$k\geq l$）。&lt;br /&gt;
このとき、$w_{0}=a_{1}\dots a_{k_{0}}$, $a=a_{k_{0}+1}$, $1\leq k_{0}\lt k$ を満たす $k_{0}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
すると、$q=q_{0}, q_{1}, \dots, q_{k_{0}}$ は記号列 $w_{0}$ による $q$ から $q_{k_{0}}$ への $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
また、$q_{k_{0}}, q_{k_{0}+1}, \dots, q_{k}=q'$ は記号列 $a$ による $q_{k_{0}}$ から $q'$ への $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から&lt;br /&gt;
記号列 $w_{0}$ による $q$ から $q_{k_{0}}$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
また、記号列 $a$ による $q_{k_{0}}$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在することから $(q_{k_{0}}, a, q')\in \mathof{C}{q_{k_{0}}, a}$。ゆえに、記号列 $w=w_{0}a$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
2 $\Rightarrow$ 1:&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在すると仮定する。&lt;br /&gt;
$\left|w\right|$ に対する帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|=1$ のとき:&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在することから&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{k}$ （ただし、各 $i=1, \dots, k$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）。&lt;br /&gt;
# すべての $i\in \{1, \dots, k\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta'$。&lt;br /&gt;
# $q_{0}=q$, $q_{k}=q'$。&lt;br /&gt;
&lt;br /&gt;
を満たす状態の列 $q_{0}, q_{1}, \dots, q_{k}$ と記号の列 $a_{1}, a_{2}, \dots, a_{k}$が存在する&lt;br /&gt;
（ただし、$k\geq l$）。&lt;br /&gt;
$\left|w\right|=1$ であるから、&lt;br /&gt;
\[a_{i}=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
w &amp;amp; i=k_{0} \\&lt;br /&gt;
\emptyword &amp;amp; i\neq k_{0}&lt;br /&gt;
\end{cases}&lt;br /&gt;
\]&lt;br /&gt;
を満たす $1\leq k_{0}$ が存在する。このとき、$\Delta'$ の定義から &lt;br /&gt;
\[q_{i}=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
q &amp;amp; i\lt k_{0} \\&lt;br /&gt;
q' &amp;amp; k_{0}\leq i&lt;br /&gt;
\end{cases}&lt;br /&gt;
\]&lt;br /&gt;
であって、$(q, w, q')\in \Delta'_{0}$ である。&lt;br /&gt;
$\Delta'_{0}$ の定義から $(q, w, q')\in \mathof{C}{q, w}$。&lt;br /&gt;
これは記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在することを意味する。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|\gt 1$ のとき: $w=w_{0}a$ とおく（ただし、$a\in\Sigma$）。&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在することから&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{k}$ （ただし、各 $i=1, \dots, k$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）。&lt;br /&gt;
# すべての $i\in \{1, \dots, k\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$。&lt;br /&gt;
# $q_{0}=q$, $q_{k}=q'$。&lt;br /&gt;
&lt;br /&gt;
を満たす状態の列 $q_{0}, q_{1}, \dots, q_{k}$ と記号の列 $a_{1}, a_{2}, \dots, a_{k}$が存在する&lt;br /&gt;
（ただし、$k\geq l$）。&lt;br /&gt;
このとき、$w_{0}=a_{1}\dots a_{k_{0}}$, $a=a_{k_{0}+1}$, $1\leq k_{0}\lt k$ を満たす $k_{0}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
すると、$q=q_{0}, q_{1}, \dots, q_{k_{0}}$ は記号列 $w_{0}$ による $q$ から $q_{k_{0}}$ への $\mathautomaton{A}'$ の状態遷移である。&lt;br /&gt;
また、$q_{k_{0}}, q_{k_{0}+1}, \dots, q_{k}=q'$ は記号列 $a$ による $q_{k_{0}}$ から $q'$ への $\mathautomaton{A}'$ の状態遷移である。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から&lt;br /&gt;
記号列 $w_{0}$ による $q$ から $q_{k_{0}}$ への $\mathautomaton{A}$ の状態遷移が存在し、&lt;br /&gt;
また、記号列 $a$ による $q_{k_{0}}$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する。ゆえに、記号列 $w=w_{0}a$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
以上を踏まえて、$L(\mathautomaton{A})=L(\mathautomaton{A}')$ を示す。&lt;br /&gt;
&lt;br /&gt;
$w\in L(\mathautomaton{A})$ を仮定する。&lt;br /&gt;
$w=\emptyword$ のとき、$F\cap\mathof{C_{\emptyword}}{q_{I}}\neq\emptyset$ である。&lt;br /&gt;
ゆえに、$q_{I}\in F'$。$(q_{I}, \emptyword, q_{I})\in \Delta'$ に注意すると、&lt;br /&gt;
$\emptyword$ による $q_{I}$ から $q_{I}$ への $\mathautomaton{A}'$ の状態遷移が存在するので、&lt;br /&gt;
$\emptyword\in L(\mathautomaton{A}')$。&lt;br /&gt;
&lt;br /&gt;
$w\neq \emptyword$ のとき、&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q\in F$ への $\mathautomaton{A}$ の状態遷移が存在することから、&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q\in F'$ への $\mathautomaton{A}'$ の状態遷移が存在することが速やかにわかる。ゆえに $w\in L(\mathautomaton{A}')$。&lt;br /&gt;
&lt;br /&gt;
以上より $L(\mathautomaton{A})\subseteq L(\mathautomaton{A}')$。&lt;br /&gt;
&lt;br /&gt;
$w\in L(\mathautomaton{A}')$ を仮定する。&lt;br /&gt;
$w=\emptyword$ のとき、$(q_{I}, \emptyword, q_{I})\in \Delta'$ かつ $q_{I}\in F'$ である。&lt;br /&gt;
&lt;br /&gt;
$F\cap\mathof{C_{\emptyword}}{q_{I}}=\emptyset$ のとき、$q_{I}\notin F$。また、$F=F'$ である。&lt;br /&gt;
まとめて、$q_{I}\notin F=F'\ni q_{I}$。これは矛盾である。&lt;br /&gt;
よって、$F\cap\mathof{C_{\emptyword}}{q_{I}}\neq\emptyset$ である。&lt;br /&gt;
ゆえに、$q\in \mathof{C_{\emptyword}}{q_{I}}$, $q\in F$ を満たす状態 $q\in Q$ が存在する。&lt;br /&gt;
$q\in \mathof{C_{\emptyword}}{q_{I}}$ であるから、&lt;br /&gt;
$\emptyword$ による $q_{I}$ から $q$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
$q\in F$ であるから $\emptyword\in L(\mathautomaton{A}')$。&lt;br /&gt;
&lt;br /&gt;
$w\neq \emptyword$ のとき、&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q\in F$ への $\mathautomaton{A}'$ の状態遷移が存在することから、&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q\in F'$ への $\mathautomaton{A}$ の状態遷移が存在することが速やかにわかる。&lt;br /&gt;
&lt;br /&gt;
以上より $L(\mathautomaton{A}')\subseteq L(\mathautomaton{A})$。&lt;br /&gt;
&lt;br /&gt;
$L(\mathautomaton{A})\subseteq L(\mathautomaton{A}')$ より$L(\mathautomaton{A})=L(\mathautomaton{A}')$。&lt;br /&gt;
$\mathautomaton{A}'$ が $\emptyword$ 動作なしの有限オートマトンであるから、命題の主張を得る。&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
==  決定性有限オートマトン ==&lt;br /&gt;
この項では'''決定性有限オートマトン(deterministic finite automaton)'''について述べる．&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=決定性有限オートマトン |label=def-deterministic_finite_automaton }}&lt;br /&gt;
$\emptyword$ 動作なしの有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が次の条件を満たすとき、'''$\mathautomaton{A}$ は決定性有限オートマトン(deterministic finite automaton)である'''と言う:&lt;br /&gt;
&lt;br /&gt;
* 各 $(q, a) \in Q\times \Sigma$ という組に対して、$(q, a, q')\in \Delta$ という形の元は高々一個&lt;br /&gt;
&lt;br /&gt;
有限オートマトン $\mathautomaton{A}$ が決定性有限オートマトンとは限らないことを明示したいときに、&lt;br /&gt;
'''$\mathautomaton{A}$ は非決定性有限オートマトン(nondeterministic finite automaton)である'''と言うことがある。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=prop-finite_automaton_non_emptyword }}&lt;br /&gt;
任意の有限オートマトンに対して、それと等価な決定性有限オートマトンが存在する。&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
Now writing.......&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
==  参考文献 ==&lt;br /&gt;
# 新屋 良磨、オートマトン理論再考、コンピュータ ソフトウェア、2017、34 巻、3 号、p. 3_3-3_35、公開日 2017/09/25、Print ISSN 0289-6540、[https://doi.org/10.11309/jssst.34.3_3]、[https://www.jstage.jst.go.jp/article/jssst/34/3/34_3_3/_article/-char/ja]&lt;br /&gt;
# 五十嵐喜英他、『[数理情報科学シリーズ ２４ オートマトンと形式言語の基礎]』、牧野書店、2011&lt;br /&gt;
# Martin Aigner,Guenter M. Ziegler,Karl H. Hofmann, [&amp;quot;Proofs from THE BOOK&amp;quot;], Springer, 2004&lt;br /&gt;
&lt;br /&gt;
====== 脚注 ======&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 関連項目  ==&lt;br /&gt;
* [[形式言語]]&lt;br /&gt;
* [[正規表現]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
|+ Chomsky階層&lt;br /&gt;
! 文法のタイプ&lt;br /&gt;
! 言語のクラス&lt;br /&gt;
! 計算モデル&lt;br /&gt;
|-&lt;br /&gt;
! タイプ0&lt;br /&gt;
| [[句構造言語]]&lt;br /&gt;
| [[Turingマシン]]&lt;br /&gt;
|-&lt;br /&gt;
! タイプ1&lt;br /&gt;
| [[文脈依存言語]]&lt;br /&gt;
| [[線形有界オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ2&lt;br /&gt;
| [[文脈自由言語]]&lt;br /&gt;
| [[プッシュダウン・オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ3&lt;br /&gt;
| [[正規言語]]&lt;br /&gt;
| [[有限オートマトン]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E6%9C%89%E9%99%90%E3%82%AA%E3%83%BC%E3%83%88%E3%83%9E%E3%83%88%E3%83%B3&amp;diff=6802</id>
		<title>有限オートマトン</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E6%9C%89%E9%99%90%E3%82%AA%E3%83%BC%E3%83%88%E3%83%9E%E3%83%88%E3%83%B3&amp;diff=6802"/>
		<updated>2021-05-29T09:11:50Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: Move 決定性有限オートマトン&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:形式言語理論|ユウゲンオートマトン]]&lt;br /&gt;
[[Category:計算理論|ユウゲンオートマトン]]&lt;br /&gt;
{{begin |preamble}}&lt;br /&gt;
&amp;lt;!-- 参考文献 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 定理環境 --&amp;gt;&lt;br /&gt;
{{newtheorem |type=theorem |display=定理}}&lt;br /&gt;
{{newtheorem |type=lemma |display=補題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=definition |display=定義 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=prop |display=命題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=example |display=例 |family=theorem }}&lt;br /&gt;
&amp;lt;!-- MathJax commands --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\newcommand{\mathsetextension}[1]{%&lt;br /&gt;
\left\{ #1 \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathsetintension}[2]{%&lt;br /&gt;
\left\{ #1 \left| #2 \right. \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathof}[2]{%&lt;br /&gt;
\mathop{#1}\left(#2\right)%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathderiv}{\mathrel{\mathop{\Rightarrow}}^{*}}&lt;br /&gt;
\newcommand{\mathgen}{\rightsquigarrow}&lt;br /&gt;
\newcommand{\emptyword}{\varepsilon}&lt;br /&gt;
\newcommand{\kleenecl}[1]{{#1}^{*}}&lt;br /&gt;
\newcommand{\interpret}[1]{[\![#1]\!]}&lt;br /&gt;
\newcommand{\mathautomaton}[1]{\mathcal{#1}}&lt;br /&gt;
\newcommand{\mathnat}{\mathbb{N}}&lt;br /&gt;
\newcommand{\qed}{\blacksquare}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
{{end |preamble}}&lt;br /&gt;
'''有限オートマトン（finite automaton）'''とは[[正規言語]]を受理する計算モデルである。&lt;br /&gt;
&lt;br /&gt;
以下、項目[[形式言語]]において定められている言語上の演算などについては特に断らず用いる。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{TOC |align=right |noautonum=1 }}&amp;lt;!-- 右寄せ連番無し目次をここに表示 --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  有限オートマトンの導入  ==&lt;br /&gt;
この節では'''有限オートマトン'''やその周辺の重要な諸概念を定義する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=有限オートマトン |label=def-finite_automaton }}&lt;br /&gt;
'''有限オートマトン（finite automaton）'''とは&lt;br /&gt;
# '''状態集合(a set of states)'''と呼ばれる有限集合 $Q$&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# '''遷移関係(transition relation)'''と呼ばれる集合 $\Delta \subseteq Q\times (\Sigma \cup \{\emptyword\})  \times Q$ &lt;br /&gt;
# '''開始状態(initial state)'''と呼ばれる $q_{I}\in Q$&lt;br /&gt;
# '''受理状態(accepting state)'''や'''最終状態(final state)'''と呼ばれる集合 $F\subseteq Q$&lt;br /&gt;
&lt;br /&gt;
の５つ組 $(Q, \Sigma, \Delta, q_{I}, F)$ である。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=有限オートマトンの受理する言語 |label=def-language_accepted_finite_automaton }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ と&lt;br /&gt;
記号列 $w \in \kleenecl{\Sigma}$ について、&lt;br /&gt;
次の２条件を満たす状態の列 $q_{0}, q_{1}, \dots, q_{n}$ を&lt;br /&gt;
'''記号列 $w$ による $q_{0}$ から $q_{n}$ への $\mathautomaton{A}$ の状態遷移'''と言う。&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{n}$ （ただし、各 $i=1, \dots, n$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）&lt;br /&gt;
# すべての $i\in \{1, \dots n\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ による $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
$q_{0}, q_{1}, \dots, q_{n}$ であって $q_{0} = q_{I}$, $q_{n}\in F$ を満たすものが存在するとき、&lt;br /&gt;
「有限オートマトン $\mathautomaton{A}$ が&lt;br /&gt;
'''記号列 $w$ を受理する'''」と言う。&lt;br /&gt;
&lt;br /&gt;
有限オートマトン $\mathautomaton{A}$ が受理する&lt;br /&gt;
記号列全体のことを '''有限オートマトン $\mathautomaton{A}$ の受理する言語'''&lt;br /&gt;
と言い、$L(\mathautomaton{A})$ と書く。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=等価な有限オートマトン |label=def-equivalence_finite_automaton }}&lt;br /&gt;
'''有限オートマトン $\mathautomaton{A}$ と 有限オートマトン $\mathautomaton{A'}$ が等価である'''とは，&lt;br /&gt;
$L(\mathautomaton{A})=L(\mathautomaton{A'})$&lt;br /&gt;
を満たすことである。&lt;br /&gt;
&lt;br /&gt;
==  有限オートマトンの例 ==&lt;br /&gt;
この節では有限オートマトンの例を紹介する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列全体を受理する有限オートマトン |label=ex-FA_all }}[[ファイル:Fig FA all.svg|サムネイル]]&lt;br /&gt;
\begin{align*}Q&amp;amp;=\mathsetextension{q_{I}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{I}), (q_{I}, 1, q_{I})}\\ F&amp;amp;= \mathsetextension{q_{I}}\end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。また、$\mathautomaton{A}$ は決定性有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
$0$ と $1$ からなる有限記号列をすべて受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ のみを受理する有限オートマトン |label=ex-0-1-only }}[[ファイル:Fig- 0-1-only.svg|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{1}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{2}), (q_{1}, 1, q_{2})}\\ F&amp;amp;=\mathsetextension{q_{1}} \end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は$0$ と $1$ のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$ をちょうど3個含む記号列全体を受理する有限オートマトン |label=ex-only-three-one}}[[ファイル:Fig FA only three one.svg|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}, q_{3}} \\ \Sigma&amp;amp;=\mathsetextension{0, 1} \\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{I}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{2}), (q_{2}, 0, q_{2}), (q_{2}, 1, q_{3}), (q_{3}, 0, q_{3})} \\ F&amp;amp;=\mathsetextension{q_{3}} \end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$ をちょうど3個含む記号列のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列全体を受理する有限オートマトン その1 |label=ex-one-less-than-three-1 }}[[ファイル:Fig FA one less than three 1.svg|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}, q_{3}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{I}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{2}), (q_{2}, 0, q_{2}), (q_{2}, 1, q_{3}), (q_{3}, 0, q_{3}), (q_{I}, \emptyword, q_{3}), (q_{1}, \emptyword, q_{3}), (q_{2}, \emptyword, q_{3})}\\ F&amp;amp;= \mathsetextension{q_{3}}\end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列全体を受理する有限オートマトン その2 |label=ex-one-less-than-three-2 }}[[ファイル:Fig FA one less than three 2.png|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}, q_{3}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, \emptyword, q_{I}), (q_{I}, 0, q_{I}), (q_{I}, 0, q_{1}), (q_{I}, 0, q_{2}), (q_{I}, 0, q_{3}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{2}), (q_{2}, 0, q_{2}), (q_{2}, 1, q_{3})}\\ F&amp;amp;= \mathsetextension{q_{I},q_{3}}\end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ も&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=自然数の二進表現全体を受理する有限オートマトン |label=ex-bi }}[[ファイル:Fig FA bi.svg|サムネイル]]&lt;br /&gt;
\begin{align*}Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{2}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{1})}\\ F&amp;amp;= \mathsetextension{q_{1}, q_{2}}\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
自然数の二進表現のみを受理する。&lt;br /&gt;
&lt;br /&gt;
==  正規言語、正規表現との関係 ==&lt;br /&gt;
この節では有限オートマトン、[[正規言語]]および[[正規表現]]の関係を述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=theorem |label=thm-Regular_Lang }}&lt;br /&gt;
言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $L=\interpret{\alpha}$ なる正規表現 $\alpha$ が存在する。&lt;br /&gt;
# $L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
&lt;br /&gt;
この定理の証明は、項目[[正規言語#thm-regularandNFA|正規言語]]を参照せよ。&lt;br /&gt;
&lt;br /&gt;
==  反復補題（ポンピング補題） ==&lt;br /&gt;
この節では'''反復補題（pumping lemma）'''について述べる&amp;lt;ref name=&amp;quot;THE-BOOK&amp;quot;&amp;gt;Martin Aigner,Guenter M. Ziegler,Karl H. Hofmann, [&amp;quot;Proofs from THE BOOK&amp;quot;], Springer, 2004 によると、一般に定理が'''補題'''と呼ばれる条件は「広範囲の応用例を持つ」「一見して完璧に明らか」「証明も含めて美しい」の三条件を満たすことである。&amp;lt;/ref&amp;gt;。&lt;br /&gt;
反復補題は'''ポンピング補題'''や'''ポンプ補題'''と呼ばれることもある。&lt;br /&gt;
&lt;br /&gt;
反復補題は[[正規言語#not_regular_lang|ある記号列の集合が正規言語ではない証明]]などに&lt;br /&gt;
よく用いられる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=lemma |name=反復補題 |label=pumping_lemma }}&lt;br /&gt;
状態集合の大きさが $n$ の有限オートマトン $\mathautomaton{A}$ に記号列 $w$ が受理されるとする。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|\gt n$ であるとき、次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w=xyz$。&lt;br /&gt;
# $\left|y\right|\gt 0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n$。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- '''{{ref |type=lemma |label=pumping_lemma }}の証明''' --&amp;gt;&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ に $w$ が受理されるとする。&lt;br /&gt;
以下 $n:=\left|Q\right|$, $l:=\left|w\right|$, $l\gt n$ とする。&lt;br /&gt;
&lt;br /&gt;
有限オートマトン $\mathautomaton{A}$ に $w$ が受理されることから、&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{k}$ （ただし、各 $i=1, \dots, k$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）。&lt;br /&gt;
# すべての $i\in \{1, \dots, k\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$。&lt;br /&gt;
# $q_{0}=q_{I}$, $q_{k}\in F$。&lt;br /&gt;
&lt;br /&gt;
を満たす状態の列 $q_{0}, q_{1}, \dots, q_{k}$ と記号の列 $a_{1}, a_{2}, \dots, a_{k}$が存在する&lt;br /&gt;
（ただし、$k\geq l$）。&lt;br /&gt;
&lt;br /&gt;
$l\gt n$ から長さが $n$ の $w$ の[[形式言語#prefix_suffix|接頭語]] $w_{0}$ が存在する。&lt;br /&gt;
すると、$q_{0}, q_{1}, \dots, q_{k}$&lt;br /&gt;
の部分列であって、$w_{0}$ による $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
$$q_{0}, q_{1}, \dots, q_{k_{0}}$$&lt;br /&gt;
が存在する（ただし $n\leq k_{0}\leq k$）。&lt;br /&gt;
&lt;br /&gt;
すると、鳩ノ巣原理より&lt;br /&gt;
# $(q_{i-1}, a_{i}, q_{i})$, $(q_{i+j-1}, a_{i+j}, q_{i+j})\in \Delta$&lt;br /&gt;
（ただし、$a_{i}\neq\emptyword$, $a_{i+j}\neq\emptyword$）&lt;br /&gt;
# $q_{i}=q_{i+j}$&lt;br /&gt;
&lt;br /&gt;
という条件を満たす自然数の組 $(i, j)$ （ただし $0\leq i\leq k_{0}$, $0&amp;lt; j\leq k_{0}$）が少なくとも１つ存在する。&lt;br /&gt;
以下その $i$, $j$ を固定する。&lt;br /&gt;
&lt;br /&gt;
\begin{align*} x&amp;amp;:=a_{1}a_{2}\ldots a_{i}, \\ y&amp;amp;:=a_{i+1}a_{i+2}\ldots a_{i+j}, \\ z&amp;amp;:=a_{i+j+1}a_{i+j+2}\ldots a_{k},\end{align*}&lt;br /&gt;
とすると、$w=xyz$ である。また、$a_{i+j}\neq\emptyword$ であるから $\left|y\right|\gt 0$。&lt;br /&gt;
さらに、定義より $xy$ は $w_{0}$ の部分列であるから、$|xy|\leq n$。&lt;br /&gt;
&lt;br /&gt;
任意の$m\in\mathnat$に対して，記号列 $xy^{m}z$ が $\mathautomaton{A}$ に受理されることを示す。&lt;br /&gt;
&lt;br /&gt;
以下，記号列 $x$, $y$, $z$ による $\mathautomaton{A}$ の状態遷移をそれぞれ&lt;br /&gt;
\begin{align*}Q_{x}&amp;amp;=q_{0}, \dots, q_{i}, \\ Q_{y}&amp;amp;=q_{i+1}, \dots, q_{i+j}, \\ Q_{z}&amp;amp;=q_{i+j+1}, \dots, q_{k}, \end{align*}&lt;br /&gt;
と書くことにする。&lt;br /&gt;
&lt;br /&gt;
$m=0$ のときを示す。&lt;br /&gt;
&lt;br /&gt;
$q_{i}=q_{i+j}$ に注意すると、$(q_{i}, a_{i+j+1}, q_{i+j+1})\in \Delta$ である。&lt;br /&gt;
よって、&lt;br /&gt;
$$Q_{x}Q_{z}=q_{0}, \dots, q_{i}, q_{i+j+1}, \dots, q_{k}$$&lt;br /&gt;
は記号列 $xz$ による $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
$q_{0}=q_{I}$, $q_{k}\in F$ であるから、$xz$($=xy^{0}z$) は $\mathautomaton{A}$ に受理される。&lt;br /&gt;
&lt;br /&gt;
$m\gt 0$ のときを示す。&lt;br /&gt;
&lt;br /&gt;
$q_{i}=q_{i+j}$ に注意すると、$(q_{i+j}, a_{i+j+1}, q_{i+1})\in \Delta$ である。&lt;br /&gt;
$$Q_{x}\overbrace{Q_{y}\dots Q_{y}}^{m\text{個}}Q_{z}=q_{0}, \dots, q_{i}, \overbrace{q_{i+1}, \dots, q_{i+j}, q_{i+1}, \dots, q_{i+j}}^{\text{$q_{i+1}, \dots, q_{i+j}$ の反復が $m$回}}, q_{i+j+1}, \dots, q_{k}$$&lt;br /&gt;
は記号列 $xy^{m}z$ による $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
$q_{0}=q_{I}$, $q_{k}\in F$ であるから、$xy^{m}z$ は $\mathautomaton{A}$ に受理される。 &lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
===  反復補題の補足 ===&lt;br /&gt;
本稿の反復補題の $|xy|\leq n$ という条件を外したものも反復補題と呼ばれる。&lt;br /&gt;
反復補題の証明中において、$w$ の部分列を考えたことがそれ以外の条件の証明に対して非本質的であることに注意すると、&lt;br /&gt;
$|xy|\leq n$ という条件が余計であると考えられるからであろう。&lt;br /&gt;
&lt;br /&gt;
==  $\emptyword$ 動作なしの有限オートマトン ==&lt;br /&gt;
この項では&lt;br /&gt;
'''$\emptyword$ 動作なしの有限オートマトン(finite automaton without $\emptyword$-transitions)'''&lt;br /&gt;
について述べる．&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=$\emptyword$ 動作なしの有限オートマトン |label=def-finite_automaton_non_emptyword }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が&lt;br /&gt;
次の条件を満たすとき、&lt;br /&gt;
'''$\mathautomaton{A}$ は $\emptyword$ 動作なしの有限オートマトン(finite automaton without $\emptyword$-transitions)である'''&lt;br /&gt;
と言う。&lt;br /&gt;
* $(q, a, q')\in \Delta$ に対して $a=\emptyword$ ならば $q=q'$&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=prop-finite_automaton_non_emptyword }}&lt;br /&gt;
任意の有限オートマトンに対して、&lt;br /&gt;
それと等価な $\emptyword$ 動作なしの有限オートマトンが存在する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ==== {{ref |type=prop |label=prop-finite_automaton_non_emptyword }} の証明 ==== --&amp;gt;&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ を有限オートマトンとする。&lt;br /&gt;
&amp;lt;!-- $\mathautomaton{A}$ が $\emptyword$ 動作なしの有限オートマトンであれば，示すことはない。 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$q\in Q$, $a\in \Sigma$ にたいして、集合 $\mathof{C}{q, a}$ を次のように定める:&lt;br /&gt;
\[ \mathof{C}{q, a}=\mathsetintension{(q, a, q')}{ \text{記号列 $a$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する}}. \]&lt;br /&gt;
&lt;br /&gt;
$\mathof{C_{\emptyword}}{q_{I}}$ を次のように定義する:&lt;br /&gt;
\[\mathof{C_{\emptyword}}{q_{I}}=\mathsetintension{q'\in Q}{\text{記号列 } \emptyword \text{ による } q_{I} \text{ から } q' \text{ への } \mathautomaton{A} \text{ の状態遷移が存在する} }. \]&lt;br /&gt;
&lt;br /&gt;
次のように集合 $\Delta'_{0}$, $\Delta'_{\emptyword}$ および $\Delta'$ を次のように定める:&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\Delta'_{0}&amp;amp;=\bigcup_{q\in Q, a\in \Sigma} \mathof{C}{q, a}, \\&lt;br /&gt;
\Delta'_{\emptyword}&amp;amp;=\mathsetintension{(q, \emptyword, q)}{q\in Q}, \\&lt;br /&gt;
\Delta'&amp;amp;=\Delta'_{0}\cup \Delta'_{\emptyword}.&lt;br /&gt;
\end{align*}&lt;br /&gt;
また、&lt;br /&gt;
\[F'=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
F, &amp;amp; \text{if } F\cap\mathof{C_{\emptyword}}{q_{I}}=\emptyset, \\&lt;br /&gt;
F \cup \mathsetextension{q_{I}}, &amp;amp; \text{if } F\cap\mathof{C_{\emptyword}}{q_{I}}\neq\emptyset.&lt;br /&gt;
\end{cases}&lt;br /&gt;
\]&lt;br /&gt;
とする。&lt;br /&gt;
このとき$\mathautomaton{A}'=(Q, \Sigma, \Delta', q_{I}, F')$ は $\emptyword$ 動作なしの有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
記号列 $w\neq\emptyword$ に対して、以下が同値であることを示す:&lt;br /&gt;
# 記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する&lt;br /&gt;
# 記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在する&lt;br /&gt;
&lt;br /&gt;
次のように集合 $\Delta_{\emptyword}$ および $\Delta_{0}$  を次のように定める。&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\Delta_{\emptyword}&amp;amp;=\mathsetintension{(q, a, q')\in \Delta}{a=\emptyword\text{ かつ }q\neq q'}, \\&lt;br /&gt;
\Delta_{0}&amp;amp;=\Delta\setminus\Delta_{\emptyword}.&lt;br /&gt;
\end{align*}&lt;br /&gt;
以下 $\Delta_{0} \subseteq \Delta'_{0}$ に注意する。&lt;br /&gt;
&lt;br /&gt;
1 $\Rightarrow$ 2:&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在すると仮定する。&lt;br /&gt;
$\left|w\right|$ に対する帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|=1$ のとき:&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在することから $(q, w, q')\in \mathof{C}{q, w}$。&lt;br /&gt;
よって、$(q, w, q')\in \Delta'$。よって、$q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|\gt 1$ のとき: $w=w_{0}a$ とおく（ただし、$a\in\Sigma$）。&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在することから&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{k}$ （ただし、各 $i=1, \dots, k$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）。&lt;br /&gt;
# すべての $i\in \{1, \dots, k\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$。&lt;br /&gt;
# $q_{0}=q$, $q_{k}=q'$。&lt;br /&gt;
&lt;br /&gt;
を満たす状態の列 $q_{0}, q_{1}, \dots, q_{k}$ と記号の列 $a_{1}, a_{2}, \dots, a_{k}$が存在する&lt;br /&gt;
（ただし、$k\geq l$）。&lt;br /&gt;
このとき、$w_{0}=a_{1}\dots a_{k_{0}}$, $a=a_{k_{0}+1}$, $1\leq k_{0}\lt k$ を満たす $k_{0}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
すると、$q=q_{0}, q_{1}, \dots, q_{k_{0}}$ は記号列 $w_{0}$ による $q$ から $q_{k_{0}}$ への $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
また、$q_{k_{0}}, q_{k_{0}+1}, \dots, q_{k}=q'$ は記号列 $a$ による $q_{k_{0}}$ から $q'$ への $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から&lt;br /&gt;
記号列 $w_{0}$ による $q$ から $q_{k_{0}}$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
また、記号列 $a$ による $q_{k_{0}}$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在することから $(q_{k_{0}}, a, q')\in \mathof{C}{q_{k_{0}}, a}$。ゆえに、記号列 $w=w_{0}a$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
2 $\Rightarrow$ 1:&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在すると仮定する。&lt;br /&gt;
$\left|w\right|$ に対する帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|=1$ のとき:&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在することから&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{k}$ （ただし、各 $i=1, \dots, k$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）。&lt;br /&gt;
# すべての $i\in \{1, \dots, k\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta'$。&lt;br /&gt;
# $q_{0}=q$, $q_{k}=q'$。&lt;br /&gt;
&lt;br /&gt;
を満たす状態の列 $q_{0}, q_{1}, \dots, q_{k}$ と記号の列 $a_{1}, a_{2}, \dots, a_{k}$が存在する&lt;br /&gt;
（ただし、$k\geq l$）。&lt;br /&gt;
$\left|w\right|=1$ であるから、&lt;br /&gt;
\[a_{i}=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
w &amp;amp; i=k_{0} \\&lt;br /&gt;
\emptyword &amp;amp; i\neq k_{0}&lt;br /&gt;
\end{cases}&lt;br /&gt;
\]&lt;br /&gt;
を満たす $1\leq k_{0}$ が存在する。このとき、$\Delta'$ の定義から &lt;br /&gt;
\[q_{i}=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
q &amp;amp; i\lt k_{0} \\&lt;br /&gt;
q' &amp;amp; k_{0}\leq i&lt;br /&gt;
\end{cases}&lt;br /&gt;
\]&lt;br /&gt;
であって、$(q, w, q')\in \Delta'_{0}$ である。&lt;br /&gt;
$\Delta'_{0}$ の定義から $(q, w, q')\in \mathof{C}{q, w}$。&lt;br /&gt;
これは記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在することを意味する。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|\gt 1$ のとき: $w=w_{0}a$ とおく（ただし、$a\in\Sigma$）。&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在することから&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{k}$ （ただし、各 $i=1, \dots, k$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）。&lt;br /&gt;
# すべての $i\in \{1, \dots, k\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$。&lt;br /&gt;
# $q_{0}=q$, $q_{k}=q'$。&lt;br /&gt;
&lt;br /&gt;
を満たす状態の列 $q_{0}, q_{1}, \dots, q_{k}$ と記号の列 $a_{1}, a_{2}, \dots, a_{k}$が存在する&lt;br /&gt;
（ただし、$k\geq l$）。&lt;br /&gt;
このとき、$w_{0}=a_{1}\dots a_{k_{0}}$, $a=a_{k_{0}+1}$, $1\leq k_{0}\lt k$ を満たす $k_{0}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
すると、$q=q_{0}, q_{1}, \dots, q_{k_{0}}$ は記号列 $w_{0}$ による $q$ から $q_{k_{0}}$ への $\mathautomaton{A}'$ の状態遷移である。&lt;br /&gt;
また、$q_{k_{0}}, q_{k_{0}+1}, \dots, q_{k}=q'$ は記号列 $a$ による $q_{k_{0}}$ から $q'$ への $\mathautomaton{A}'$ の状態遷移である。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から&lt;br /&gt;
記号列 $w_{0}$ による $q$ から $q_{k_{0}}$ への $\mathautomaton{A}$ の状態遷移が存在し、&lt;br /&gt;
また、記号列 $a$ による $q_{k_{0}}$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する。ゆえに、記号列 $w=w_{0}a$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
以上を踏まえて、$L(\mathautomaton{A})=L(\mathautomaton{A}')$ を示す。&lt;br /&gt;
&lt;br /&gt;
$w\in L(\mathautomaton{A})$ を仮定する。&lt;br /&gt;
$w=\emptyword$ のとき、$F\cap\mathof{C_{\emptyword}}{q_{I}}\neq\emptyset$ である。&lt;br /&gt;
ゆえに、$q_{I}\in F'$。$(q_{I}, \emptyword, q_{I})\in \Delta'$ に注意すると、&lt;br /&gt;
$\emptyword$ による $q_{I}$ から $q_{I}$ への $\mathautomaton{A}'$ の状態遷移が存在するので、&lt;br /&gt;
$\emptyword\in L(\mathautomaton{A}')$。&lt;br /&gt;
&lt;br /&gt;
$w\neq \emptyword$ のとき、&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q\in F$ への $\mathautomaton{A}$ の状態遷移が存在することから、&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q\in F'$ への $\mathautomaton{A}'$ の状態遷移が存在することが速やかにわかる。ゆえに $w\in L(\mathautomaton{A}')$。&lt;br /&gt;
&lt;br /&gt;
以上より $L(\mathautomaton{A})\subseteq L(\mathautomaton{A}')$。&lt;br /&gt;
&lt;br /&gt;
$w\in L(\mathautomaton{A}')$ を仮定する。&lt;br /&gt;
$w=\emptyword$ のとき、$(q_{I}, \emptyword, q_{I})\in \Delta'$ かつ $q_{I}\in F'$ である。&lt;br /&gt;
&lt;br /&gt;
$F\cap\mathof{C_{\emptyword}}{q_{I}}=\emptyset$ のとき、$q_{I}\notin F$。また、$F=F'$ である。&lt;br /&gt;
まとめて、$q_{I}\notin F=F'\ni q_{I}$。これは矛盾である。&lt;br /&gt;
よって、$F\cap\mathof{C_{\emptyword}}{q_{I}}\neq\emptyset$ である。&lt;br /&gt;
ゆえに、$q\in \mathof{C_{\emptyword}}{q_{I}}$, $q\in F$ を満たす状態 $q\in Q$ が存在する。&lt;br /&gt;
$q\in \mathof{C_{\emptyword}}{q_{I}}$ であるから、&lt;br /&gt;
$\emptyword$ による $q_{I}$ から $q$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
$q\in F$ であるから $\emptyword\in L(\mathautomaton{A}')$。&lt;br /&gt;
&lt;br /&gt;
$w\neq \emptyword$ のとき、&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q\in F$ への $\mathautomaton{A}'$ の状態遷移が存在することから、&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q\in F'$ への $\mathautomaton{A}$ の状態遷移が存在することが速やかにわかる。&lt;br /&gt;
&lt;br /&gt;
以上より $L(\mathautomaton{A}')\subseteq L(\mathautomaton{A})$。&lt;br /&gt;
&lt;br /&gt;
$L(\mathautomaton{A})\subseteq L(\mathautomaton{A}')$ より$L(\mathautomaton{A})=L(\mathautomaton{A}')$。&lt;br /&gt;
$\mathautomaton{A}'$ が $\emptyword$ 動作なしの有限オートマトンであるから、命題の主張を得る。&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
==  決定性有限オートマトン ==&lt;br /&gt;
この項では'''決定性有限オートマトン(deterministic finite automaton)'''について述べる．&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=決定性有限オートマトン |label=def-deterministic_finite_automaton }}&lt;br /&gt;
$\emptyword$ 動作なしの有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が次の条件を満たすとき、'''$\mathautomaton{A}$ は決定性有限オートマトン(deterministic finite automaton)である'''と言う。&lt;br /&gt;
- 各 $(q, a) \in Q\times \Sigma$ という組に対して、$(q, a, q')\in \Delta$ という形の元は高々一個&lt;br /&gt;
&lt;br /&gt;
有限オートマトン $\mathautomaton{A}$ が決定性有限オートマトンとは限らないことを明示したいときに、&lt;br /&gt;
'''$\mathautomaton{A}$ は非決定性有限オートマトン(nondeterministic finite automaton)である'''と言うことがある。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=prop-finite_automaton_non_emptyword }}&lt;br /&gt;
任意の有限オートマトンに対して、それと等価な決定性有限オートマトンが存在する。&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
Now writing.......&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
==  参考文献 ==&lt;br /&gt;
# 新屋 良磨、オートマトン理論再考、コンピュータ ソフトウェア、2017、34 巻、3 号、p. 3_3-3_35、公開日 2017/09/25、Print ISSN 0289-6540、[https://doi.org/10.11309/jssst.34.3_3]、[https://www.jstage.jst.go.jp/article/jssst/34/3/34_3_3/_article/-char/ja]&lt;br /&gt;
# 五十嵐喜英他、『[数理情報科学シリーズ ２４ オートマトンと形式言語の基礎]』、牧野書店、2011&lt;br /&gt;
# Martin Aigner,Guenter M. Ziegler,Karl H. Hofmann, [&amp;quot;Proofs from THE BOOK&amp;quot;], Springer, 2004&lt;br /&gt;
&lt;br /&gt;
====== 脚注 ======&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 関連項目  ==&lt;br /&gt;
* [[形式言語]]&lt;br /&gt;
* [[正規表現]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
|+ Chomsky階層&lt;br /&gt;
! 文法のタイプ&lt;br /&gt;
! 言語のクラス&lt;br /&gt;
! 計算モデル&lt;br /&gt;
|-&lt;br /&gt;
! タイプ0&lt;br /&gt;
| [[句構造言語]]&lt;br /&gt;
| [[Turingマシン]]&lt;br /&gt;
|-&lt;br /&gt;
! タイプ1&lt;br /&gt;
| [[文脈依存言語]]&lt;br /&gt;
| [[線形有界オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ2&lt;br /&gt;
| [[文脈自由言語]]&lt;br /&gt;
| [[プッシュダウン・オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ3&lt;br /&gt;
| [[正規言語]]&lt;br /&gt;
| [[有限オートマトン]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E6%AD%A3%E8%A6%8F%E8%A8%80%E8%AA%9E&amp;diff=6801</id>
		<title>正規言語</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E6%AD%A3%E8%A6%8F%E8%A8%80%E8%AA%9E&amp;diff=6801"/>
		<updated>2021-05-29T03:53:58Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: Fix typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{TOC |align=right |noautonum=1 }}&amp;lt;!-- 右寄せ連番無し目次をここに表示 --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
[[Category:形式言語理論|セイキゲンゴ]]&lt;br /&gt;
{{begin |preamble}}&lt;br /&gt;
&amp;lt;!-- 参考文献 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 定理環境 --&amp;gt;&lt;br /&gt;
{{newtheorem |type=theorem |display=定理}}&lt;br /&gt;
{{newtheorem |type=lemma |display=補題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=definition |display=定義 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=prop |display=命題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=example |display=例 |family=theorem }}&lt;br /&gt;
&amp;lt;!-- MathJax commands --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\newcommand{\mathsetextension}[1]{%&lt;br /&gt;
\left\{ #1 \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathsetintension}[2]{%&lt;br /&gt;
\left\{ #1 \left| #2 \right.\right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathof}[2]{%&lt;br /&gt;
\mathop{#1}\left(#2\right)%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathderiv}{\mathrel{\mathop{\Rightarrow}^{*}}}&lt;br /&gt;
\newcommand{\mathgen}{\rightsquigarrow}&lt;br /&gt;
\newcommand{\mathgenfun}[1]{\mathbf{#1}}&lt;br /&gt;
\newcommand{\mirrorim}[1]{\overleftarrow{#1}}&lt;br /&gt;
\newcommand{\emptyword}{\varepsilon}&lt;br /&gt;
\newcommand{\kleenecl}[1]{{#1}^{*}}&lt;br /&gt;
\newcommand{\interpret}[1]{[\![#1]\!]}&lt;br /&gt;
\newcommand{\mathautomaton}[1]{\mathcal{#1}}&lt;br /&gt;
\newcommand{\mathnat}{\mathbb{N}}&lt;br /&gt;
\newcommand{\qed}{\blacksquare}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
{{end |preamble}}&lt;br /&gt;
'''正規言語（regular language）'''とは右線形文法(right linear grammar)または左線形文法(left linear grammar)によって定められる形式言語である。&lt;br /&gt;
&lt;br /&gt;
右線形文法は句構造文法の一種であるから、&lt;br /&gt;
右線形言語は[[句構造言語]]の一種である。&lt;br /&gt;
&lt;br /&gt;
また、右線形文法は文脈自由文法の一種であるから、&lt;br /&gt;
右線形言語は[[文脈自由言語]]の一種である。&lt;br /&gt;
&lt;br /&gt;
以下、項目[[形式言語]]、[[句構造言語]]において定められている言語上の演算や文法の等価性の定義などについては特に断らず用いる。&lt;br /&gt;
&lt;br /&gt;
==  正規言語の導入 ==&lt;br /&gt;
この節では'''正規言語'''を定義する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=definition |name=右線形文法 |label=def-right_linear_grammar }}&lt;br /&gt;
'''右線形文法（right linear grammar）'''とは&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# $\Sigma$ と互いに素な'''変数記号（variable）'''の空でない有限集合 $V$&lt;br /&gt;
# '''生成規則（production rule）'''と呼ばれる有限集合 $R \subseteq V \times (\kleenecl{\Sigma}V)\cup (\kleenecl{\Sigma})$&lt;br /&gt;
# '''開始記号(start symbol)'''または'''初期記号'''と呼ばれる $S\in V$&lt;br /&gt;
&lt;br /&gt;
の４つ組$(V, \Sigma, R, S)$である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
これは、[[句構造言語#def-phrase_structure_grammar | 句構造文法]]の一種である。また、[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]の一種である。&lt;br /&gt;
&lt;br /&gt;
[[句構造言語]]のときと同様、$\Sigma$ の元を'''終端記号(terminal)'''、$V$ の元を'''非終端記号(non-terminal)'''と呼ぶことも多い。&lt;br /&gt;
&lt;br /&gt;
以下では、元$(A, \alpha)\in R$ のことを$A\mathgen\alpha$と書く。&lt;br /&gt;
&lt;br /&gt;
[[句構造言語#def-derivation | 導出]]、[[句構造言語#def-phrase_structure_lang | 生成される言語]]などは&lt;br /&gt;
句構造言語と同様に定義される。&lt;br /&gt;
&lt;br /&gt;
'''正規言語'''とは何らかの右線形文法によって生成される言語のことを言う。&lt;br /&gt;
&lt;br /&gt;
==  正規言語の例 ==&lt;br /&gt;
この節では正規言語の例を紹介する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列全体 |label=ex-all_lang }}&lt;br /&gt;
$V=\left\{ S \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen\emptyword, S\mathgen 0S, S\mathgen 1S \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
$0$ と $1$ からなる有限記号列全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、$0$ と $1$ からなる有限記号列全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる。&lt;br /&gt;
&lt;br /&gt;
\begin{gather*}&lt;br /&gt;
S \Rightarrow \emptyword \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 0\emptyword = 0 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 1\emptyword = 1 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 00\emptyword = 00 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 01\emptyword = 01 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 10\emptyword = 10 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 11\emptyword = 11 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 000S \Rightarrow 000\emptyword = 000 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 001S \Rightarrow 001\emptyword = 001 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 010S \Rightarrow 010\emptyword = 010 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 011S \Rightarrow 011\emptyword = 011 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 100S \Rightarrow 100\emptyword = 100 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 101S \Rightarrow 101\emptyword = 101 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 110S \Rightarrow 110\emptyword = 110 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 111S \Rightarrow 111\emptyword = 111&lt;br /&gt;
\end{gather*}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体 |label=ex-only_three_one_lang }}&lt;br /&gt;
$V=\left\{ S, A_{1}, A_{2}, A_{3} \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen 0S, S\mathgen 1A_{1}, A_{1}\mathgen 0A_{1}, A_{1}\mathgen 1A_{2}, A_{2}\mathgen 0A_{2}, A_{2}\mathgen 1A_{3}, A_{3}\mathgen 0A_{3}, A_{3}\mathgen \emptyword \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
S &amp;amp;\Rightarrow 1A_{1} \Rightarrow 11A_{2} \Rightarrow 111A_{3} \Rightarrow 111\emptyword = 111 \\&lt;br /&gt;
S &amp;amp;\Rightarrow 0S \\&lt;br /&gt;
&amp;amp;\Rightarrow 01A_{1} \Rightarrow 010A_{1} \Rightarrow 0100A_{1} \\&lt;br /&gt;
&amp;amp;\Rightarrow 01001A_{2} \Rightarrow 010010A_{2} \Rightarrow 0100100A_{2} \Rightarrow 01001000A_{2} \\&lt;br /&gt;
&amp;amp;\Rightarrow 010010001A_{3} \Rightarrow 0100100010A_{3} \Rightarrow 01001000100A_{3} \Rightarrow 010010001000A_{3} \Rightarrow 0100100010000A_{3} \Rightarrow 0100100010000\emptyword =0100100010000&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=自然数の二進表現全体 |label=ex-bi_lang }}&lt;br /&gt;
$V=\left\{ S, A_{1} \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen 0, S\mathgen 1A_{1}, A_{1}\mathgen 0A_{1}, A_{1}\mathgen 1A_{1}, A_{1}\mathgen \emptyword \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
自然数の二進表現全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、自然数の二進表現全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる&lt;br /&gt;
&lt;br /&gt;
\begin{gather*}&lt;br /&gt;
S \Rightarrow 0 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 1\emptyword = 1 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 10\emptyword = 10 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 11\emptyword = 11 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 100\emptyword = 100 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 101\emptyword = 101 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 100\emptyword = 110 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 111\emptyword = 111 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 1000A_{1} \Rightarrow 1000\emptyword = 1000 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 1001A_{1} \Rightarrow 1001\emptyword = 1001 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 1010A_{1} \Rightarrow 1010\emptyword = 1010 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 1011A_{1} \Rightarrow 1011\emptyword = 1011 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 1100A_{1} \Rightarrow 1100\emptyword = 1100 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 1101A_{1} \Rightarrow 1101\emptyword = 1101 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 1110A_{1} \Rightarrow 1110\emptyword = 1110 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 1111A_{1} \Rightarrow 1111\emptyword = 1111&lt;br /&gt;
\end{gather*}&lt;br /&gt;
&lt;br /&gt;
==  正規表現、有限オートマトンとの関係 ==&lt;br /&gt;
この節では正規言語、[[正規表現]]および[[有限オートマトン]]との関係を述べる。以下では[[正規表現]]と[[有限オートマトン]]の定義などは既知とする。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=theorem |label=thm-regularandNFA }}&lt;br /&gt;
言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $L=\interpret{\alpha}$ なる正規表現 $\alpha$ が存在する。&lt;br /&gt;
# $L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
この節ではこの定理を証明する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=lemma |label=lemma-of-thm-regularandNFA }}&lt;br /&gt;
正規言語 $G=(V, \Sigma, R, S)$ に対して、&lt;br /&gt;
$G$ と[[句構造言語#句構造文法の等価性 | 等価 ]]であって、&lt;br /&gt;
すべての生成規則の右辺が&lt;br /&gt;
$(\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
の元である右線形文法が存在する。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
正規言語 $G=(V, \Sigma, R, S)$ について、&lt;br /&gt;
$R=\{A_{0}\mathgen \alpha_{0}, \ldots, A_{n}\mathgen \alpha_{n}\}$ （ただし $n\in\mathnat$）&lt;br /&gt;
とする。&lt;br /&gt;
&lt;br /&gt;
$G_{i}=(V_{i}, \Sigma, R_{i}, S)$&lt;br /&gt;
（ただし $n=0, \ldots, n+1$）&lt;br /&gt;
を次のように定義する。&lt;br /&gt;
&lt;br /&gt;
* $G_{0}=G$&lt;br /&gt;
* $\alpha_{i}\in (\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
のとき、$G_{i+1}:=G_{i}$ とする。&lt;br /&gt;
* $\alpha_{i}\in \kleenecl{\Sigma} \setminus (\Sigma \cup\{\emptyword\})$ のとき、$\alpha_{i}=a_{0}\ldots a_{m}$ （ただし、$m$ は $1$ 以上の自然数であって、$a_{j}\in \Sigma$ for $j\in \mathnat$）とする。&lt;br /&gt;
** $V_{i+1}:=V_{i}\cup \{B_{0}, \ldots, B_{m}\}$ （ただし、各 $B_{j}$ は $B_{j}\notin V_{i}\cup \Sigma$ を満たす変数記号）。&lt;br /&gt;
** $R_{i+1}:=R_{i}\setminus \{A_{i}\mathgen \alpha_{i}\}\cup \{A_{i} \mathgen a_{0}B_{0}, B_{0} \mathgen a_{1}B_{1}, \ldots, B_{m-1} \mathgen a_{m}B_{m}, B_{m}\mathgen \emptyword\}$。&lt;br /&gt;
* $\alpha_{i}\in \kleenecl{\Sigma}V\setminus (\Sigma \cup\{\emptyword\})V$ のとき、$\alpha_{i}=a_{0}\ldots a_{m} A'_{i}$ （ただし、$m$ は $1$ 以上の自然数であって、$a_{j}\in \Sigma$ for $j\in \mathnat$）とする。&lt;br /&gt;
** $V_{i+1}:=V_{i}\cup \{B_{0}, \ldots, B_{m}\}$ （ただし、各 $B_{j}$ は $B_{j}\notin V_{i}\cup \Sigma$ を満たす変数記号）。&lt;br /&gt;
** $R_{i+1}:=R_{i}\setminus \{A_{i}\mathgen \alpha_{i}\}\cup \{A_{i} \mathgen a_{0}B_{0}, B_{0} \mathgen a_{1}B_{1}, \ldots, B_{m-1} \mathgen a_{m}B_{m}, B_{m}\mathgen A'_{i}\}$。&lt;br /&gt;
&lt;br /&gt;
各 $i$ に対して、 $L(G_{i})=L(G_{i+1})$ に注意すると&lt;br /&gt;
$G_{n+1}$ が求める文法であることがわかる。&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
{{begin   |proof | collapsible=1 | display=Proof of {{ref |type=theorem |label=thm-regularandNFA }}. }}&lt;br /&gt;
(2. $\Rightarrow$ 1.)&lt;br /&gt;
$L=\interpret{\alpha}$ なる正規表現 $\alpha$ が存在するとき、&lt;br /&gt;
$L$ を生成する右線形文法が存在することを言えば良い。&lt;br /&gt;
&lt;br /&gt;
正規表現の構成についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
Case 1.&lt;br /&gt;
$L=\interpret{\emptyset}=\emptyset$ のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \emptyset, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 2.&lt;br /&gt;
$L=\interpret{\emptyword}=\{\emptyword\}$ のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \{S \mathgen \emptyword\}, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 3.&lt;br /&gt;
$L=\interpret{a}=\{a\}$ (ただし、$a\in \Sigma$) のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \{S \mathgen a\}, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 4.&lt;br /&gt;
$L=\interpret{\alpha\beta}=\interpret{\alpha}\cdot\interpret{\beta}$&lt;br /&gt;
（ただし、$\alpha$, $\beta$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$, $\interpret{\beta}$&lt;br /&gt;
を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$\interpret{\alpha}$ を生成する右線形文法を&lt;br /&gt;
$G=(V_{\alpha}, \Sigma, R_{\alpha}, S_{\alpha})$、&lt;br /&gt;
$\interpret{\beta}$ を生成する右線形文法を&lt;br /&gt;
$G=(V_{\beta}, \Sigma, R_{\beta}, S_{\beta})$ とする。&lt;br /&gt;
このとき、$V_{\alpha}\cap V_{\beta}=\emptyset$ と仮定しても&lt;br /&gt;
一般性を失わない（必要であれば、変数記号を適切に置き換えれば良い）。&lt;br /&gt;
&lt;br /&gt;
さて、&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
R_{\alpha}^{(V)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R_{\alpha}}{\gamma \in \kleenecl{\Sigma}V}  \\&lt;br /&gt;
R_{\alpha}^{(0)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R_{\alpha}}{\gamma \in \kleenecl{\Sigma}}  &lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$R_{\alpha}=R_{\alpha}^{(V)}\cup R_{\alpha}^{(0)}$,&lt;br /&gt;
$R_{\alpha}^{(V)}\cap R_{\alpha}^{(0)}=\emptyset$ である。&lt;br /&gt;
\[R_{\alpha}^{(S_{\beta})}:=\mathsetintension{A\mathgen \gamma S_{\beta}}{A\mathgen \gamma \in R_{\alpha}, \gamma \in \kleenecl{\Sigma}}\]&lt;br /&gt;
とすると、&lt;br /&gt;
$G=(V_{\alpha}\cup V_{\beta}, \Sigma, R_{\alpha}^{V}\cup R_{\alpha}^{(S_{\beta})}\cup R_{\beta}, S_{\alpha})$&lt;br /&gt;
は$\interpret{\alpha}\cdot\interpret{\beta}$ を生成する右線形文法である。&lt;br /&gt;
&lt;br /&gt;
Case 5.&lt;br /&gt;
$L=\interpret{\alpha +\beta}=\interpret{\alpha}\cup \interpret{\beta}$&lt;br /&gt;
（ただし、$\alpha$, $\beta$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$, $\interpret{\beta}$&lt;br /&gt;
を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$\interpret{\alpha}$ を生成する右線形文法を&lt;br /&gt;
$G=(V_{\alpha}, \Sigma, R_{\alpha}, S_{\alpha})$、&lt;br /&gt;
$\interpret{\beta}$ を生成する右線形文法を&lt;br /&gt;
$G=(V_{\beta}, \Sigma, R_{\beta}, S_{\beta})$ とおく&lt;br /&gt;
（ただし、$V_{\alpha}\cap V_{\beta}=\emptyset$ とする）。&lt;br /&gt;
&lt;br /&gt;
このとき、右線形文法&lt;br /&gt;
$G=(V_{\alpha}\cup V_{\beta}\cup \{S\}, \Sigma, R_{\alpha}\cup R_{\beta}\cup \{S\mathgen S_{\alpha}, S\mathgen S_{\beta}\}, S)$&lt;br /&gt;
（ただし、$S\notin V_{\alpha}\cup V_{\beta}$）は&lt;br /&gt;
$\interpret{\alpha}\cup \interpret{\beta}$ を生成する。&lt;br /&gt;
&lt;br /&gt;
Case 6.&lt;br /&gt;
$L=\interpret{\kleenecl{\alpha}}=\kleenecl{\interpret{\alpha}}$&lt;br /&gt;
（ただし、$\alpha$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$&lt;br /&gt;
を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$\interpret{\alpha}$ を生成する右線形文法を&lt;br /&gt;
$G=(V, \Sigma, R, S)$ とする。&lt;br /&gt;
&lt;br /&gt;
さて、&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
R^{(V)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R}{\gamma \in \kleenecl{\Sigma}V} \\&lt;br /&gt;
R^{(0)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R}{\gamma \in \kleenecl{\Sigma}}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$R=R^{(V)}\cup R^{(0)}$,&lt;br /&gt;
$R^{(V)}\cap R^{(0)}=\emptyset$ である。&lt;br /&gt;
&lt;br /&gt;
\[R^{(S)}:=\mathsetintension{A\mathgen \gamma S}{A\mathgen \gamma \in R, \gamma \in \kleenecl{\Sigma}}\]&lt;br /&gt;
とすると、右線形文法&lt;br /&gt;
$G=(V, \Sigma, R^{(V)}\cup R^{(S)}\cup \{S\mathgen \emptyword\}, S)$ は&lt;br /&gt;
$\kleenecl{\interpret{\alpha}}$ を生成する。&lt;br /&gt;
&lt;br /&gt;
以上、Case 1-6 より(2. $\Rightarrow$ 1.) は示された。&lt;br /&gt;
&lt;br /&gt;
(1. $\Rightarrow$ 3.)&lt;br /&gt;
$L$ が正規言語であるとき、補題 2から&lt;br /&gt;
すべての生成規則の右辺が&lt;br /&gt;
$(\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
の元である$L$ を生成する右線形文法が存在する。&lt;br /&gt;
この文法を $G=(V, \Sigma, R, S)$ とする。&lt;br /&gt;
&lt;br /&gt;
まず、有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \delta, q_{I}, F)$&lt;br /&gt;
を次のように定義する。&lt;br /&gt;
&lt;br /&gt;
* $Q=V \cup \{f\}$ （ただし、$f\notin V$）&lt;br /&gt;
* $q_{I}=S$&lt;br /&gt;
* $\Delta = \{(A, a, A') | A, A'\in V, a\in \Sigma\cup\{\emptyword\}, A \mathgen aA'\in R \} \cup \{ (A, a, f) | A\in V, a\in \Sigma\cup\{\emptyword\}, A \mathgen a\in R\} \}$&lt;br /&gt;
* $F=\{f\}$&lt;br /&gt;
&lt;br /&gt;
次に、$wA\in \kleenecl{\Sigma}V$&lt;br /&gt;
に対して以下の２条件は同値であることを示す。&lt;br /&gt;
&lt;br /&gt;
(a) $S$ から始まる&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G}\cdots \Rightarrow_{G} \alpha_{n}(=wA)\]&lt;br /&gt;
(ただし、$\alpha_{i}=w_{i}A_{i}$ for $1\leq i\leq n$)&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
&lt;br /&gt;
(b) 記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ A_{0}, A_{1}, \ldots, A_{n}\]&lt;br /&gt;
（ただし、$A_{0}=S$, $A_{n}=A$）が存在する。&lt;br /&gt;
&lt;br /&gt;
(a) $\Rightarrow$ (b) を $n$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$n=1$ のとき、&lt;br /&gt;
$w=a$ なる $a\in\Sigma\cup\{\emptyword\}$が存在し、&lt;br /&gt;
$S\mathgen aA \in R$ であるはずである。&lt;br /&gt;
このとき、$\mathautomaton{A}$ の定義から&lt;br /&gt;
$(S, a, A)\in \Delta$である。&lt;br /&gt;
ゆえに、記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A \]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n&amp;gt;1$ のとき、&lt;br /&gt;
$w=w'a$ （ただし、$a\in \Sigma\cup\{\emptyword\}$）とおく。&lt;br /&gt;
このとき、$G$ の生成規則の形から&lt;br /&gt;
$w_{n-1}=w'$, &lt;br /&gt;
$A_{n-1}\mathgen aA \in R$&lt;br /&gt;
である。&lt;br /&gt;
このとき、帰納法の仮定から&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n-1}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[S, A_{1}, \ldots, A_{n-1} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
$A_{n-1}\mathgen aA \in R$&lt;br /&gt;
であるから、&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$であることに注意すると&lt;br /&gt;
記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{1}, \ldots, A_{n-1}, A \]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
(b) $\Rightarrow$ (a) を $n$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$n=1$ のとき、&lt;br /&gt;
$w=a$ なる $a\in\Sigma\cup\{\emptyword\}$が存在し、&lt;br /&gt;
$(S, a, A)\in \Delta$ のはずである。&lt;br /&gt;
このとき、$\mathautomaton{A}$ の定義から&lt;br /&gt;
$S\mathgen aA \in R$ である。ゆえに&lt;br /&gt;
\[ S \Rightarrow_{G} aA \]&lt;br /&gt;
である。&lt;br /&gt;
&lt;br /&gt;
$n&amp;gt;1$ のとき、&lt;br /&gt;
記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[A_{0}, A_{1}, \ldots, A_{n-1}A_{n} \]&lt;br /&gt;
（ただし、$A_{0}=S$, $A_{n}=A$）が存在すると仮定する。&lt;br /&gt;
すると、&lt;br /&gt;
$w=w'a$,&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$&lt;br /&gt;
を満たす&lt;br /&gt;
$a\in\Sigma\cup\{\emptyword\}$, $w'\in\kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
すると、記号列 $w'$ による $S$ から $A_{n-1}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[A_{0}, A_{1}, \ldots, A_{n-1} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
帰納法の仮定から&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n-1}(=w'A_{n-1})\]&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$ であるから、&lt;br /&gt;
$A_{n-1} \mathgen  aA\in R$ であるので、&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G} \cdots \Rightarrow_{G} w'A_{n-1} \Rightarrow_{G} w'aA(=wA) \]&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
 &lt;br /&gt;
最後に $L=L(\mathautomaton{A})$ を示す。&lt;br /&gt;
&lt;br /&gt;
$w\in L$ を仮定する。&lt;br /&gt;
すると、導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} \Rightarrow_{G} w\]&lt;br /&gt;
が存在する。&lt;br /&gt;
$G$ の生成規則の形から&lt;br /&gt;
$w=w'a$, $\alpha_{n}=w'A_{n}$, $A_{n}\mathgen a \in R$&lt;br /&gt;
を満たす $A_{n}\in V$, $a\in \Sigma\cup\{\emptyword\}$, &lt;br /&gt;
$w'\in \kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
このとき、&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n}$ への $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, A_{1}, \ldots, A_{n} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
$A_{n}\mathgen a \in R$&lt;br /&gt;
であるから、&lt;br /&gt;
$(A_{n}, a, f)\in \Delta$&lt;br /&gt;
に注意すると、&lt;br /&gt;
記号列 $w'a=w$ による $S$ から $f$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, \ldots, A_{n}, f \]&lt;br /&gt;
が存在する。&lt;br /&gt;
ゆえに $w\in L(\mathautomaton{A})$ である。&lt;br /&gt;
&lt;br /&gt;
逆に、$w\in L(\mathautomaton{A})$ とする。&lt;br /&gt;
すると、&lt;br /&gt;
記号列 $w$ による $S$ から $f$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, A_{1}, \ldots, A_{n}, f\]&lt;br /&gt;
が存在する。&lt;br /&gt;
すると、&lt;br /&gt;
$w=w'a$, $(A_{n}, a, f) \in \Delta$&lt;br /&gt;
を満たす $a\in \Sigma\cup\{\emptyword\}$, &lt;br /&gt;
$w'\in \kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
また、&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, \ldots, A_{n} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
よって、導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} (=w'A_{n})\]&lt;br /&gt;
が存在する。&lt;br /&gt;
$(A_{n}, a, f) \in \Delta$ から&lt;br /&gt;
$A_{n}\mathgen a$ であるので、&lt;br /&gt;
$w$ の導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} \Rightarrow_{G} w (=w'a)\]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
以上より(1. $\Rightarrow$ 3.)は示された。&lt;br /&gt;
&lt;br /&gt;
(3. $\Rightarrow$ 2.)&lt;br /&gt;
$L$ を受理する有限オートマトンを&lt;br /&gt;
$\mathautomaton{A}=(\{q_{1}, q_{2}, \ldots, q_{n}\}, \Sigma, \Delta, q_{1}, \{q_{F_{0}}, q_{F_{1}}, \ldots, q_{F_{m}}\})$ とおく。&lt;br /&gt;
&lt;br /&gt;
簡単のため、以下&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\sum_{\alpha \in A} \alpha &amp;amp;= (\alpha_{0}+ \cdots + \alpha_{k}) \quad \text{（ただし、A は正規表現の空でない有限集合であって、A=\{a_{0}, \ldots, a_{k}\}）}, \\&lt;br /&gt;
Q_{ij}&amp;amp;=\{a\in \Sigma\cup\{\emptyword\} | (q_{i}, a, q_{j})\in \Delta\}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
という略記を用いる。&lt;br /&gt;
&lt;br /&gt;
正規表現 $\alpha^{(l)}_{ij}$ （ただし、$1\leq i, j \leq n$, $0\leq l \leq n$）を次のように帰納的に定める。&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\alpha^{(0)}_{ij}&amp;amp;=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
\emptyset, &amp;amp; \text{if Q_{ij}=\emptyset}, \\&lt;br /&gt;
\sum_{a\in Q_{ij}}a, &amp;amp; \text{if Q_{ij}\neq \emptyset, i\neq j}; \\&lt;br /&gt;
\kleenecl{\left(\sum_{a\in Q_{ij}}a\right)}, &amp;amp; \text{if Q_{ij}\neq \emptyset, i=j}; &lt;br /&gt;
\end{cases}\\&lt;br /&gt;
\alpha^{(l)}_{ij}&amp;amp;=\alpha^{(l-1)}_{ij} + \alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}, \quad \text{（ただし、1\leq l）}.&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
$w\in \interpret{\alpha^{(l)}_{ij}}$ であるとき、&lt;br /&gt;
記号列 $w$ による $q_{i}$ から $q_{j}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{0}}, q_{k_{1}}, \ldots, q_{k_{p}} \]&lt;br /&gt;
（ただし、$k_{0}=i$, $k_{p}=j$, $1\leq q\leq p-1$ のとき $1\leq k_{q} \leq l$）が存在することを $l$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$l=0$ については明らか。&lt;br /&gt;
&lt;br /&gt;
$l&amp;gt;0$ のとき、$w\in \interpret{\alpha^{(l)}_{ij}}$ であるとすると、&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{ij}}$ または&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}}$ である。&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{ij}}$ のときは帰納法の仮定より明らか。&lt;br /&gt;
&lt;br /&gt;
$w\in \interpret{ \alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}}$ とする。すると&lt;br /&gt;
$w_{1}\in \interpret{\alpha^{(l-1)}_{il}}$,&lt;br /&gt;
$w_{2}\in \interpret{\alpha^{(l-1)}_{ll}}$,&lt;br /&gt;
$w_{3}\in \interpret{\alpha^{(l-1)}_{lj}}$,&lt;br /&gt;
$w=w_{1}(w_{2})^{s}w_{3}$ （ただし、$s\in \mathnat$） を満たす記号列 $w_{1}$, $w_{2}$, $w_{3}$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から、&lt;br /&gt;
記号列 $w_{t}$ （$t=1, 2, 3$）による$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{t0}}, q_{k_{t1}}, \ldots, q_{k_{tp}} \]&lt;br /&gt;
（ただし、$k_{10}=i$, $k_{1p}=k_{20}=k_{2p}=k_{30}=l$, $k_{3p}=j$, $1\leq q\leq p-1$ のとき $1\leq k_{q} \leq l-1$）が存在する。&lt;br /&gt;
すると、&lt;br /&gt;
記号列 $w$ による $q_{i}$ から $q_{j}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{10}}, q_{k_{11}}, \ldots, q_{k_{1p}}, \overbrace{q_{k_{21}}, \ldots, q_{k_{2p}}}^{s}, q_{k_{31}}, \ldots, q_{k_{3p}} \]&lt;br /&gt;
が存在することがわかる。&lt;br /&gt;
&lt;br /&gt;
以上のことに注意すると、&lt;br /&gt;
\[ \alpha^{(n)}_{1F_{0}}+\alpha^{(n)}_{1F_{1}}+ \cdots + \alpha^{(n)}_{1F_{m}}\]&lt;br /&gt;
は $\mathautomaton{A}$ が受理する記号列全体である。&lt;br /&gt;
 &lt;br /&gt;
以上より(3. $\Rightarrow$ 2.)は示された。&lt;br /&gt;
{{end  |proof }}&lt;br /&gt;
&lt;br /&gt;
==  正規言語ではない形式言語の例  ==&lt;br /&gt;
この節では正規言語ではない[[形式言語]]の例を紹介する。&lt;br /&gt;
&lt;br /&gt;
そのような例が存在すること自体は右線形文法が[[集合の濃度#具体的な濃度 | 高々可算個]]しかないことと[[形式言語]]の濃度が[[集合の濃度#具体的な濃度 | 非加算]]であることに注意すると、明らかである。&lt;br /&gt;
しかし、その具体例を構成し、正規言語ではないことを示すことはそれほど簡単ではない。このとき強力な武器となるのが[[有限オートマトン#pumping_lemma | 反復補題]]である。&lt;br /&gt;
&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]] については当該項目を参照せよ。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0^{n}1^{n}$ という形をした記号列全体 |label=ex-counter_example_reg_lang_n }}&lt;br /&gt;
$0^{n}1^{n}$ （ただし、$n\in\mathnat$）という形の記号列全体は正規言語ではない。しかしながら[[文脈自由言語]]ではある．この記号列全体を生成する[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]は[[文脈自由言語#ex-counter_example_reg_lang_n | この例]]を参照せよ．&lt;br /&gt;
&lt;br /&gt;
'''$0^{n}1^{n}$ という形の記号列全体が正規言語ではないことの証明'''&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
背理法により示す。&lt;br /&gt;
&lt;br /&gt;
$0^{n}1^{n}$ という形の記号列全体 $L$ が正規言語であると仮定する。&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }}より、$L=L(\mathautomaton{A})$ を満たす&lt;br /&gt;
有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n_{0}=|Q|$ とする。仮定より&lt;br /&gt;
$\mathautomaton{A}$ は $w=0^{n_{0}}1^{n_{0}}$ を受理する。&lt;br /&gt;
すると$\left|w\right|&amp;gt;n_{0}$ であるから&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]] より&lt;br /&gt;
次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w=xyz$。&lt;br /&gt;
# $\left|y\right|&amp;gt;0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は&lt;br /&gt;
$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n_{0}$。&lt;br /&gt;
&lt;br /&gt;
このとき、 $xy=0^{k}$ （ただし、$0&amp;lt; k\leq n_{0}$）&lt;br /&gt;
であることに注意する。&lt;br /&gt;
すると、 $x=0^{k_{0}}$, $y=0^{k_{1}}$&lt;br /&gt;
（ただし、$0\leq k_{0}\leq k$, $0&amp;lt; k_{1}\leq k$,&lt;br /&gt;
$k=k_{0}+k_{1}$）&lt;br /&gt;
を満たす自然数 $k_{0}$, $k_{1}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
さて、$\mathautomaton{A}$ は&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]]の条件から、&lt;br /&gt;
記号列 $xz$ を受理するはずである。&lt;br /&gt;
しかし、$xz=0^{n_{0}-k_{1}}b^{n_{0}}$, $n_{0}-k_{1}&amp;lt;n_{0}$&lt;br /&gt;
であるから $xz\notin L$ である。&lt;br /&gt;
これは $L=L(\mathautomaton{A})$ に矛盾する。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$w\mirrorim{w}$ という形をした記号列全体 |label=ex-counter_example_reg_lang_mirror }}&lt;br /&gt;
$w\mirrorim{w}$（ただし、$n\in\mathnat$）という形の記号列全体は正規言語ではない。しかしながら[[文脈自由言語]]ではある．この記号列全体を生成する[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]は[[文脈自由言語#ex-counter_example_reg_lang_mirror | この例]]を参照せよ．&lt;br /&gt;
'''$w\mirrorim{w}$ という形の記号列全体が正規言語ではないことの証明'''&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
背理法により示す。&lt;br /&gt;
&lt;br /&gt;
$w\mirrorim{w}$ という形の記号列全体 $L$ が正規言語であると仮定する。&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }}より、&lt;br /&gt;
$L=L(\mathautomaton{A})$ を満たす&lt;br /&gt;
有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n_{0}=|Q|$ とする。以下 $w_{0}=0^{n_{0}}1$ とする。&lt;br /&gt;
仮定より $\mathautomaton{A}$ は $w_{0}\mirrorim{w_{0}}$ を受理する。&lt;br /&gt;
すると $\left|w_{0}\mirrorim{w_{0}}\right|&amp;gt;n_{0}$ であるから&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題 ]] より&lt;br /&gt;
次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w_{0}\mirrorim{w_{0}}=xyz$。&lt;br /&gt;
# $\left|y\right|&amp;gt;0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は&lt;br /&gt;
$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n_{0}$。&lt;br /&gt;
&lt;br /&gt;
このとき、 $xy=0^{k}$ （ただし、$0&amp;lt; k\leq n_{0}$）&lt;br /&gt;
であることに注意する。&lt;br /&gt;
すると、 $x=0^{k_{0}}$, $y=0^{k_{1}}$&lt;br /&gt;
（ただし、$0\leq k_{0}\leq k$, $0&amp;lt; k_{1}\leq k$,&lt;br /&gt;
$k=k_{0}+k_{1}$）&lt;br /&gt;
を満たす自然数 $k_{0}$, $k_{1}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
さて、$\mathautomaton{A}$ は&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題 ]] の条件から、&lt;br /&gt;
記号列 $xz$ を受理するはずである。&lt;br /&gt;
しかし、$xz=0^{n_{0}-k_{1}}1\mirrorim{w_{0}}=0^{n_{0}-k_{1}}110^{n_{0}}$, $n_{0}-k_{1}&amp;lt;n_{0}$&lt;br /&gt;
であるから $xz\notin L$ である。&lt;br /&gt;
これは $L=L(\mathautomaton{A})$ に矛盾する。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
==  正規言語と左線形文法 ==&lt;br /&gt;
この節では正規言語と左線形文法との関係を述べる。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=definition |name=左線形文法 |label=def-left_linear_grammar }}&lt;br /&gt;
'''左線形文法（left linear grammar）'''とは&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# $\Sigma$ と互いに素な'''変数記号（variable）'''の有限集合 $V$&lt;br /&gt;
# '''生成規則（production rule）'''と呼ばれる有限集合 $R \subseteq V \times V\kleenecl{(\Sigma)}\cup \kleenecl{(\Sigma)}$&lt;br /&gt;
# '''開始記号(start symbol)'''または'''初期記号'''と呼ばれる $S\in V$&lt;br /&gt;
&lt;br /&gt;
の４つ組$(V, \Sigma, R, S)$である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
これは、[[句構造言語#def-phrase_structure_grammar | 句構造文法]]の一種である。また、[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]の一種である。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=thm-left_linear_grammar }}&lt;br /&gt;
言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $L$ を生成する左線形文法が存在する。&lt;br /&gt;
&lt;br /&gt;
==  参考文献 ==&lt;br /&gt;
# 新屋 良磨、オートマトン理論再考、コンピュータ ソフトウェア、2017、34 巻、3 号、p. 3_3-3_35、公開日 2017/09/25、Print ISSN 0289-6540、https://doi.org/10.11309/jssst.34.3_3、https://www.jstage.jst.go.jp/article/jssst/34/3/34_3_3/_article/-char/ja&lt;br /&gt;
# 五十嵐喜英他、『[[数理情報科学シリーズ ２４ オートマトンと形式言語の基礎]]』、牧野書店、2011&lt;br /&gt;
&lt;br /&gt;
== 関連項目 ==&lt;br /&gt;
* [[形式言語]]&lt;br /&gt;
* [[正規表現]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
|+ Chomsky階層&lt;br /&gt;
! 文法のタイプ&lt;br /&gt;
! 言語のクラス&lt;br /&gt;
! 計算モデル&lt;br /&gt;
|-&lt;br /&gt;
! タイプ0&lt;br /&gt;
| [[句構造言語]]&lt;br /&gt;
| [[Turingマシン]]&lt;br /&gt;
|-&lt;br /&gt;
! タイプ1&lt;br /&gt;
| [[文脈依存言語]]&lt;br /&gt;
| [[線形有界オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ2&lt;br /&gt;
| [[文脈自由言語]]&lt;br /&gt;
| [[プッシュダウン・オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ3&lt;br /&gt;
| [[正規言語]]&lt;br /&gt;
| [[有限オートマトン]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E6%9C%89%E9%99%90%E3%82%AA%E3%83%BC%E3%83%88%E3%83%9E%E3%83%88%E3%83%B3&amp;diff=6800</id>
		<title>有限オートマトン</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E6%9C%89%E9%99%90%E3%82%AA%E3%83%BC%E3%83%88%E3%83%9E%E3%83%88%E3%83%B3&amp;diff=6800"/>
		<updated>2021-05-28T18:44:45Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: Show prop-finite_automaton_non_emptyword&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:形式言語理論|ユウゲンオートマトン]]&lt;br /&gt;
[[Category:計算理論|ユウゲンオートマトン]]&lt;br /&gt;
{{begin |preamble}}&lt;br /&gt;
&amp;lt;!-- 参考文献 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 定理環境 --&amp;gt;&lt;br /&gt;
{{newtheorem |type=theorem |display=定理}}&lt;br /&gt;
{{newtheorem |type=lemma |display=補題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=definition |display=定義 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=prop |display=命題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=example |display=例 |family=theorem }}&lt;br /&gt;
&amp;lt;!-- MathJax commands --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\newcommand{\mathsetextension}[1]{%&lt;br /&gt;
\left\{ #1 \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathsetintension}[2]{%&lt;br /&gt;
\left\{ #1 \left| #2 \right. \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathof}[2]{%&lt;br /&gt;
\mathop{#1}\left(#2\right)%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathderiv}{\mathrel{\mathop{\Rightarrow}}^{*}}&lt;br /&gt;
\newcommand{\mathgen}{\rightsquigarrow}&lt;br /&gt;
\newcommand{\emptyword}{\varepsilon}&lt;br /&gt;
\newcommand{\kleenecl}[1]{{#1}^{*}}&lt;br /&gt;
\newcommand{\interpret}[1]{[\![#1]\!]}&lt;br /&gt;
\newcommand{\mathautomaton}[1]{\mathcal{#1}}&lt;br /&gt;
\newcommand{\mathnat}{\mathbb{N}}&lt;br /&gt;
\newcommand{\qed}{\blacksquare}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
{{end |preamble}}&lt;br /&gt;
'''有限オートマトン（finite automaton）'''とは[[正規言語]]を受理する計算モデルである。&lt;br /&gt;
&lt;br /&gt;
以下、項目[[形式言語]]において定められている言語上の演算などについては特に断らず用いる。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{TOC |align=right |noautonum=1 }}&amp;lt;!-- 右寄せ連番無し目次をここに表示 --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  有限オートマトンの導入  ==&lt;br /&gt;
この節では'''有限オートマトン'''やその周辺の重要な諸概念を定義する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=有限オートマトン |label=def-finite_automaton }}&lt;br /&gt;
'''有限オートマトン（finite automaton）'''とは&lt;br /&gt;
# '''状態集合(a set of states)'''と呼ばれる有限集合 $Q$&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# '''遷移関係(transition relation)'''と呼ばれる集合 $\Delta \subseteq Q\times (\Sigma \cup \{\emptyword\})  \times Q$ &lt;br /&gt;
# '''開始状態(initial state)'''と呼ばれる $q_{I}\in Q$&lt;br /&gt;
# '''受理状態(accepting state)'''や'''最終状態(final state)'''と呼ばれる集合 $F\subseteq Q$&lt;br /&gt;
&lt;br /&gt;
の５つ組 $(Q, \Sigma, \Delta, q_{I}, F)$ である。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=決定性有限オートマトン |label=def-deterministic_finite_automaton }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が次の２条件を満たすとき、'''$\mathautomaton{A}$ は決定性有限オートマトン(deterministic finite automaton)である'''と言う。&lt;br /&gt;
# $(q, a, q')\in \Delta$ に対して $a=\emptyword$ ならば、$q=q'$&lt;br /&gt;
# 各 $(q, a) \in Q\times \Sigma$ という組に対して、$(q, a, q')\in \Delta$ という形の元は高々一個&lt;br /&gt;
&lt;br /&gt;
有限オートマトン $\mathautomaton{A}$ が決定性有限オートマトンとは限らないことを明示したいときに、&lt;br /&gt;
'''$\mathautomaton{A}$ は非決定性有限オートマトン(nondeterministic finite automaton)である'''と言うことがある。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=有限オートマトンの受理する言語 |label=def-language_accepted_finite_automaton }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ と&lt;br /&gt;
記号列 $w \in \kleenecl{\Sigma}$ について、&lt;br /&gt;
次の２条件を満たす状態の列 $q_{0}, q_{1}, \dots, q_{n}$ を&lt;br /&gt;
'''記号列 $w$ による $q_{0}$ から $q_{n}$ への $\mathautomaton{A}$ の状態遷移'''と言う。&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{n}$ （ただし、各 $i=1, \dots, n$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）&lt;br /&gt;
# すべての $i\in \{1, \dots n\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ による $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
$q_{0}, q_{1}, \dots, q_{n}$ であって $q_{0} = q_{I}$, $q_{n}\in F$ を満たすものが存在するとき、&lt;br /&gt;
「有限オートマトン $\mathautomaton{A}$ が&lt;br /&gt;
'''記号列 $w$ を受理する'''」と言う。&lt;br /&gt;
&lt;br /&gt;
有限オートマトン $\mathautomaton{A}$ が受理する&lt;br /&gt;
記号列全体のことを '''有限オートマトン $\mathautomaton{A}$ の受理する言語'''&lt;br /&gt;
と言い、$L(\mathautomaton{A})$ と書く。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=等価な有限オートマトン |label=def-equivalence_finite_automaton }}&lt;br /&gt;
'''有限オートマトン $\mathautomaton{A}$ と 有限オートマトン $\mathautomaton{A'}$ が等価である'''とは，&lt;br /&gt;
$L(\mathautomaton{A})=L(\mathautomaton{A'})$&lt;br /&gt;
を満たすことである。&lt;br /&gt;
&lt;br /&gt;
==  有限オートマトンの例 ==&lt;br /&gt;
この節では有限オートマトンの例を紹介する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列全体を受理する有限オートマトン |label=ex-FA_all }}[[ファイル:Fig FA all.svg|サムネイル]]&lt;br /&gt;
\begin{align*}Q&amp;amp;=\mathsetextension{q_{I}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{I}), (q_{I}, 1, q_{I})}\\ F&amp;amp;= \mathsetextension{q_{I}}\end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。また、$\mathautomaton{A}$ は決定性有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
$0$ と $1$ からなる有限記号列をすべて受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ のみを受理する有限オートマトン |label=ex-0-1-only }}[[ファイル:Fig- 0-1-only.svg|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{1}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{2}), (q_{1}, 1, q_{2})}\\ F&amp;amp;=\mathsetextension{q_{1}} \end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は$0$ と $1$ のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$ をちょうど3個含む記号列全体を受理する有限オートマトン |label=ex-only-three-one}}[[ファイル:Fig FA only three one.svg|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}, q_{3}} \\ \Sigma&amp;amp;=\mathsetextension{0, 1} \\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{I}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{2}), (q_{2}, 0, q_{2}), (q_{2}, 1, q_{3}), (q_{3}, 0, q_{3})} \\ F&amp;amp;=\mathsetextension{q_{3}} \end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$ をちょうど3個含む記号列のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列全体を受理する有限オートマトン その1 |label=ex-one-less-than-three-1 }}[[ファイル:Fig FA one less than three 1.svg|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}, q_{3}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{I}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{2}), (q_{2}, 0, q_{2}), (q_{2}, 1, q_{3}), (q_{3}, 0, q_{3}), (q_{I}, \emptyword, q_{3}), (q_{1}, \emptyword, q_{3}), (q_{2}, \emptyword, q_{3})}\\ F&amp;amp;= \mathsetextension{q_{3}}\end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列全体を受理する有限オートマトン その2 |label=ex-one-less-than-three-2 }}[[ファイル:Fig FA one less than three 2.png|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}, q_{3}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, \emptyword, q_{I}), (q_{I}, 0, q_{I}), (q_{I}, 0, q_{1}), (q_{I}, 0, q_{2}), (q_{I}, 0, q_{3}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{2}), (q_{2}, 0, q_{2}), (q_{2}, 1, q_{3})}\\ F&amp;amp;= \mathsetextension{q_{I},q_{3}}\end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ も&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=自然数の二進表現全体を受理する有限オートマトン |label=ex-bi }}[[ファイル:Fig FA bi.svg|サムネイル]]&lt;br /&gt;
\begin{align*}Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{2}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{1})}\\ F&amp;amp;= \mathsetextension{q_{1}, q_{2}}\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
自然数の二進表現のみを受理する。&lt;br /&gt;
&lt;br /&gt;
==  正規言語、正規表現との関係 ==&lt;br /&gt;
この節では有限オートマトン、[[正規言語]]および[[正規表現]]の関係を述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=theorem |label=thm-Regular_Lang }}&lt;br /&gt;
言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $L=\interpret{\alpha}$ なる正規表現 $\alpha$ が存在する。&lt;br /&gt;
# $L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
&lt;br /&gt;
この定理の証明は、項目[[正規言語#thm-regularandNFA|正規言語]]を参照せよ。&lt;br /&gt;
&lt;br /&gt;
==  反復補題（ポンピング補題） ==&lt;br /&gt;
この節では'''反復補題（pumping lemma）'''について述べる&amp;lt;ref name=&amp;quot;THE-BOOK&amp;quot;&amp;gt;Martin Aigner,Guenter M. Ziegler,Karl H. Hofmann, [&amp;quot;Proofs from THE BOOK&amp;quot;], Springer, 2004 によると、一般に定理が'''補題'''と呼ばれる条件は「広範囲の応用例を持つ」「一見して完璧に明らか」「証明も含めて美しい」の三条件を満たすことである。&amp;lt;/ref&amp;gt;。&lt;br /&gt;
反復補題は'''ポンピング補題'''や'''ポンプ補題'''と呼ばれることもある。&lt;br /&gt;
&lt;br /&gt;
反復補題は[[正規言語#not_regular_lang|ある記号列の集合が正規言語ではない証明]]などに&lt;br /&gt;
よく用いられる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=lemma |name=反復補題 |label=pumping_lemma }}&lt;br /&gt;
状態集合の大きさが $n$ の有限オートマトン $\mathautomaton{A}$ に記号列 $w$ が受理されるとする。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|\gt n$ であるとき、次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w=xyz$。&lt;br /&gt;
# $\left|y\right|\gt 0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n$。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- '''{{ref |type=lemma |label=pumping_lemma }}の証明''' --&amp;gt;&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ に $w$ が受理されるとする。&lt;br /&gt;
以下 $n:=\left|Q\right|$, $l:=\left|w\right|$, $l\gt n$ とする。&lt;br /&gt;
&lt;br /&gt;
有限オートマトン $\mathautomaton{A}$ に $w$ が受理されることから、&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{k}$ （ただし、各 $i=1, \dots, k$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）。&lt;br /&gt;
# すべての $i\in \{1, \dots, k\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$。&lt;br /&gt;
# $q_{0}=q_{I}$, $q_{k}\in F$。&lt;br /&gt;
&lt;br /&gt;
を満たす状態の列 $q_{0}, q_{1}, \dots, q_{k}$ と記号の列 $a_{1}, a_{2}, \dots, a_{k}$が存在する&lt;br /&gt;
（ただし、$k\geq l$）。&lt;br /&gt;
&lt;br /&gt;
$l\gt n$ から長さが $n$ の $w$ の[[形式言語#prefix_suffix|接頭語]] $w_{0}$ が存在する。&lt;br /&gt;
すると、$q_{0}, q_{1}, \dots, q_{k}$&lt;br /&gt;
の部分列であって、$w_{0}$ による $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
$$q_{0}, q_{1}, \dots, q_{k_{0}}$$&lt;br /&gt;
が存在する（ただし $n\leq k_{0}\leq k$）。&lt;br /&gt;
&lt;br /&gt;
すると、鳩ノ巣原理より&lt;br /&gt;
# $(q_{i-1}, a_{i}, q_{i})$, $(q_{i+j-1}, a_{i+j}, q_{i+j})\in \Delta$&lt;br /&gt;
（ただし、$a_{i}\neq\emptyword$, $a_{i+j}\neq\emptyword$）&lt;br /&gt;
# $q_{i}=q_{i+j}$&lt;br /&gt;
&lt;br /&gt;
という条件を満たす自然数の組 $(i, j)$ （ただし $0\leq i\leq k_{0}$, $0&amp;lt; j\leq k_{0}$）が少なくとも１つ存在する。&lt;br /&gt;
以下その $i$, $j$ を固定する。&lt;br /&gt;
&lt;br /&gt;
\begin{align*} x&amp;amp;:=a_{1}a_{2}\ldots a_{i}, \\ y&amp;amp;:=a_{i+1}a_{i+2}\ldots a_{i+j}, \\ z&amp;amp;:=a_{i+j+1}a_{i+j+2}\ldots a_{k},\end{align*}&lt;br /&gt;
とすると、$w=xyz$ である。また、$a_{i+j}\neq\emptyword$ であるから $\left|y\right|\gt 0$。&lt;br /&gt;
さらに、定義より $xy$ は $w_{0}$ の部分列であるから、$|xy|\leq n$。&lt;br /&gt;
&lt;br /&gt;
任意の$m\in\mathnat$に対して，記号列 $xy^{m}z$ が $\mathautomaton{A}$ に受理されることを示す。&lt;br /&gt;
&lt;br /&gt;
以下，記号列 $x$, $y$, $z$ による $\mathautomaton{A}$ の状態遷移をそれぞれ&lt;br /&gt;
\begin{align*}Q_{x}&amp;amp;=q_{0}, \dots, q_{i}, \\ Q_{y}&amp;amp;=q_{i+1}, \dots, q_{i+j}, \\ Q_{z}&amp;amp;=q_{i+j+1}, \dots, q_{k}, \end{align*}&lt;br /&gt;
と書くことにする。&lt;br /&gt;
&lt;br /&gt;
$m=0$ のときを示す。&lt;br /&gt;
&lt;br /&gt;
$q_{i}=q_{i+j}$ に注意すると、$(q_{i}, a_{i+j+1}, q_{i+j+1})\in \Delta$ である。&lt;br /&gt;
よって、&lt;br /&gt;
$$Q_{x}Q_{z}=q_{0}, \dots, q_{i}, q_{i+j+1}, \dots, q_{k}$$&lt;br /&gt;
は記号列 $xz$ による $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
$q_{0}=q_{I}$, $q_{k}\in F$ であるから、$xz$($=xy^{0}z$) は $\mathautomaton{A}$ に受理される。&lt;br /&gt;
&lt;br /&gt;
$m\gt 0$ のときを示す。&lt;br /&gt;
&lt;br /&gt;
$q_{i}=q_{i+j}$ に注意すると、$(q_{i+j}, a_{i+j+1}, q_{i+1})\in \Delta$ である。&lt;br /&gt;
$$Q_{x}\overbrace{Q_{y}\dots Q_{y}}^{m\text{個}}Q_{z}=q_{0}, \dots, q_{i}, \overbrace{q_{i+1}, \dots, q_{i+j}, q_{i+1}, \dots, q_{i+j}}^{\text{$q_{i+1}, \dots, q_{i+j}$ の反復が $m$回}}, q_{i+j+1}, \dots, q_{k}$$&lt;br /&gt;
は記号列 $xy^{m}z$ による $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
$q_{0}=q_{I}$, $q_{k}\in F$ であるから、$xy^{m}z$ は $\mathautomaton{A}$ に受理される。 &lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
===  反復補題の補足 ===&lt;br /&gt;
本稿の反復補題の $|xy|\leq n$ という条件を外したものも反復補題と呼ばれる。&lt;br /&gt;
反復補題の証明中において、$w$ の部分列を考えたことがそれ以外の条件の証明に対して非本質的であることに注意すると、&lt;br /&gt;
$|xy|\leq n$ という条件が余計であると考えられるからであろう。&lt;br /&gt;
&lt;br /&gt;
==  $\emptyword$ 動作なしの有限オートマトン ==&lt;br /&gt;
この項では&lt;br /&gt;
'''$\emptyword$ 動作なしの有限オートマトン(finite automaton without $\emptyword$-transitions)'''&lt;br /&gt;
について述べる．&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=$\emptyword$ 動作なしの有限オートマトン |label=def-finite_automaton_non_emptyword }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が&lt;br /&gt;
次の条件を満たすとき、&lt;br /&gt;
'''$\mathautomaton{A}$ は $\emptyword$ 動作なしの有限オートマトン(finite automaton without $\emptyword$-transitions)である'''&lt;br /&gt;
と言う。&lt;br /&gt;
* $(q, a, q')\in \Delta$ に対して $a=\emptyword$ ならば $q=q'$&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=prop-finite_automaton_non_emptyword }}&lt;br /&gt;
任意の有限オートマトンに対して、&lt;br /&gt;
それと等価な $\emptyword$ 動作なしの有限オートマトンが存在する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- ==== {{ref |type=prop |label=prop-finite_automaton_non_emptyword }} の証明 ==== --&amp;gt;&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ を有限オートマトンとする。&lt;br /&gt;
&amp;lt;!-- $\mathautomaton{A}$ が $\emptyword$ 動作なしの有限オートマトンであれば，示すことはない。 --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$q\in Q$, $a\in \Sigma$ にたいして、集合 $\mathof{C}{q, a}$ を次のように定める:&lt;br /&gt;
\[ \mathof{C}{q, a}=\mathsetintension{(q, a, q')}{ \text{記号列 $a$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する}}. \]&lt;br /&gt;
&lt;br /&gt;
$\mathof{C_{\emptyword}}{q_{I}}$ を次のように定義する:&lt;br /&gt;
\[\mathof{C_{\emptyword}}{q_{I}}=\mathsetintension{q'\in Q}{\text{記号列 } \emptyword \text{ による } q_{I} \text{ から } q' \text{ への } \mathautomaton{A} \text{ の状態遷移が存在する} }. \]&lt;br /&gt;
&lt;br /&gt;
次のように集合 $\Delta'_{0}$, $\Delta'_{\emptyword}$ および $\Delta'$ を次のように定める:&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\Delta'_{0}&amp;amp;=\bigcup_{q\in Q, a\in \Sigma} \mathof{C}{q, a}, \\&lt;br /&gt;
\Delta'_{\emptyword}&amp;amp;=\mathsetintension{(q, \emptyword, q)}{q\in Q}, \\&lt;br /&gt;
\Delta'&amp;amp;=\Delta'_{0}\cup \Delta'_{\emptyword}.&lt;br /&gt;
\end{align*}&lt;br /&gt;
また、&lt;br /&gt;
\[F'=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
F, &amp;amp; \text{if } F\cap\mathof{C_{\emptyword}}{q_{I}}=\emptyset, \\&lt;br /&gt;
F \cup \mathsetextension{q_{I}}, &amp;amp; \text{if } F\cap\mathof{C_{\emptyword}}{q_{I}}\neq\emptyset.&lt;br /&gt;
\end{cases}&lt;br /&gt;
\]&lt;br /&gt;
とする。&lt;br /&gt;
このとき$\mathautomaton{A}'=(Q, \Sigma, \Delta', q_{I}, F')$ は $\emptyword$ 動作なしの有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
記号列 $w\neq\emptyword$ に対して、以下が同値であることを示す:&lt;br /&gt;
# 記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する&lt;br /&gt;
# 記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在する&lt;br /&gt;
&lt;br /&gt;
次のように集合 $\Delta_{\emptyword}$ および $\Delta_{0}$  を次のように定める。&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\Delta_{\emptyword}&amp;amp;=\mathsetintension{(q, a, q')\in \Delta}{a=\emptyword\text{ かつ }q\neq q'}, \\&lt;br /&gt;
\Delta_{0}&amp;amp;=\Delta\setminus\Delta_{\emptyword}.&lt;br /&gt;
\end{align*}&lt;br /&gt;
以下 $\Delta_{0} \subseteq \Delta'_{0}$ に注意する。&lt;br /&gt;
&lt;br /&gt;
1 $\Rightarrow$ 2:&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在すると仮定する。&lt;br /&gt;
$\left|w\right|$ に対する帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|=1$ のとき:&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在することから $(q, w, q')\in \mathof{C}{q, w}$。&lt;br /&gt;
よって、$(q, w, q')\in \Delta'$。よって、$q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|\gt 1$ のとき: $w=w_{0}a$ とおく（ただし、$a\in\Sigma$）。&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在することから&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{k}$ （ただし、各 $i=1, \dots, k$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）。&lt;br /&gt;
# すべての $i\in \{1, \dots, k\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$。&lt;br /&gt;
# $q_{0}=q$, $q_{k}=q'$。&lt;br /&gt;
&lt;br /&gt;
を満たす状態の列 $q_{0}, q_{1}, \dots, q_{k}$ と記号の列 $a_{1}, a_{2}, \dots, a_{k}$が存在する&lt;br /&gt;
（ただし、$k\geq l$）。&lt;br /&gt;
このとき、$w_{0}=a_{1}\dots a_{k_{0}}$, $a=a_{k_{0}+1}$, $1\leq k_{0}\lt k$ を満たす $k_{0}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
すると、$q=q_{0}, q_{1}, \dots, q_{k_{0}}$ は記号列 $w_{0}$ による $q$ から $q_{k_{0}}$ への $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
また、$q_{k_{0}}, q_{k_{0}+1}, \dots, q_{k}=q'$ は記号列 $a$ による $q_{k_{0}}$ から $q'$ への $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から&lt;br /&gt;
記号列 $w_{0}$ による $q$ から $q_{k_{0}}$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
また、記号列 $a$ による $q_{k_{0}}$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在することから $(q_{k_{0}}, a, q')\in \mathof{C}{q_{k_{0}}, a}$。ゆえに、記号列 $w=w_{0}a$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
2 $\Rightarrow$ 1:&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在すると仮定する。&lt;br /&gt;
$\left|w\right|$ に対する帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|=1$ のとき:&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在することから&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{k}$ （ただし、各 $i=1, \dots, k$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）。&lt;br /&gt;
# すべての $i\in \{1, \dots, k\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta'$。&lt;br /&gt;
# $q_{0}=q$, $q_{k}=q'$。&lt;br /&gt;
&lt;br /&gt;
を満たす状態の列 $q_{0}, q_{1}, \dots, q_{k}$ と記号の列 $a_{1}, a_{2}, \dots, a_{k}$が存在する&lt;br /&gt;
（ただし、$k\geq l$）。&lt;br /&gt;
$\left|w\right|=1$ であるから、&lt;br /&gt;
\[a_{i}=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
w &amp;amp; i=k_{0} \\&lt;br /&gt;
\emptyword &amp;amp; i\neq k_{0}&lt;br /&gt;
\end{cases}&lt;br /&gt;
\]&lt;br /&gt;
を満たす $1\leq k_{0}$ が存在する。このとき、$\Delta'$ の定義から &lt;br /&gt;
\[q_{i}=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
q &amp;amp; i\lt k_{0} \\&lt;br /&gt;
q' &amp;amp; k_{0}\leq i&lt;br /&gt;
\end{cases}&lt;br /&gt;
\]&lt;br /&gt;
であって、$(q, w, q')\in \Delta'_{0}$ である。&lt;br /&gt;
$\Delta'_{0}$ の定義から $(q, w, q')\in \mathof{C}{q, w}$。&lt;br /&gt;
これは記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在することを意味する。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|\gt 1$ のとき: $w=w_{0}a$ とおく（ただし、$a\in\Sigma$）。&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ による $q$ から $q'$ への $\mathautomaton{A}'$ の状態遷移が存在することから&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{k}$ （ただし、各 $i=1, \dots, k$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）。&lt;br /&gt;
# すべての $i\in \{1, \dots, k\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$。&lt;br /&gt;
# $q_{0}=q$, $q_{k}=q'$。&lt;br /&gt;
&lt;br /&gt;
を満たす状態の列 $q_{0}, q_{1}, \dots, q_{k}$ と記号の列 $a_{1}, a_{2}, \dots, a_{k}$が存在する&lt;br /&gt;
（ただし、$k\geq l$）。&lt;br /&gt;
このとき、$w_{0}=a_{1}\dots a_{k_{0}}$, $a=a_{k_{0}+1}$, $1\leq k_{0}\lt k$ を満たす $k_{0}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
すると、$q=q_{0}, q_{1}, \dots, q_{k_{0}}$ は記号列 $w_{0}$ による $q$ から $q_{k_{0}}$ への $\mathautomaton{A}'$ の状態遷移である。&lt;br /&gt;
また、$q_{k_{0}}, q_{k_{0}+1}, \dots, q_{k}=q'$ は記号列 $a$ による $q_{k_{0}}$ から $q'$ への $\mathautomaton{A}'$ の状態遷移である。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から&lt;br /&gt;
記号列 $w_{0}$ による $q$ から $q_{k_{0}}$ への $\mathautomaton{A}$ の状態遷移が存在し、&lt;br /&gt;
また、記号列 $a$ による $q_{k_{0}}$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する。ゆえに、記号列 $w=w_{0}a$ による $q$ から $q'$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
&lt;br /&gt;
以上を踏まえて、$L(\mathautomaton{A})=L(\mathautomaton{A}')$ を示す。&lt;br /&gt;
&lt;br /&gt;
$w\in L(\mathautomaton{A})$ を仮定する。&lt;br /&gt;
$w=\emptyword$ のとき、$F\cap\mathof{C_{\emptyword}}{q_{I}}\neq\emptyset$ である。&lt;br /&gt;
ゆえに、$q_{I}\in F'$。$(q_{I}, \emptyword, q_{I})\in \Delta'$ に注意すると、&lt;br /&gt;
$\emptyword$ による $q_{I}$ から $q_{I}$ への $\mathautomaton{A}'$ の状態遷移が存在するので、&lt;br /&gt;
$\emptyword\in L(\mathautomaton{A}')$。&lt;br /&gt;
&lt;br /&gt;
$w\neq \emptyword$ のとき、&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q\in F$ への $\mathautomaton{A}$ の状態遷移が存在することから、&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q\in F'$ への $\mathautomaton{A}'$ の状態遷移が存在することが速やかにわかる。ゆえに $w\in L(\mathautomaton{A}')$。&lt;br /&gt;
&lt;br /&gt;
以上より $L(\mathautomaton{A})\subseteq L(\mathautomaton{A}')$。&lt;br /&gt;
&lt;br /&gt;
$w\in L(\mathautomaton{A}')$ を仮定する。&lt;br /&gt;
$w=\emptyword$ のとき、$(q_{I}, \emptyword, q_{I})\in \Delta'$ かつ $q_{I}\in F'$ である。&lt;br /&gt;
&lt;br /&gt;
$F\cap\mathof{C_{\emptyword}}{q_{I}}=\emptyset$ のとき、$q_{I}\notin F$。また、$F=F'$ である。&lt;br /&gt;
まとめて、$q_{I}\notin F=F'\ni q_{I}$。これは矛盾である。&lt;br /&gt;
よって、$F\cap\mathof{C_{\emptyword}}{q_{I}}\neq\emptyset$ である。&lt;br /&gt;
ゆえに、$q\in \mathof{C_{\emptyword}}{q_{I}}$, $q\in F$ を満たす状態 $q\in Q$ が存在する。&lt;br /&gt;
$q\in \mathof{C_{\emptyword}}{q_{I}}$ であるから、&lt;br /&gt;
$\emptyword$ による $q_{I}$ から $q$ への $\mathautomaton{A}$ の状態遷移が存在する。&lt;br /&gt;
$q\in F$ であるから $\emptyword\in L(\mathautomaton{A}')$。&lt;br /&gt;
&lt;br /&gt;
$w\neq \emptyword$ のとき、&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q\in F$ への $\mathautomaton{A}'$ の状態遷移が存在することから、&lt;br /&gt;
記号列 $w$ による $q_{I}$ から $q\in F'$ への $\mathautomaton{A}$ の状態遷移が存在することが速やかにわかる。&lt;br /&gt;
&lt;br /&gt;
以上より $L(\mathautomaton{A}')\subseteq L(\mathautomaton{A})$。&lt;br /&gt;
&lt;br /&gt;
$L(\mathautomaton{A})\subseteq L(\mathautomaton{A}')$ より$L(\mathautomaton{A})=L(\mathautomaton{A}')$。&lt;br /&gt;
$\mathautomaton{A}'$ が $\emptyword$ 動作なしの有限オートマトンであるから、命題の主張を得る。&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
==  参考文献 ==&lt;br /&gt;
# 新屋 良磨、オートマトン理論再考、コンピュータ ソフトウェア、2017、34 巻、3 号、p. 3_3-3_35、公開日 2017/09/25、Print ISSN 0289-6540、[https://doi.org/10.11309/jssst.34.3_3]、[https://www.jstage.jst.go.jp/article/jssst/34/3/34_3_3/_article/-char/ja]&lt;br /&gt;
# 五十嵐喜英他、『[数理情報科学シリーズ ２４ オートマトンと形式言語の基礎]』、牧野書店、2011&lt;br /&gt;
# Martin Aigner,Guenter M. Ziegler,Karl H. Hofmann, [&amp;quot;Proofs from THE BOOK&amp;quot;], Springer, 2004&lt;br /&gt;
&lt;br /&gt;
====== 脚注 ======&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 関連項目  ==&lt;br /&gt;
* [[形式言語]]&lt;br /&gt;
* [[正規表現]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
|+ Chomsky階層&lt;br /&gt;
! 文法のタイプ&lt;br /&gt;
! 言語のクラス&lt;br /&gt;
! 計算モデル&lt;br /&gt;
|-&lt;br /&gt;
! タイプ0&lt;br /&gt;
| [[句構造言語]]&lt;br /&gt;
| [[Turingマシン]]&lt;br /&gt;
|-&lt;br /&gt;
! タイプ1&lt;br /&gt;
| [[文脈依存言語]]&lt;br /&gt;
| [[線形有界オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ2&lt;br /&gt;
| [[文脈自由言語]]&lt;br /&gt;
| [[プッシュダウン・オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ3&lt;br /&gt;
| [[正規言語]]&lt;br /&gt;
| [[有限オートマトン]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E6%95%B0%E5%AD%A6%E7%B3%BB%E3%83%96%E3%83%AD%E3%82%AC%E3%83%BC%E3%81%AE%E4%B8%80%E8%A6%A7&amp;diff=5760</id>
		<title>数学系ブロガーの一覧</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E6%95%B0%E5%AD%A6%E7%B3%BB%E3%83%96%E3%83%AD%E3%82%AC%E3%83%BC%E3%81%AE%E4%B8%80%E8%A6%A7&amp;diff=5760"/>
		<updated>2021-05-02T11:38:05Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: Change to media wiki style&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;noinclude&amp;gt;&lt;br /&gt;
{{TOC |align=right |noautonum=1 }}&amp;lt;!-- 右寄せ連番無し目次をここに表示 --&amp;gt;&lt;br /&gt;
&amp;lt;/noinclude&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 日本語 ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
!ブログ名&lt;br /&gt;
!コンテンツの範囲&lt;br /&gt;
!コンテンツの内容&lt;br /&gt;
|-&lt;br /&gt;
|[https://mathtrain.jp/ 高校数学の美しい物語]&lt;br /&gt;
|高校数学～&lt;br /&gt;
|高校数学から数学オリンピック・大学数学レベルまで幅広いトピックを紹介&lt;br /&gt;
|-&lt;br /&gt;
|[https://tsujimotter.hatenablog.com/ tsujimotterのノートブック]&lt;br /&gt;
|大学数学全般&lt;br /&gt;
|「日曜数学者」tsujimotter氏による大学数学の初等な切り口からの解説&lt;br /&gt;
|-&lt;br /&gt;
| [http://integers.hatenablog.com/archive INTEGERS]&lt;br /&gt;
|数&lt;br /&gt;
|数にまつわる幅広いトピックを解説&lt;br /&gt;
|-&lt;br /&gt;
|[http://mathematician.blog.jp/ 数学探究所]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[https://tetobourbaki.hatenablog.com/ 記号の世界]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[http://blog.livedoor.jp/ron1827-algebras/ 龍孫江の数学日誌]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[https://yamyamtopo.wordpress.com/ トポロジーいろいろ]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[https://mathcommunication.hatenablog.com/ 数学、ときどき統計、ところによりＩＴ]&lt;br /&gt;
|測度論、数理統計&lt;br /&gt;
|純粋数学寄りの統計学を解説。テンソル積やルベーグ積分の記事もある。&lt;br /&gt;
|-&lt;br /&gt;
|[http://recursion-theory.blogspot.com/ とりマセΣ^0_2]&lt;br /&gt;
|数理論理学、再帰理論&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 英語 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
!ブログ名&lt;br /&gt;
!コンテンツの範囲&lt;br /&gt;
!コンテンツの内容&lt;br /&gt;
|-&lt;br /&gt;
|[https://terrytao.wordpress.com/ Terence Tao]&lt;br /&gt;
|数学全般&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[https://amathew.wordpress.com/ Climbing Mount Bourbaki]&lt;br /&gt;
|数学全般&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.dam.brown.edu/people/mumford/blog.html David Mumford]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[https://dantopology.wordpress.com/ Dan Ma's Topology Blog]&lt;br /&gt;
|[[位相空間論]]&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[https://ldtopology.wordpress.com/ Low Dimensional Topology]&lt;br /&gt;
|低次元トポロジー&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[https://sbseminar.wordpress.com/ Secret Blogging Seminar]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[http://jdh.hamkins.org/ Joel David Hamkins]&lt;br /&gt;
|数理論理学、集合論&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[http://blog.assafrinot.com/ Assaf Rinot]&lt;br /&gt;
|集合論&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[https://rjlipton.wordpress.com/ Gödel’s Lost Letter and P=NP]&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.galoisrepresentations.com/ Persiflage]&lt;br /&gt;
|ガロア表現&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==  関連 ==&lt;br /&gt;
* [[数学系YouTuberの一覧]]&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E6%95%B0%E5%AD%A6%E7%B3%BBYouTuber%E3%81%AE%E4%B8%80%E8%A6%A7&amp;diff=5662</id>
		<title>数学系YouTuberの一覧</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E6%95%B0%E5%AD%A6%E7%B3%BBYouTuber%E3%81%AE%E4%B8%80%E8%A6%A7&amp;diff=5662"/>
		<updated>2021-05-02T03:39:15Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: Fix typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 大学レベル以上 ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
!チャンネル名&lt;br /&gt;
!コンテンツの範囲&lt;br /&gt;
!コンテンツの内容&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCzdR-dZtWT2_6N6p9sJh3yw ロダン – バーチャル数学徒]&lt;br /&gt;
|最先端(代数)&lt;br /&gt;
|本人の研究テーマを分かりやすく解説&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCtP2OI-4D_AHehTHSILwiSA 梅崎直也]&lt;br /&gt;
|大学～最先端&lt;br /&gt;
|幅広い話題を解説。IUT理論の解説動画もある。&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCyhP4s6961ebUp-jPv4yDwg ゆる圏 YouTube]&lt;br /&gt;
|大学(圏論)&lt;br /&gt;
|ベーシック圏論のひとりセミナー。非常に丁寧。&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCO34XpHxdG8P2n5aTPXSaZQ 龍孫江の数学日誌 in YouTube]&lt;br /&gt;
|大学(代数、位相)&lt;br /&gt;
|丁寧に大学院入試レベルの問題を解説&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCvZSwTzNkSZQvUX9Ktpar7g gest N]&lt;br /&gt;
|大学(数論)&lt;br /&gt;
|代数的整数論と楕円曲線を解説。リンク先音量注意。&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCFY0EBEEKkXltp11gMfst0A 曲直瀬おめが。]&lt;br /&gt;
|大学(微分幾何)&lt;br /&gt;
|多様体、リーマン幾何の講義動画&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCw4bRUt733vSqIEJ1n8FcFg 数学ボーイZ / SUGAKU BOY Z]&lt;br /&gt;
|大学（集合、位相、代数）&lt;br /&gt;
|軽いノリで数学を解説する新しいスタイル&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCbYHmAIp04jX4ThPXCDkThQ 底辺数学徒の備忘録]&lt;br /&gt;
|大学(微積・線形)&lt;br /&gt;
|大学院入試対策の基礎数学&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCJb1bywggU5Vlbb4R5zPZrw 240が教える数学]&lt;br /&gt;
|大学(微積・線形)&lt;br /&gt;
|リンク先音量注意&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCRAWk5rqZVEC_qUii-jdxhg バーチャル数学科大学院生いたりん]&lt;br /&gt;
|大学(代数)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCwsTJy8qRylVe5xT5DQtpEQ Takayuki Kihara Lab]&lt;br /&gt;
|大学(微積、数理論理学)&lt;br /&gt;
|解析学、数理論理学の話題を面白く、わかりやすいたとえを用いて解説している。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 小学～大学 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
! チャンネル名&lt;br /&gt;
! コンテンツの範囲&lt;br /&gt;
! コンテンツの内容&lt;br /&gt;
|-&lt;br /&gt;
|[https://okedou.app/ okedou]&lt;br /&gt;
|高校&lt;br /&gt;
|高校数学のYouTube動画を効率的に検索できるポータルサイト&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCqmWJJolqAgjIdLqK3zD1QQ 予備校のノリで学ぶ「大学の数学・物理」]&lt;br /&gt;
|高校～大学(微積・線型、統計)&lt;br /&gt;
|数学だけでなく物理、化学も充実&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCOjBG3Bu6sDxfGi15SMNF1Q Masaki Koga ［数学解説］]&lt;br /&gt;
|高校(大学入試問題)～大学(線型代数)&lt;br /&gt;
|高校レベルの授業動画と入試問題を解いていく動画&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCd_xorYtl-M6coWUkwGV_Lw 式変形チャンネル]&lt;br /&gt;
|高校～大学(解析学、確率、群論)&lt;br /&gt;
|気楽なネタ動画から群論の一通りの授業動画まで幅広い。数学を実生活に応用した話題もある。&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCW_Sl9toAKfgAe8HVxylUOA AKITOの特異点]&lt;br /&gt;
|中学～大学&lt;br /&gt;
|連分数やベルトラン・チェビシェフの定理などユニークなシリーズ物が多数&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCye8PYMLvXg-h48lTPFwb2w 鈴木貫太郎]&lt;br /&gt;
|高校(大学入試問題)&lt;br /&gt;
|大学入試問題をライブ感覚で解いていく動画&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/user/toaruotokohaichi とある男が授業をしてみた]&lt;br /&gt;
|小学～高校&lt;br /&gt;
|小学から高校までの算数・数学の単元を網羅した講義動画。数学だけでなく他科目も扱っている。&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCdWg4AB7faUx0lXMlToMN7A ぶおとこばってん]&lt;br /&gt;
|高校(入試解説等)&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 応用系やその他ユニークな動画 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
! チャンネル名&lt;br /&gt;
!コンテンツの範囲&lt;br /&gt;
!コンテンツの内容&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UC2lJYodMaAfFeFQrGUwhlaQ Alcia Solid Project]&lt;br /&gt;
|大学(統計、確率微分方程式、機械学習)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/user/4429sekine 相転移P]&lt;br /&gt;
|大学(物理寄りの応用数学)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCewC__Q7dVzBfs7bBihwOBA 豊穣ミノリ / 豊穣折紙 【Hojo Origami】]&lt;br /&gt;
|高校～大学(折り紙の数学)&lt;br /&gt;
|折り紙に特化したVTuber。折り紙公理などユニークな話題がある。&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCoXVCCF1YjlP87KX7DK-TWQ math channel]&lt;br /&gt;
|小学～中学&lt;br /&gt;
|体験型算数教育Math channelの公式動画。角を3等分する定規やモンティ・ホール問題など興味深い話題多数&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==  関連 ==&lt;br /&gt;
* [[数学系ブロガーの一覧]]&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E6%95%B0%E5%AD%A6%E7%B3%BBYouTuber%E3%81%AE%E4%B8%80%E8%A6%A7&amp;diff=5661</id>
		<title>数学系YouTuberの一覧</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E6%95%B0%E5%AD%A6%E7%B3%BBYouTuber%E3%81%AE%E4%B8%80%E8%A6%A7&amp;diff=5661"/>
		<updated>2021-05-02T02:42:46Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: Change to media wiki style&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 大学レベル以上 ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
|+チャンネル名&lt;br /&gt;
!コンテンツの範囲&lt;br /&gt;
!コンテンツの内容&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCzdR-dZtWT2_6N6p9sJh3yw ロダン – バーチャル数学徒]&lt;br /&gt;
|最先端(代数)&lt;br /&gt;
|本人の研究テーマを分かりやすく解説&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCtP2OI-4D_AHehTHSILwiSA 梅崎直也]&lt;br /&gt;
|大学～最先端&lt;br /&gt;
|幅広い話題を解説。IUT理論の解説動画もある。&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCyhP4s6961ebUp-jPv4yDwg ゆる圏 YouTube]&lt;br /&gt;
|大学(圏論)&lt;br /&gt;
|ベーシック圏論のひとりセミナー。非常に丁寧。&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCO34XpHxdG8P2n5aTPXSaZQ 龍孫江の数学日誌 in YouTube]&lt;br /&gt;
|大学(代数、位相)&lt;br /&gt;
|丁寧に大学院入試レベルの問題を解説&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCvZSwTzNkSZQvUX9Ktpar7g gest N]&lt;br /&gt;
|大学(数論)&lt;br /&gt;
|代数的整数論と楕円曲線を解説。リンク先音量注意。&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCFY0EBEEKkXltp11gMfst0A 曲直瀬おめが。]&lt;br /&gt;
|大学(微分幾何)&lt;br /&gt;
|多様体、リーマン幾何の講義動画&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCw4bRUt733vSqIEJ1n8FcFg 数学ボーイZ / SUGAKU BOY Z]&lt;br /&gt;
|大学（集合、位相、代数）&lt;br /&gt;
|軽いノリで数学を解説する新しいスタイル&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCbYHmAIp04jX4ThPXCDkThQ 底辺数学徒の備忘録]&lt;br /&gt;
|大学(微積・線形)&lt;br /&gt;
|大学院入試対策の基礎数学&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCJb1bywggU5Vlbb4R5zPZrw 240が教える数学]&lt;br /&gt;
|大学(微積・線形)&lt;br /&gt;
|リンク先音量注意&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCRAWk5rqZVEC_qUii-jdxhg バーチャル数学科大学院生いたりん]&lt;br /&gt;
|大学(代数)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCwsTJy8qRylVe5xT5DQtpEQ Takayuki Kihara Lab]&lt;br /&gt;
|大学(微積、数理論理学)&lt;br /&gt;
|解析学、数理論理学の話題を面白く、わかりやすいたとえを用いて解説している。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== 小学～大学 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
|+ チャンネル名&lt;br /&gt;
! コンテンツの範囲&lt;br /&gt;
! コンテンツの内容&lt;br /&gt;
|-&lt;br /&gt;
|[https://okedou.app/ okedou]&lt;br /&gt;
|高校&lt;br /&gt;
|高校数学のYouTube動画を効率的に検索できるポータルサイト&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCqmWJJolqAgjIdLqK3zD1QQ 予備校のノリで学ぶ「大学の数学・物理」]&lt;br /&gt;
|高校～大学(微積・線型、統計)&lt;br /&gt;
|数学だけでなく物理、化学も充実&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCOjBG3Bu6sDxfGi15SMNF1Q Masaki Koga ［数学解説］]&lt;br /&gt;
|高校(大学入試問題)～大学(線型代数)&lt;br /&gt;
|高校レベルの授業動画と入試問題を解いていく動画&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCd_xorYtl-M6coWUkwGV_Lw 式変形チャンネル]&lt;br /&gt;
|高校～大学(解析学、確率、群論)&lt;br /&gt;
|気楽なネタ動画から群論の一通りの授業動画まで幅広い。数学を実生活に応用した話題もある。&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCW_Sl9toAKfgAe8HVxylUOA AKITOの特異点]&lt;br /&gt;
|中学～大学&lt;br /&gt;
|連分数やベルトラン・チェビシェフの定理などユニークなシリーズ物が多数&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCye8PYMLvXg-h48lTPFwb2w 鈴木貫太郎]&lt;br /&gt;
|高校(大学入試問題)&lt;br /&gt;
|大学入試問題をライブ感覚で解いていく動画&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/user/toaruotokohaichi とある男が授業をしてみた]&lt;br /&gt;
|小学～高校&lt;br /&gt;
|小学から高校までの算数・数学の単元を網羅した講義動画。数学だけでなく他科目も扱っている。&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCdWg4AB7faUx0lXMlToMN7A ぶおとこばってん]&lt;br /&gt;
|高校(入試解説等)&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== 応用系やその他ユニークな動画 ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
|+ チャンネル名&lt;br /&gt;
!コンテンツの範囲&lt;br /&gt;
!コンテンツの内容&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UC2lJYodMaAfFeFQrGUwhlaQ Alcia Solid Project]&lt;br /&gt;
|大学(統計、確率微分方程式、機械学習)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/user/4429sekine 相転移P]&lt;br /&gt;
|大学(物理寄りの応用数学)&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCewC__Q7dVzBfs7bBihwOBA 豊穣ミノリ / 豊穣折紙 【Hojo Origami】]&lt;br /&gt;
|高校～大学(折り紙の数学)&lt;br /&gt;
|折り紙に特化したVTuber。折り紙公理などユニークな話題がある。&lt;br /&gt;
|-&lt;br /&gt;
|[https://www.youtube.com/channel/UCoXVCCF1YjlP87KX7DK-TWQ math channel]&lt;br /&gt;
|小学～中学&lt;br /&gt;
|体験型算数教育Math channelの公式動画。角を3等分する定規やモンティ・ホール問題など興味深い話題多数&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==  関連 ==&lt;br /&gt;
* [[数学系ブロガーの一覧]]&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E6%AD%A3%E8%A6%8F%E8%A8%80%E8%AA%9E&amp;diff=4910</id>
		<title>正規言語</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E6%AD%A3%E8%A6%8F%E8%A8%80%E8%AA%9E&amp;diff=4910"/>
		<updated>2021-04-20T15:35:49Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: Fix typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:形式言語理論|セイキゲンゴ]]&lt;br /&gt;
{{begin |preamble}}&lt;br /&gt;
&amp;lt;!-- 参考文献 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 定理環境 --&amp;gt;&lt;br /&gt;
{{newtheorem |type=theorem |display=定理}}&lt;br /&gt;
{{newtheorem |type=lemma |display=補題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=definition |display=定義 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=prop |display=命題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=example |display=例 |family=theorem }}&lt;br /&gt;
&amp;lt;!-- MathJax commands --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\newcommand{\mathsetextension}[1]{%&lt;br /&gt;
\left\{ #1 \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathsetintension}[2]{%&lt;br /&gt;
\left\{ #1 \left| #2 \right.\right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathof}[2]{%&lt;br /&gt;
\mathop{#1}\left(#2\right)%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathderiv}{\mathrel{\mathop{\Rightarrow}^{*}}}&lt;br /&gt;
\newcommand{\mathgen}{\rightsquigarrow}&lt;br /&gt;
\newcommand{\mathgenfun}[1]{\mathbf{#1}}&lt;br /&gt;
\newcommand{\mirrorim}[1]{\overleftarrow{#1}}&lt;br /&gt;
\newcommand{\emptyword}{\varepsilon}&lt;br /&gt;
\newcommand{\kleenecl}[1]{{#1}^{*}}&lt;br /&gt;
\newcommand{\interpret}[1]{[\![#1]\!]}&lt;br /&gt;
\newcommand{\mathautomaton}[1]{\mathcal{#1}}&lt;br /&gt;
\newcommand{\mathnat}{\mathbb{N}}&lt;br /&gt;
\newcommand{\qed}{\blacksquare}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
{{end |preamble}}&lt;br /&gt;
'''正規言語（regular language）'''とは右線形文法(right linear grammar)または左線形文法(left linear grammar)によって定められる形式言語である。&lt;br /&gt;
&lt;br /&gt;
右線形文法は句構造文法の一種であるから、&lt;br /&gt;
右線形言語は[[句構造言語]]の一種である。&lt;br /&gt;
&lt;br /&gt;
また、右線形文法は文脈自由文法の一種であるから、&lt;br /&gt;
右線形言語は[[文脈自由言語]]の一種である。&lt;br /&gt;
&lt;br /&gt;
以下、項目[[形式言語]]、[[句構造言語]]において定められている言語上の演算や文法の等価性の定義などについては特に断らず用いる。&lt;br /&gt;
&lt;br /&gt;
==  正規言語の導入 ==&lt;br /&gt;
この節では'''正規言語'''を定義する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=definition |name=右線形文法 |label=def-right_linear_grammar }}&lt;br /&gt;
'''右線形文法（right linear grammar）'''とは&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# $\Sigma$ と互いに素な'''変数記号（variable）'''の空でない有限集合 $V$&lt;br /&gt;
# '''生成規則（production rule）'''と呼ばれる有限集合 $R \subseteq V \times (\kleenecl{\Sigma}V)\cup (\kleenecl{\Sigma})$&lt;br /&gt;
# '''開始記号(start symbol)'''または'''初期記号'''と呼ばれる $S\in V$&lt;br /&gt;
&lt;br /&gt;
の４つ組$(V, \Sigma, R, S)$である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
これは、[[句構造言語#def-phrase_structure_grammar | 句構造文法]]の一種である。また、[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]の一種である。&lt;br /&gt;
&lt;br /&gt;
[[句構造言語]]のときと同様、$\Sigma$ の元を'''終端記号(terminal)'''、$V$ の元を'''非終端記号(non-terminal)'''と呼ぶことも多い。&lt;br /&gt;
&lt;br /&gt;
以下では、元$(A, \alpha)\in R$ のことを$A\mathgen\alpha$と書く。&lt;br /&gt;
&lt;br /&gt;
[[句構造言語#def-derivation | 導出]]、[[句構造言語#def-phrase_structure_lang | 生成される言語]]などは&lt;br /&gt;
句構造言語と同様に定義される。&lt;br /&gt;
&lt;br /&gt;
'''正規言語'''とは何らかの右線形文法によって生成される言語のことを言う。&lt;br /&gt;
&lt;br /&gt;
==  正規言語の例 ==&lt;br /&gt;
この節では正規言語の例を紹介する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列全体 |label=ex-all_lang }}&lt;br /&gt;
$V=\left\{ S \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen\emptyword, S\mathgen 0S, S\mathgen 1S \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
$0$ と $1$ からなる有限記号列全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、$0$ と $1$ からなる有限記号列全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる。&lt;br /&gt;
&lt;br /&gt;
\begin{gather*}&lt;br /&gt;
S \Rightarrow \emptyword \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 0\emptyword = 0 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 1\emptyword = 1 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 00\emptyword = 00 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 01\emptyword = 01 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 10\emptyword = 10 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 11\emptyword = 11 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 000S \Rightarrow 000\emptyword = 000 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 00S \Rightarrow 001S \Rightarrow 001\emptyword = 001 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 010S \Rightarrow 010\emptyword = 010 \\&lt;br /&gt;
S \Rightarrow 0S \Rightarrow 01S \Rightarrow 011S \Rightarrow 011\emptyword = 011 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 100S \Rightarrow 100\emptyword = 100 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 10S \Rightarrow 101S \Rightarrow 101\emptyword = 101 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 110S \Rightarrow 110\emptyword = 110 \\&lt;br /&gt;
S \Rightarrow 1S \Rightarrow 11S \Rightarrow 111S \Rightarrow 111\emptyword = 111&lt;br /&gt;
\end{gather*}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体 |label=ex-only_three_one_lang }}&lt;br /&gt;
$V=\left\{ S, A_{1}, A_{2}, A_{3} \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen 0S, S\mathgen 1A_{1}, A_{1}\mathgen 0A_{1}, A_{1}\mathgen 1A_{2}, A_{2}\mathgen 0A_{2}, A_{2}\mathgen 1A_{3}, A_{3}\mathgen 0A_{3}, A_{3}\mathgen \emptyword \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、$0$ と $1$ からなる有限記号列のうち、$1$をちょうど3個含む記号列全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
S &amp;amp;\Rightarrow 1A_{1} \Rightarrow 11A_{2} \Rightarrow 111A_{3} \Rightarrow 111\emptyword = 111 \\&lt;br /&gt;
S &amp;amp;\Rightarrow 0S \\&lt;br /&gt;
&amp;amp;\Rightarrow 01A_{1} \Rightarrow 010A_{1} \Rightarrow 0100A_{1} \\&lt;br /&gt;
&amp;amp;\Rightarrow 01001A_{2} \Rightarrow 010010A_{2} \Rightarrow 0100100A_{2} \Rightarrow 01001000A_{2} \\&lt;br /&gt;
&amp;amp;\Rightarrow 010010001A_{3} \Rightarrow 0100100010A_{3} \Rightarrow 01001000100A_{3} \Rightarrow 010010001000A_{3} \Rightarrow 0100100010000A_{3} \Rightarrow 0100100010000\emptyword =0100100010000&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=自然数の二進表現全体 |label=ex-bi_lang }}&lt;br /&gt;
$V=\left\{ S, A_{1} \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen 0, S\mathgen 1A_{1}, A_{1}\mathgen 0A_{1}, A_{1}\mathgen 1A_{1}, A_{1}\mathgen \emptyword \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は右線形文法である。&lt;br /&gt;
&lt;br /&gt;
この文法によって生成される言語は&lt;br /&gt;
自然数の二進表現全体である。&lt;br /&gt;
&lt;br /&gt;
すなわち、自然数の二進表現全体は正規言語である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
上記の文法による導出の例をいくつかあげる&lt;br /&gt;
&lt;br /&gt;
\begin{gather*}&lt;br /&gt;
S \Rightarrow 0 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 1\emptyword = 1 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 10\emptyword = 10 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 11\emptyword = 11 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 100\emptyword = 100 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 101\emptyword = 101 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 100\emptyword = 110 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 111\emptyword = 111 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 1000A_{1} \Rightarrow 1000\emptyword = 1000 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 100A_{1} \Rightarrow 1001A_{1} \Rightarrow 1001\emptyword = 1001 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 1010A_{1} \Rightarrow 1010\emptyword = 1010 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 10A_{1} \Rightarrow 101A_{1} \Rightarrow 1011A_{1} \Rightarrow 1011\emptyword = 1011 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 1100A_{1} \Rightarrow 1100\emptyword = 1100 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 110A_{1} \Rightarrow 1101A_{1} \Rightarrow 1101\emptyword = 1101 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 1110A_{1} \Rightarrow 1110\emptyword = 1110 \\&lt;br /&gt;
S \Rightarrow 1A_{1} \Rightarrow 11A_{1} \Rightarrow 111A_{1} \Rightarrow 1111A_{1} \Rightarrow 1111\emptyword = 1111&lt;br /&gt;
\end{gather*}&lt;br /&gt;
&lt;br /&gt;
==  正規表現、有限オートマトンとの関係 ==&lt;br /&gt;
この節では正規言語、[[正規表現]]および[[有限オートマトン]]との関係を述べる。以下では[[正規表現]]と[[有限オートマトン]]の定義などは既知とする。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=theorem |label=thm-regularandNFA }}&lt;br /&gt;
言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $L=\interpret{\alpha}$ なる正規表現 $\alpha$ が存在する。&lt;br /&gt;
# $L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
この節ではこの定理を証明する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=lemma |label=lemma-of-thm-regularandNFA }}&lt;br /&gt;
正規言語 $G=(V, \Sigma, R, S)$ に対して、&lt;br /&gt;
$G$ と[[句構造言語#句構造文法の等価性 | 等価 ]]であって、&lt;br /&gt;
すべての生成規則の右辺が&lt;br /&gt;
$(\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
の元である右線形文法が存在する。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
'''{{ref |type=lemma |label=lemma-of-thm-regularandNFA }}の証明'''&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
正規言語 $G=(V, \Sigma, R, S)$ について、&lt;br /&gt;
$R=\{A_{0}\mathgen \alpha_{0}, \ldots, A_{n}\mathgen \alpha_{n}\}$ （ただし $n\in\mathnat$）&lt;br /&gt;
とする。&lt;br /&gt;
&lt;br /&gt;
$G_{i}=(V_{i}, \Sigma, R_{i}, S)$&lt;br /&gt;
（ただし $n=0, \ldots, n+1$）&lt;br /&gt;
を次のように定義する。&lt;br /&gt;
&lt;br /&gt;
* $G_{0}=G$&lt;br /&gt;
* $\alpha_{i}\in (\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
のとき、$G_{i+1}:=G_{i}$ とする。&lt;br /&gt;
* $\alpha_{i}\in \kleenecl{\Sigma} \setminus (\Sigma \cup\{\emptyword\})$ のとき、$\alpha_{i}=a_{0}\ldots a_{m}$ （ただし、$m$ は $1$ 以上の自然数であって、$a_{j}\in \Sigma$ for $j\in \mathnat$）とする。&lt;br /&gt;
** $V_{i+1}:=V_{i}\cup \{B_{0}, \ldots, B_{m}\}$ （ただし、各 $B_{j}$ は $B_{j}\notin V_{i}\cup \Sigma$ を満たす変数記号）。&lt;br /&gt;
** $R_{i+1}:=R_{i}\setminus \{A_{i}\mathgen \alpha_{i}\}\cup \{A_{i} \mathgen a_{0}B_{0}, B_{0} \mathgen a_{1}B_{1}, \ldots, B_{m-1} \mathgen a_{m}B_{m}, B_{m}\mathgen \emptyword\}$。&lt;br /&gt;
* $\alpha_{i}\in \kleenecl{\Sigma}V\setminus (\Sigma \cup\{\emptyword\})V$ のとき、$\alpha_{i}=a_{0}\ldots a_{m} A'_{i}$ （ただし、$m$ は $1$ 以上の自然数であって、$a_{j}\in \Sigma$ for $j\in \mathnat$）とする。&lt;br /&gt;
** $V_{i+1}:=V_{i}\cup \{B_{0}, \ldots, B_{m}\}$ （ただし、各 $B_{j}$ は $B_{j}\notin V_{i}\cup \Sigma$ を満たす変数記号）。&lt;br /&gt;
** $R_{i+1}:=R_{i}\setminus \{A_{i}\mathgen \alpha_{i}\}\cup \{A_{i} \mathgen a_{0}B_{0}, B_{0} \mathgen a_{1}B_{1}, \ldots, B_{m-1} \mathgen a_{m}B_{m}, B_{m}\mathgen A'_{i}\}$。&lt;br /&gt;
&lt;br /&gt;
各 $i$ に対して、 $L(G_{i})=L(G_{i+1})$ に注意すると&lt;br /&gt;
$G_{n+1}$ が求める文法であることがわかる。&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
'''{{ref |type=theorem |label=thm-regularandNFA }}の証明'''&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
(2. $\Rightarrow$ 1.)&lt;br /&gt;
$L=\interpret{\alpha}$ なる正規表現 $\alpha$ が存在するとき、&lt;br /&gt;
$L$ を生成する右線形文法が存在することを言えば良い。&lt;br /&gt;
&lt;br /&gt;
正規表現の構成についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
Case 1.&lt;br /&gt;
$L=\interpret{\emptyset}=\emptyset$ のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \emptyset, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 2.&lt;br /&gt;
$L=\interpret{\emptyword}=\{\emptyword\}$ のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \{S \mathgen \emptyword\}, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 3.&lt;br /&gt;
$L=\interpret{a}=\{a\}$ (ただし、$a\in \Sigma$) のとき、&lt;br /&gt;
$L$ を生成する右線形文法として&lt;br /&gt;
$G=(\{S\}, \Sigma, \{S \mathgen a\}, S)$ が存在する。&lt;br /&gt;
&lt;br /&gt;
Case 4.&lt;br /&gt;
$L=\interpret{\alpha\beta}=\interpret{\alpha}\cdot\interpret{\beta}$&lt;br /&gt;
（ただし、$\alpha$, $\beta$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$, $\interpret{\beta}$&lt;br /&gt;
を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$\interpret{\alpha}$ を生成する右線形文法を&lt;br /&gt;
$G=(V_{\alpha}, \Sigma, R_{\alpha}, S_{\alpha})$、&lt;br /&gt;
$\interpret{\beta}$ を生成する右線形文法を&lt;br /&gt;
$G=(V_{\beta}, \Sigma, R_{\beta}, S_{\beta})$ とする。&lt;br /&gt;
このとき、$V_{\alpha}\cap V_{\beta}=\emptyset$ と仮定しても&lt;br /&gt;
一般性を失わない（必要であれば、変数記号を適切に置き換えれば良い）。&lt;br /&gt;
&lt;br /&gt;
さて、&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
R_{\alpha}^{(V)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R_{\alpha}}{\gamma \in \kleenecl{\Sigma}V}  \\&lt;br /&gt;
R_{\alpha}^{(0)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R_{\alpha}}{\gamma \in \kleenecl{\Sigma}}  &lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$R_{\alpha}=R_{\alpha}^{(V)}\cup R_{\alpha}^{(0)}$,&lt;br /&gt;
$R_{\alpha}^{(V)}\cap R_{\alpha}^{(0)}=\emptyset$ である。&lt;br /&gt;
\[R_{\alpha}^{(S_{\beta})}:=\mathsetintension{A\mathgen \gamma S_{\beta}}{A\mathgen \gamma \in R_{\alpha}, \gamma \in \kleenecl{\Sigma}}\]&lt;br /&gt;
とすると、&lt;br /&gt;
$G=(V_{\alpha}\cup V_{\beta}, \Sigma, R_{\alpha}^{V}\cup R_{\alpha}^{(S_{\beta})}\cup R_{\beta}, S_{\alpha})$&lt;br /&gt;
は$\interpret{\alpha}\cdot\interpret{\beta}$ を生成する右線形文法である。&lt;br /&gt;
&lt;br /&gt;
Case 5.&lt;br /&gt;
$L=\interpret{\alpha +\beta}=\interpret{\alpha}\cup \interpret{\beta}$&lt;br /&gt;
（ただし、$\alpha$, $\beta$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$, $\interpret{\beta}$&lt;br /&gt;
を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$\interpret{\alpha}$ を生成する右線形文法を&lt;br /&gt;
$G=(V_{\alpha}, \Sigma, R_{\alpha}, S_{\alpha})$、&lt;br /&gt;
$\interpret{\beta}$ を生成する右線形文法を&lt;br /&gt;
$G=(V_{\beta}, \Sigma, R_{\beta}, S_{\beta})$ とおく&lt;br /&gt;
（ただし、$V_{\alpha}\cap V_{\beta}=\emptyset$ とする）。&lt;br /&gt;
&lt;br /&gt;
このとき、右線形文法&lt;br /&gt;
$G=(V_{\alpha}\cup V_{\beta}\cup \{S\}, \Sigma, R_{\alpha}\cup R_{\beta}\cup \{S\mathgen S_{\alpha}, S\mathgen S_{\beta}\}, S)$&lt;br /&gt;
（ただし、$S\notin V_{\alpha}\cup V_{\beta}$）は&lt;br /&gt;
$\interpret{\alpha}\cup \interpret{\beta}$ を生成する。&lt;br /&gt;
&lt;br /&gt;
Case 6.&lt;br /&gt;
$L=\interpret{\kleenecl{\alpha}}=\kleenecl{\interpret{\alpha}}$&lt;br /&gt;
（ただし、$\alpha$ は正規表現）とする。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から $\interpret{\alpha}$&lt;br /&gt;
を生成する右線形文法がそれぞれ存在する。&lt;br /&gt;
$\interpret{\alpha}$ を生成する右線形文法を&lt;br /&gt;
$G=(V, \Sigma, R, S)$ とする。&lt;br /&gt;
&lt;br /&gt;
さて、&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
R^{(V)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R}{\gamma \in \kleenecl{\Sigma}V} \\&lt;br /&gt;
R^{(0)}&amp;amp;=\mathsetintension{A\mathgen \gamma \in R}{\gamma \in \kleenecl{\Sigma}}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$R=R^{(V)}\cup R^{(0)}$,&lt;br /&gt;
$R^{(V)}\cap R^{(0)}=\emptyset$ である。&lt;br /&gt;
&lt;br /&gt;
\[R^{(S)}:=\mathsetintension{A\mathgen \gamma S}{A\mathgen \gamma \in R, \gamma \in \kleenecl{\Sigma}}\]&lt;br /&gt;
とすると、右線形文法&lt;br /&gt;
$G=(V, \Sigma, R^{(V)}\cup R^{(S)}\cup \{S\mathgen \emptyword\}, S)$ は&lt;br /&gt;
$\kleenecl{\interpret{\alpha}}$ を生成する。&lt;br /&gt;
&lt;br /&gt;
以上、Case 1-6 より(2. $\Rightarrow$ 1.) は示された。&lt;br /&gt;
&lt;br /&gt;
(1. $\Rightarrow$ 3.)&lt;br /&gt;
$L$ が正規言語であるとき、補題 2から&lt;br /&gt;
すべての生成規則の右辺が&lt;br /&gt;
$(\Sigma \cup\{\emptyword\})(V \cup\{\emptyword\})$&lt;br /&gt;
の元である$L$ を生成する右線形文法が存在する。&lt;br /&gt;
この文法を $G=(V, \Sigma, R, S)$ とする。&lt;br /&gt;
&lt;br /&gt;
まず、有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \delta, q_{I}, F)$&lt;br /&gt;
を次のように定義する。&lt;br /&gt;
&lt;br /&gt;
* $Q=V \cup \{f\}$ （ただし、$f\notin V$）&lt;br /&gt;
* $q_{I}=S$&lt;br /&gt;
* $\Delta = \{(A, a, A') | A, A'\in V, a\in \Sigma\cup\{\emptyword\}, A \mathgen aA'\in R \} \cup \{ (A, a, f) | A\in V, a\in \Sigma\cup\{\emptyword\}, A \mathgen a\in R\} \}$&lt;br /&gt;
* $F=\{f\}$&lt;br /&gt;
&lt;br /&gt;
次に、$wA\in \kleenecl{\Sigma}V$&lt;br /&gt;
に対して以下の２条件は同値であることを示す。&lt;br /&gt;
&lt;br /&gt;
(a) $S$ から始まる&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G}\cdots \Rightarrow_{G} \alpha_{n}(=wA)\]&lt;br /&gt;
(ただし、$\alpha_{i}=w_{i}A_{i}$ for $1\leq i\leq n$)&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
&lt;br /&gt;
(b) 記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ A_{0}, A_{1}, \ldots, A_{n}\]&lt;br /&gt;
（ただし、$A_{0}=S$, $A_{n}=A$）が存在する。&lt;br /&gt;
&lt;br /&gt;
(a) $\Rightarrow$ (b) を $n$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$n=1$ のとき、&lt;br /&gt;
$w=a$ なる $a\in\Sigma\cup\{\emptyword\}$が存在し、&lt;br /&gt;
$S\mathgen aA \in R$ であるはずである。&lt;br /&gt;
このとき、$\mathautomaton{A}$ の定義から&lt;br /&gt;
$(S, a, A)\in \Delta$である。&lt;br /&gt;
ゆえに、記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A \]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n&amp;gt;1$ のとき、&lt;br /&gt;
$w=w'a$ （ただし、$a\in \Sigma\cup\{\emptyword\}$）とおく。&lt;br /&gt;
このとき、$G$ の生成規則の形から&lt;br /&gt;
$w_{n-1}=w'$, &lt;br /&gt;
$A_{n-1}\mathgen aA \in R$&lt;br /&gt;
である。&lt;br /&gt;
このとき、帰納法の仮定から&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n-1}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[S, A_{1}, \ldots, A_{n-1} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
$A_{n-1}\mathgen aA \in R$&lt;br /&gt;
であるから、&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$であることに注意すると&lt;br /&gt;
記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{1}, \ldots, A_{n-1}, A \]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
(b) $\Rightarrow$ (a) を $n$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$n=1$ のとき、&lt;br /&gt;
$w=a$ なる $a\in\Sigma\cup\{\emptyword\}$が存在し、&lt;br /&gt;
$(S, a, A)\in \Delta$ のはずである。&lt;br /&gt;
このとき、$\mathautomaton{A}$ の定義から&lt;br /&gt;
$S\mathgen aA \in R$ である。ゆえに&lt;br /&gt;
\[ S \Rightarrow_{G} aA \]&lt;br /&gt;
である。&lt;br /&gt;
&lt;br /&gt;
$n&amp;gt;1$ のとき、&lt;br /&gt;
記号列 $w$ による $S$ から $A$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[A_{0}, A_{1}, \ldots, A_{n-1}A_{n} \]&lt;br /&gt;
（ただし、$A_{0}=S$, $A_{n}=A$）が存在すると仮定する。&lt;br /&gt;
すると、&lt;br /&gt;
$w=w'a$,&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$&lt;br /&gt;
を満たす&lt;br /&gt;
$a\in\Sigma\cup\{\emptyword\}$, $w'\in\kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
すると、記号列 $w'$ による $S$ から $A_{n-1}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[A_{0}, A_{1}, \ldots, A_{n-1} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
帰納法の仮定から&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n-1}(=w'A_{n-1})\]&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
$(A_{n-1}, a, A)\in \Delta$ であるから、&lt;br /&gt;
$A_{n-1} \mathgen  aA\in R$ であるので、&lt;br /&gt;
\[ (S=)\alpha_{0} \Rightarrow_{G} \alpha_{1} \Rightarrow_{G} \cdots \Rightarrow_{G} w'A_{n-1} \Rightarrow_{G} w'aA(=wA) \]&lt;br /&gt;
という導出列が存在する。&lt;br /&gt;
 &lt;br /&gt;
最後に $L=L(\mathautomaton{A})$ を示す。&lt;br /&gt;
&lt;br /&gt;
$w\in L$ を仮定する。&lt;br /&gt;
すると、導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} \Rightarrow_{G} w\]&lt;br /&gt;
が存在する。&lt;br /&gt;
$G$ の生成規則の形から&lt;br /&gt;
$w=w'a$, $\alpha_{n}=w'A_{n}$, $A_{n}\mathgen a \in R$&lt;br /&gt;
を満たす $A_{n}\in V$, $a\in \Sigma\cup\{\emptyword\}$, &lt;br /&gt;
$w'\in \kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
このとき、&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n}$ への $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, A_{1}, \ldots, A_{n} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
$A_{n}\mathgen a \in R$&lt;br /&gt;
であるから、&lt;br /&gt;
$(A_{n}, a, f)\in \Delta$&lt;br /&gt;
に注意すると、&lt;br /&gt;
記号列 $w'a=w$ による $S$ から $f$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, \ldots, A_{n}, f \]&lt;br /&gt;
が存在する。&lt;br /&gt;
ゆえに $w\in L(\mathautomaton{A})$ である。&lt;br /&gt;
&lt;br /&gt;
逆に、$w\in L(\mathautomaton{A})$ とする。&lt;br /&gt;
すると、&lt;br /&gt;
記号列 $w$ による $S$ から $f$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, A_{1}, \ldots, A_{n}, f\]&lt;br /&gt;
が存在する。&lt;br /&gt;
すると、&lt;br /&gt;
$w=w'a$, $(A_{n}, a, f) \in \Delta$&lt;br /&gt;
を満たす $a\in \Sigma\cup\{\emptyword\}$, &lt;br /&gt;
$w'\in \kleenecl{\Sigma}$&lt;br /&gt;
が存在する。&lt;br /&gt;
また、&lt;br /&gt;
記号列 $w'$ による $S$ から $A_{n}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ S, A_{0}, \ldots, A_{n} \]&lt;br /&gt;
が存在する。&lt;br /&gt;
よって、導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} (=w'A_{n})\]&lt;br /&gt;
が存在する。&lt;br /&gt;
$(A_{n}, a, f) \in \Delta$ から&lt;br /&gt;
$A_{n}\mathgen a$ であるので、&lt;br /&gt;
$w$ の導出列&lt;br /&gt;
\[ S \Rightarrow_{G} \alpha_{0} \Rightarrow_{G} \cdots \Rightarrow_{G} \alpha_{n} \Rightarrow_{G} w (=w'a)\]&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
以上より(1. $\Rightarrow$ 3.)は示された。&lt;br /&gt;
&lt;br /&gt;
(3. $\Rightarrow$ 2.)&lt;br /&gt;
$L$ を受理する有限オートマトンを&lt;br /&gt;
$\mathautomaton{A}=(\{q_{1}, q_{2}, \ldots, q_{n}\}, \Sigma, \Delta, q_{1}, \{q_{F_{0}}, q_{F_{1}}, \ldots, q_{F_{m}}\})$ とおく。&lt;br /&gt;
&lt;br /&gt;
簡単のため、以下&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\sum_{\alpha \in A} \alpha &amp;amp;= (\alpha_{0}+ \cdots + \alpha_{k}) \quad \text{（ただし、A は正規表現の空でない有限集合であって、A=\{a_{0}, \ldots, a_{k}\}）}, \\&lt;br /&gt;
Q_{ij}&amp;amp;=\{a\in \Sigma\cup\{\emptyword\} | (q_{i}, a, q_{j})\in \Delta\}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
という略記を用いる。&lt;br /&gt;
&lt;br /&gt;
正規表現 $\alpha^{(l)}_{ij}$ （ただし、$1\leq i, j \leq n$, $0\leq l \leq n$）を次のように帰納的に定める。&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
\alpha^{(0)}_{ij}&amp;amp;=&lt;br /&gt;
\begin{cases}&lt;br /&gt;
\emptyset, &amp;amp; \text{if Q_{ij}=\emptyset}, \\&lt;br /&gt;
\sum_{a\in Q_{ij}}a, &amp;amp; \text{if Q_{ij}\neq \emptyset, i\neq j}; \\&lt;br /&gt;
\kleenecl{\left(\sum_{a\in Q_{ij}}a\right)}, &amp;amp; \text{if Q_{ij}\neq \emptyset, i=j}; &lt;br /&gt;
\end{cases}\\&lt;br /&gt;
\alpha^{(l)}_{ij}&amp;amp;=\alpha^{(l-1)}_{ij} + \alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}, \quad \text{（ただし、1\leq l）}.&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
$w\in \interpret{\alpha^{(l)}_{ij}}$ であるとき、&lt;br /&gt;
記号列 $w$ による $q_{i}$ から $q_{j}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{0}}, q_{k_{1}}, \ldots, q_{k_{p}} \]&lt;br /&gt;
（ただし、$k_{0}=i$, $k_{p}=j$, $1\leq q\leq p-1$ のとき $1\leq k_{q} \leq l$）が存在することを $l$ についての帰納法により示す。&lt;br /&gt;
&lt;br /&gt;
$l=0$ については明らか。&lt;br /&gt;
&lt;br /&gt;
$l&amp;gt;0$ のとき、$w\in \interpret{\alpha^{(l)}_{ij}}$ であるとすると、&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{ij}}$ または&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}}$ である。&lt;br /&gt;
$w\in \interpret{\alpha^{(l-1)}_{ij}}$ のときは帰納法の仮定より明らか。&lt;br /&gt;
&lt;br /&gt;
$w\in \interpret{ \alpha^{(l-1)}_{il}\left(\kleenecl{\alpha^{(l-1)}_{ll}}\right)\alpha^{(l-1)}_{lj}}$ とする。すると&lt;br /&gt;
$w_{1}\in \interpret{\alpha^{(l-1)}_{il}}$,&lt;br /&gt;
$w_{2}\in \interpret{\alpha^{(l-1)}_{ll}}$,&lt;br /&gt;
$w_{3}\in \interpret{\alpha^{(l-1)}_{lj}}$,&lt;br /&gt;
$w=w_{1}(w_{2})^{s}w_{3}$ （ただし、$s\in \mathnat$） を満たす記号列 $w_{1}$, $w_{2}$, $w_{3}$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
帰納法の仮定から、&lt;br /&gt;
記号列 $w_{t}$ （$t=1, 2, 3$）による$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{t0}}, q_{k_{t1}}, \ldots, q_{k_{tp}} \]&lt;br /&gt;
（ただし、$k_{10}=i$, $k_{1p}=k_{20}=k_{2p}=k_{30}=l$, $k_{3p}=j$, $1\leq q\leq p-1$ のとき $1\leq k_{q} \leq l-1$）が存在する。&lt;br /&gt;
すると、&lt;br /&gt;
記号列 $w$ による $q_{i}$ から $q_{j}$ への$\mathautomaton{A}$ の状態遷移&lt;br /&gt;
\[ q_{k_{10}}, q_{k_{11}}, \ldots, q_{k_{1p}}, \overbrace{q_{k_{21}}, \ldots, q_{k_{2p}}}^{s}, q_{k_{31}}, \ldots, q_{k_{3p}} \]&lt;br /&gt;
が存在することがわかる。&lt;br /&gt;
&lt;br /&gt;
以上のことに注意すると、&lt;br /&gt;
\[ \alpha^{(n)}_{1F_{0}}+\alpha^{(n)}_{1F_{1}}+ \cdots + \alpha^{(n)}_{1F_{m}}\]&lt;br /&gt;
は $\mathautomaton{A}$ が受理する記号列全体である。&lt;br /&gt;
 &lt;br /&gt;
以上より(3. $\Rightarrow$ 2.)は示された。&lt;br /&gt;
{{end  |proof }}&lt;br /&gt;
&lt;br /&gt;
==  正規言語ではない形式言語の例  ==&lt;br /&gt;
この節では正規言語ではない[[形式言語]]の例を紹介する。&lt;br /&gt;
&lt;br /&gt;
そのような例が存在すること自体は右線形文法が[[集合の濃度#具体的な濃度 | 高々可算個]]しかないことと[[形式言語]]の濃度が[[集合の濃度#具体的な濃度 | 非加算]]であることに注意すると、明らかである。&lt;br /&gt;
しかし、その具体例を構成し、正規言語ではないことを示すことはそれほど簡単ではない。このとき強力な武器となるのが[[有限オートマトン#pumping_lemma | 反復補題]]である。&lt;br /&gt;
&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]] については当該項目を参照せよ。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0^{n}1^{n}$ という形をした記号列全体 |label=ex-counter_example_reg_lang_n }}&lt;br /&gt;
$0^{n}1^{n}$ （ただし、$n\in\mathnat$）という形の記号列全体は正規言語ではない。しかしながら[[文脈自由言語]]ではある．この記号列全体を生成する[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]は[[文脈自由言語#ex-counter_example_reg_lang_n | この例]]を参照せよ．&lt;br /&gt;
&lt;br /&gt;
'''$0^{n}1^{n}$ という形の記号列全体が正規言語ではないことの証明'''&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
背理法により示す。&lt;br /&gt;
&lt;br /&gt;
$0^{n}1^{n}$ という形の記号列全体 $L$ が正規言語であると仮定する。&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }}より、$L=L(\mathautomaton{A})$ を満たす&lt;br /&gt;
有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n_{0}=|Q|$ とする。仮定より&lt;br /&gt;
$\mathautomaton{A}$ は $w=0^{n_{0}}1^{n_{0}}$ を受理する。&lt;br /&gt;
すると$\left|w\right|&amp;gt;n_{0}$ であるから&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]] より&lt;br /&gt;
次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w=xyz$。&lt;br /&gt;
# $\left|y\right|&amp;gt;0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は&lt;br /&gt;
$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n_{0}$。&lt;br /&gt;
&lt;br /&gt;
このとき、 $xy=0^{k}$ （ただし、$0&amp;lt; k\leq n_{0}$）&lt;br /&gt;
であることに注意する。&lt;br /&gt;
すると、 $x=0^{k_{0}}$, $y=0^{k_{1}}$&lt;br /&gt;
（ただし、$0\leq k_{0}\leq k$, $0&amp;lt; k_{1}\leq k$,&lt;br /&gt;
$k=k_{0}+k_{1}$）&lt;br /&gt;
を満たす自然数 $k_{0}$, $k_{1}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
さて、$\mathautomaton{A}$ は&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題]]の条件から、&lt;br /&gt;
記号列 $xz$ を受理するはずである。&lt;br /&gt;
しかし、$xz=0^{n_{0}-k_{1}}b^{n_{0}}$, $n_{0}-k_{1}&amp;lt;n_{0}$&lt;br /&gt;
であるから $xz\notin L$ である。&lt;br /&gt;
これは $L=L(\mathautomaton{A})$ に矛盾する。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$w\mirrorim{w}$ という形をした記号列全体 |label=ex-counter_example_reg_lang_mirror }}&lt;br /&gt;
$w\mirrorim{w}$（ただし、$n\in\mathnat$）という形の記号列全体は正規言語ではない。しかしながら[[文脈自由言語]]ではある．この記号列全体を生成する[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]は[[文脈自由言語#ex-counter_example_reg_lang_mirror | この例]]を参照せよ．&lt;br /&gt;
'''$w\mirrorim{w}$ という形の記号列全体が正規言語ではないことの証明'''&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
背理法により示す。&lt;br /&gt;
&lt;br /&gt;
$w\mirrorim{w}$ という形の記号列全体 $L$ が正規言語であると仮定する。&lt;br /&gt;
{{ref |type=theorem |label=thm-regularandNFA }}より、&lt;br /&gt;
$L=L(\mathautomaton{A})$ を満たす&lt;br /&gt;
有限オートマトン&lt;br /&gt;
$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$&lt;br /&gt;
が存在する。&lt;br /&gt;
&lt;br /&gt;
$n_{0}=|Q|$ とする。以下 $w_{0}=0^{n_{0}}1$ とする。&lt;br /&gt;
仮定より $\mathautomaton{A}$ は $w_{0}\mirrorim{w_{0}}$ を受理する。&lt;br /&gt;
すると $\left|w_{0}\mirrorim{w_{0}}\right|&amp;gt;n_{0}$ であるから&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題 ]] より&lt;br /&gt;
次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w_{0}\mirrorim{w_{0}}=xyz$。&lt;br /&gt;
# $\left|y\right|&amp;gt;0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は&lt;br /&gt;
$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n_{0}$。&lt;br /&gt;
&lt;br /&gt;
このとき、 $xy=0^{k}$ （ただし、$0&amp;lt; k\leq n_{0}$）&lt;br /&gt;
であることに注意する。&lt;br /&gt;
すると、 $x=0^{k_{0}}$, $y=0^{k_{1}}$&lt;br /&gt;
（ただし、$0\leq k_{0}\leq k$, $0&amp;lt; k_{1}\leq k$,&lt;br /&gt;
$k=k_{0}+k_{1}$）&lt;br /&gt;
を満たす自然数 $k_{0}$, $k_{1}$ が存在する。&lt;br /&gt;
&lt;br /&gt;
さて、$\mathautomaton{A}$ は&lt;br /&gt;
[[有限オートマトン#pumping_lemma | 反復補題 ]] の条件から、&lt;br /&gt;
記号列 $xz$ を受理するはずである。&lt;br /&gt;
しかし、$xz=0^{n_{0}-k_{1}}1\mirrorim{w_{0}}=0^{n_{0}-k_{1}}110^{n_{0}}$, $n_{0}-k_{1}&amp;lt;n_{0}$&lt;br /&gt;
であるから $xz\notin L$ である。&lt;br /&gt;
これは $L=L(\mathautomaton{A})$ に矛盾する。&lt;br /&gt;
{{end |proof }}&lt;br /&gt;
&lt;br /&gt;
==  正規言語と左線形文法 ==&lt;br /&gt;
この節では正規言語と左線形文法との関係を述べる。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=definition |name=左線形文法 |label=def-left_linear_grammar }}&lt;br /&gt;
'''左線形文法（left linear grammar）'''とは&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# $\Sigma$ と互いに素な'''変数記号（variable）'''の有限集合 $V$&lt;br /&gt;
# '''生成規則（production rule）'''と呼ばれる有限集合 $R \subseteq V \times V\kleenecl{(\Sigma)}\cup \kleenecl{(\Sigma)}$&lt;br /&gt;
# '''開始記号(start symbol)'''または'''初期記号'''と呼ばれる $S\in V$&lt;br /&gt;
&lt;br /&gt;
の４つ組$(V, \Sigma, R, S)$である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
これは、[[句構造言語#def-phrase_structure_grammar | 句構造文法]]の一種である。また、[[文脈自由言語#def-context-free_grammar | 文脈自由文法]]の一種である。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=thm-left_linear_grammar }}&lt;br /&gt;
言語 $L$ について以下は同値である。&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $L$ を生成する左線形文法が存在する。&lt;br /&gt;
&lt;br /&gt;
==  参考文献 ==&lt;br /&gt;
# 新屋 良磨、オートマトン理論再考、コンピュータ ソフトウェア、2017、34 巻、3 号、p. 3_3-3_35、公開日 2017/09/25、Print ISSN 0289-6540、https://doi.org/10.11309/jssst.34.3_3、https://www.jstage.jst.go.jp/article/jssst/34/3/34_3_3/_article/-char/ja&lt;br /&gt;
# 五十嵐喜英他、『[[数理情報科学シリーズ ２４ オートマトンと形式言語の基礎]]』、牧野書店、2011&lt;br /&gt;
&lt;br /&gt;
== 関連項目 ==&lt;br /&gt;
* [[形式言語]]&lt;br /&gt;
* [[正規表現]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
|+ Chomsky階層&lt;br /&gt;
! 文法のタイプ&lt;br /&gt;
! 言語のクラス&lt;br /&gt;
! 計算モデル&lt;br /&gt;
|-&lt;br /&gt;
! タイプ0&lt;br /&gt;
| [[句構造言語]]&lt;br /&gt;
| [[Turingマシン]]&lt;br /&gt;
|-&lt;br /&gt;
! タイプ1&lt;br /&gt;
| [[文脈依存言語]]&lt;br /&gt;
| [[線形有界オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ2&lt;br /&gt;
| [[文脈自由言語]]&lt;br /&gt;
| [[プッシュダウン・オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ3&lt;br /&gt;
| [[正規言語]]&lt;br /&gt;
| [[有限オートマトン]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E6%96%87%E8%84%88%E8%87%AA%E7%94%B1%E8%A8%80%E8%AA%9E&amp;diff=4909</id>
		<title>文脈自由言語</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E6%96%87%E8%84%88%E8%87%AA%E7%94%B1%E8%A8%80%E8%AA%9E&amp;diff=4909"/>
		<updated>2021-04-20T15:30:24Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: Fix typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:形式言語理論|ブンミャクジユウゲンゴ]]&lt;br /&gt;
{{begin |preamble}}&lt;br /&gt;
&amp;lt;!-- 参考文献 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 定理環境 --&amp;gt;&lt;br /&gt;
{{newtheorem |type=theorem |display=定理}}&lt;br /&gt;
{{newtheorem |type=lemma |display=補題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=definition |display=定義 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=prop |display=命題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=example |display=例 |family=theorem }}&lt;br /&gt;
&amp;lt;!-- MathJax commands --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\newcommand{\mathsetextension}[1]{%&lt;br /&gt;
\left\{ #1 \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathsetintension}[2]{%&lt;br /&gt;
\left\{ #1 \left| #2 \right.\right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathof}[2]{%&lt;br /&gt;
\mathop{#1}\left(#2\right)%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathderiv}{\mathrel{\mathop{\Rightarrow}^{*}}}&lt;br /&gt;
\newcommand{\mathgen}{\rightsquigarrow}&lt;br /&gt;
\newcommand{\mathgenfun}[1]{\mathbf{#1}}&lt;br /&gt;
\newcommand{\mirrorim}[1]{\overleftarrow{#1}}&lt;br /&gt;
\newcommand{\emptyword}{\varepsilon}&lt;br /&gt;
\newcommand{\kleenecl}[1]{{#1}^{*}}&lt;br /&gt;
\newcommand{\interpret}[1]{[\![#1]\!]}&lt;br /&gt;
\newcommand{\mathautomaton}[1]{\mathcal{#1}}&lt;br /&gt;
\newcommand{\mathnat}{\mathbb{N}}&lt;br /&gt;
\newcommand{\qed}{\blacksquare}&lt;br /&gt;
\newcommand{\mathrelbar}{\mathrel{|}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
{{end |preamble}}&lt;br /&gt;
'''文脈自由言語（context-free language）'''とは文脈自由文法によって生成される形式言語である。&lt;br /&gt;
&lt;br /&gt;
文脈自由文法は句構造文法の一種であるから、&lt;br /&gt;
文脈自由言語は[[句構造言語]]の一種である。&lt;br /&gt;
また、文脈自由文法は文脈依存文法の一種であるから、&lt;br /&gt;
文脈自由言語は[[文脈依存言語]]の一種である。&lt;br /&gt;
&lt;br /&gt;
以下、項目[[形式言語]]において定められている言語上の演算などについては特に断らず用いる。&lt;br /&gt;
&lt;br /&gt;
==  文脈自由言語の導入 ==&lt;br /&gt;
この節では文脈自由言語を定義する。&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=definition |name=文脈自由文法 |label=def-context-free_grammar }}&lt;br /&gt;
'''文脈自由文法（context-free grammar）'''とは&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# $\Sigma$ と互いに素な'''変数記号（variable）'''の有限集合 $V$&lt;br /&gt;
# '''生成規則（production rule）'''と呼ばれる有限集合 $R \subseteq V \times \kleenecl{(\Sigma \cup V)}$&lt;br /&gt;
# '''開始記号(start symbol)'''または'''初期記号'''と呼ばれる $S\in V$&lt;br /&gt;
&lt;br /&gt;
の４つ組$(V, \Sigma, R, S)$である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
これは、[[句構造言語#句構造文法 | 句構造文法]]の一種である。また、[[文脈依存言語#文脈依存文法 | 文脈依存文法]]の一種である。&lt;br /&gt;
&lt;br /&gt;
[[句構造言語]]のときと同様、$\Sigma$ の元を'''終端記号(terminal)'''、$V$ の元を'''非終端記号(non-terminal)'''と呼ぶことも多い。&lt;br /&gt;
&lt;br /&gt;
以下では、元$(A, \alpha)\in R$ のことを$A\mathgen\alpha$と書く。&lt;br /&gt;
&lt;br /&gt;
[[句構造言語#def-derivation | 導出]]、[[句構造言語#def-phrase_structure_lang | 生成される言語]]などは&lt;br /&gt;
句構造言語と同様に定義される。&lt;br /&gt;
&lt;br /&gt;
'''文脈自由言語'''とは何らかの文脈自由文法によって生成される言語のことを言う。&lt;br /&gt;
&lt;br /&gt;
==  文脈自由言語の例 ==&lt;br /&gt;
この節では文脈自由言語の例を紹介する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=Dyck言語 |label=ex-Dyck_lang }}&lt;br /&gt;
$V=\left\{ S \right\}$, &lt;br /&gt;
$\Sigma=\left\{ [, ] \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen\varepsilon, S\mathgen [S]S \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は文脈自由文法である。&lt;br /&gt;
この文脈自由文法によって生成される言語 $L(G)$ を'''Dyck言語'''と呼ぶ&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dyck言語の元となる記号列とその記号列を生成する導出の列をいくつかあげる。&lt;br /&gt;
&lt;br /&gt;
\begin{gather*} &lt;br /&gt;
S \Rightarrow \varepsilon \\ &lt;br /&gt;
S \Rightarrow [S]S \Rightarrow [\varepsilon]S \Rightarrow [\varepsilon]\varepsilon \equiv [] \\ &lt;br /&gt;
S \Rightarrow [S]S \Rightarrow [[]]S \Rightarrow [[]]\varepsilon \equiv [[]] \\ &lt;br /&gt;
S \Rightarrow [S]S \Rightarrow [\varepsilon]S \Rightarrow [\varepsilon][S]S \mathderiv [\varepsilon][\varepsilon]\varepsilon \equiv [][] \\ &lt;br /&gt;
S \Rightarrow [S]S \Rightarrow [[S]S]S \Rightarrow [[[S]S]S]S \mathderiv [[[\varepsilon]\varepsilon]\varepsilon]\varepsilon \equiv [[[]]] \\ &lt;br /&gt;
S \Rightarrow [S]S \Rightarrow [[S]S]S \Rightarrow [[S]S][S]S \mathderiv [[\varepsilon]\varepsilon][\varepsilon]\varepsilon \equiv [[]][] \\ &lt;br /&gt;
S \Rightarrow [S]S \Rightarrow [S][S]S \Rightarrow [S][[S]S]S \mathderiv [\varepsilon][[\varepsilon]\varepsilon]\varepsilon \equiv [][[]] \\ &lt;br /&gt;
S \Rightarrow [S]S \Rightarrow [S][S]S \Rightarrow [S][S][S]S \mathderiv [\varepsilon][\varepsilon][\varepsilon]\varepsilon \equiv [][][] &lt;br /&gt;
\end{gather*}&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=二進表現された自然数同士の四則演算の式全体 |label=ex-arithmetic_form_lang }}&lt;br /&gt;
&lt;br /&gt;
\begin{align*} &lt;br /&gt;
V&amp;amp;=\left\{ S, B, B', M, P \right\}, \\ &lt;br /&gt;
\Sigma&amp;amp;=\left\{ 0, 1, +, -, \times, \div, (, ) \right\}, \\ &lt;br /&gt;
R&amp;amp;=\{ S \mathgen M, S \mathgen S + M, S \mathgen S - M,  M \mathgen P, M \mathgen M \times P, M \mathgen M \div P,  P \mathgen B, P \mathgen ( S ),  B \mathgen 0, B \mathgen 1, B \mathgen 1B', B' \mathgen 0, B' \mathgen 1, B' \mathgen 0B', B' \mathgen 1B' \}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は文脈自由文法である。&lt;br /&gt;
この文法によって生成される言語は二進表現された自然数同士の四則演算の式全体である。&lt;br /&gt;
&lt;br /&gt;
二進表現された自然数同士の四則演算の式の導出の例をあげる。&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
S &amp;amp;\Rightarrow M \\&lt;br /&gt;
&amp;amp;\Rightarrow M \div P \\&lt;br /&gt;
&amp;amp;\Rightarrow M \times P \div P \\&lt;br /&gt;
&amp;amp;\Rightarrow P \times P \div P \\&lt;br /&gt;
&amp;amp;\Rightarrow (S) \times P \div P \\&lt;br /&gt;
&amp;amp;\Rightarrow (S - M) \times P \div P \\&lt;br /&gt;
&amp;amp;\Rightarrow (S + M - M) \times P \div P \\&lt;br /&gt;
&amp;amp;\Rightarrow (M + M - M) \times P \div P \\&lt;br /&gt;
&amp;amp;\Rightarrow (P + M - M) \times P \div P \\&lt;br /&gt;
&amp;amp;\Rightarrow (B + M - M) \times P \div P \\&lt;br /&gt;
&amp;amp;\Rightarrow (0 + M - M) \times P \div P \\&lt;br /&gt;
&amp;amp;\Rightarrow (0 + P - M) \times P \div P \\&lt;br /&gt;
&amp;amp;\Rightarrow (0 + B - M) \times P \div P \\&lt;br /&gt;
&amp;amp;\Rightarrow (0 + 1B' - M) \times P \div P \\&lt;br /&gt;
&amp;amp;\Rightarrow (0 + 10 - M) \times P \div P \\&lt;br /&gt;
&amp;amp;\Rightarrow (0 + 10 - P) \times P \div P \\&lt;br /&gt;
&amp;amp;\Rightarrow (0 + 10 - B) \times P \div P \\&lt;br /&gt;
&amp;amp;\Rightarrow (0 + 10 - 1) \times P \div P \\&lt;br /&gt;
&amp;amp;\Rightarrow (0 + 10 - 1) \times B \div P \\&lt;br /&gt;
&amp;amp;\Rightarrow (0 + 10 - 1) \times 1B' \div P \\&lt;br /&gt;
&amp;amp;\Rightarrow (0 + 10 - 1) \times 10B' \div P \\&lt;br /&gt;
&amp;amp;\Rightarrow (0 + 10 - 1) \times 101 \div P \\&lt;br /&gt;
&amp;amp;\Rightarrow (0 + 10 - 1) \times 101 \div B \\&lt;br /&gt;
&amp;amp;\Rightarrow (0 + 10 - 1) \times 101 \div 1 \\&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=(命題変数が有限の)命題論理の論理式全体 |label=ex-prop_form_lang }}&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
V&amp;amp;=\left\{ S \right\}, \\&lt;br /&gt;
\Sigma&amp;amp;=\left\{ p_1, \ldots p_n, \top, \bot, \lnot, \land, \lor, \to, (, )\right\}, \\&lt;br /&gt;
R&amp;amp;=\{ S\mathgen p_1, \ldots,  S\mathgen p_n, S\mathgen \top, S\mathgen \bot, &lt;br /&gt;
S\mathgen(\lnot S), S\mathgen(S\land S), S\mathgen(S\lor S), S\mathgen({S\to S}) \}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は文脈自由文法である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
この文脈自由文法によって生成される言語 $L(G)$ は[[数理論理学の基礎・命題論理]]において定義されている命題論理の論理式全体である（ただし、命題変数の集合の濃度を有限としたときに限る）。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=$0^{n}1^{n}$ という形をした記号列全体 |label=ex-counter_example_reg_lang_n }}&lt;br /&gt;
$V=\left\{ S \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen\emptyword, S\mathgen 0S1 \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は文脈自由文法である。&lt;br /&gt;
この文脈自由文法によって生成される言語 $L(G)$ は $0^{n}1^{n}$ （ただし、$n\in\mathnat$）という形をした記号列全体になっている。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$0^{n}1^{n}$ という形をした記号列の導出の例をいくつかあげる。&lt;br /&gt;
&lt;br /&gt;
\begin{gather*}&lt;br /&gt;
S \Rightarrow \varepsilon \\&lt;br /&gt;
S \Rightarrow 0S1 \Rightarrow 0\emptyword 1  \equiv 01 \\&lt;br /&gt;
S \Rightarrow 0S1 \Rightarrow 00S11 \Rightarrow 00\emptyword 11  \equiv 0011 \\&lt;br /&gt;
S \Rightarrow 0S1 \Rightarrow 00S11 \Rightarrow 000S111 \Rightarrow 000\emptyword 111  \equiv 000111 \\&lt;br /&gt;
S \Rightarrow 0S1 \Rightarrow 00S11 \Rightarrow 000S111 \Rightarrow 0000S1111 \Rightarrow 0000\emptyword 1111  \equiv 00001111 \\&lt;br /&gt;
S \Rightarrow 0S1 \Rightarrow 00S11 \Rightarrow 000S111 \Rightarrow 0000S1111 \Rightarrow 00000S11111 \Rightarrow 00000\emptyword 11111  \equiv 0000011111 &lt;br /&gt;
\end{gather*}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=$w\mirrorim{w}$ という形をした記号列全体 |label=ex-counter_example_reg_lang_mirror }}&lt;br /&gt;
$V=\left\{ S \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen\emptyword, S\mathgen 0S0, S\mathgen 1S1 \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は文脈自由文法である。&lt;br /&gt;
この文脈自由文法によって生成される言語 $L(G)$ は $w\mirrorim{w}$ （ただし、$w\in \kleenecl{\Sigma}$）という形をした記号列全体になっている。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$w\mirrorim{w}$ という形をした記号列の導出の例をいくつかあげる。&lt;br /&gt;
&lt;br /&gt;
\begin{gather*}&lt;br /&gt;
S \Rightarrow \varepsilon \\&lt;br /&gt;
S \Rightarrow 0S0 \Rightarrow 0\emptyword 0 \equiv 00 \\&lt;br /&gt;
S \Rightarrow 1S1 \Rightarrow 1\emptyword 1 \equiv 11 \\&lt;br /&gt;
S \Rightarrow 0S0 \Rightarrow 00S00 \Rightarrow 00\emptyword 00  \equiv 0000 \\&lt;br /&gt;
S \Rightarrow 0S0 \Rightarrow 01S10 \Rightarrow 01\emptyword 10  \equiv 0110 \\&lt;br /&gt;
S \Rightarrow 1S1 \Rightarrow 10S01 \Rightarrow 10\emptyword 01  \equiv 1001 \\&lt;br /&gt;
S \Rightarrow 1S1 \Rightarrow 11S11 \Rightarrow 11\emptyword 11 \equiv 1111 &lt;br /&gt;
\end{gather*}&lt;br /&gt;
&lt;br /&gt;
== Backus-Naur記法 ==&lt;br /&gt;
この節では'''[[Backus-Naur記法]](Backus-Naur form)'''について述べる。&lt;br /&gt;
&lt;br /&gt;
=== Backus-Naur記法の導入 ===&lt;br /&gt;
\begin{align*}&lt;br /&gt;
V&amp;amp;=\left\{ S, A_{1}, \dots A_{n} \right\},   \\&lt;br /&gt;
R&amp;amp;=\{ S\mathgen \alpha_{00}, \dots S\mathgen \alpha_{0m_{0}},  \\&lt;br /&gt;
&amp;amp;\phantom{=\{} A_{1}\mathgen \alpha_{10}, \dots A_{1}\mathgen \alpha_{1m_{1}},  \\&lt;br /&gt;
&amp;amp;\phantom{=\{ A_{1}\mathgen \alpha_{10}, } \vdots  \\&lt;br /&gt;
&amp;amp;\phantom{=\{} A_{n}\mathgen \alpha_{n0}, \dots A_{n}\mathgen \alpha_{nm_{n}} \}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
という、文脈自由文法 $G=(V, \Sigma, R, S)$ について、&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
S &amp;amp;::= \alpha_{00} \mathrelbar \dots \mathrelbar \alpha_{0m_{0}} \\&lt;br /&gt;
A_{1} &amp;amp;::= \alpha_{10} \mathrelbar \dots \mathrelbar \alpha_{1m_{1}} \\&lt;br /&gt;
&amp;amp;\phantom{::= \alpha_{10} \mathrelbar \ldots}\vdots \\&lt;br /&gt;
A_{n} &amp;amp;::= \alpha_{n0} \mathrelbar \dots \mathrelbar \alpha_{nm_{n}} &lt;br /&gt;
\end{align*}&lt;br /&gt;
&lt;br /&gt;
という表記を $G$ の'''[[Backus-Naur記法]](Backus-Naur form)'''という。&lt;br /&gt;
&lt;br /&gt;
この記法は、論理式の定義やプログラミング言語の定義などによく使われる。&lt;br /&gt;
&lt;br /&gt;
=== BNFの例 ===&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=二進表現された自然数同士の四則演算の式全体 |label=ex-arithmetic_form_lang_BNF }}&lt;br /&gt;
&lt;br /&gt;
[[文脈自由言語#ex-arithmetic_form_lang | 二進表現された自然数同士の四則演算の式全体]]を表すBNF記法は次のとおりである。&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
S  &amp;amp;::= M \mathrelbar S + M \mathrelbar S - M \\&lt;br /&gt;
M  &amp;amp;::= P \mathrelbar M \times P \mathrelbar M \div P \\&lt;br /&gt;
P  &amp;amp;::= B \mathrelbar ( S ) \\&lt;br /&gt;
B  &amp;amp;::= 0 \mathrelbar 1 \mathrelbar 1B' \\&lt;br /&gt;
B' &amp;amp;::= 0 \mathrelbar 1 \mathrelbar 0B'\mathrelbar 1B' &lt;br /&gt;
\end{align*}&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- == プッシュダウンオートマトンとの関係 == --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Now writing...... --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  参考文献 ==&lt;br /&gt;
# 新屋 良磨、オートマトン理論再考、コンピュータ ソフトウェア、2017、34 巻、3 号、p. 3_3-3_35、公開日 2017/09/25、Print ISSN 0289-6540、https://doi.org/10.11309/jssst.34.3_3、https://www.jstage.jst.go.jp/article/jssst/34/3/34_3_3/_article/-char/ja&lt;br /&gt;
# 五十嵐喜英他、『数理情報科学シリーズ ２４ オートマトンと形式言語の基礎』、牧野書店、2011&lt;br /&gt;
&lt;br /&gt;
== 関連項目 ==&lt;br /&gt;
* [[形式言語]]&lt;br /&gt;
* [[Backus-Naur記法]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
|+ Chomsky階層&lt;br /&gt;
! 文法のタイプ&lt;br /&gt;
! 言語のクラス&lt;br /&gt;
! 計算モデル&lt;br /&gt;
|-&lt;br /&gt;
! タイプ0&lt;br /&gt;
| [[句構造言語]]&lt;br /&gt;
| [[Turingマシン]]&lt;br /&gt;
|-&lt;br /&gt;
! タイプ1&lt;br /&gt;
| [[文脈依存言語]]&lt;br /&gt;
| [[線形有界オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ2&lt;br /&gt;
| [[文脈自由言語]]&lt;br /&gt;
| [[プッシュダウン・オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ3&lt;br /&gt;
| [[正規言語]]&lt;br /&gt;
| [[有限オートマトン]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E5%BD%A2%E5%BC%8F%E8%A8%80%E8%AA%9E&amp;diff=4908</id>
		<title>形式言語</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E5%BD%A2%E5%BC%8F%E8%A8%80%E8%AA%9E&amp;diff=4908"/>
		<updated>2021-04-20T15:13:29Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: Fix a typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:形式言語理論|ケイシキゲンゴ]]&lt;br /&gt;
{{begin |preamble}}&lt;br /&gt;
&amp;lt;!-- 参考文献 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 定理環境 --&amp;gt;&lt;br /&gt;
{{newtheorem |type=theorem |display=定理}}&lt;br /&gt;
{{newtheorem |type=lemma |display=補題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=definition |display=定義 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=prop |display=命題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=example |display=例 |family=theorem }}&lt;br /&gt;
&amp;lt;!-- MathJax commands --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\newcommand{\mathsetextension}[1]{%&lt;br /&gt;
\left\{ #1 \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathsetintension}[2]{%&lt;br /&gt;
\left\{ #1 \left| #2 \right.\right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathof}[2]{%&lt;br /&gt;
\mathop{#1}\left(#2\right)%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathderiv}{\mathrel{\mathop{\Rightarrow}}^{*}}&lt;br /&gt;
\newcommand{\mathgen}{\rightsquigarrow}&lt;br /&gt;
\newcommand{\mathgenfun}[1]{\mathbf{#1}}&lt;br /&gt;
\newcommand{\mirrorim}[1]{\overleftarrow{#1}}&lt;br /&gt;
\newcommand{\emptyword}{\varepsilon}&lt;br /&gt;
\newcommand{\kleenecl}[1]{{#1}^{*}}&lt;br /&gt;
\newcommand{\interpret}[1]{[\![#1]\!]}&lt;br /&gt;
\newcommand{\mathautomaton}[1]{\mathcal{#1}}&lt;br /&gt;
\newcommand{\mathnat}{\mathbb{N}}&lt;br /&gt;
\newcommand{\qed}{\blacksquare}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
{{end |preamble}}&lt;br /&gt;
'''形式言語（formal language）'''とは有限な記号列の集合である。&lt;br /&gt;
&lt;br /&gt;
==  形式言語の導入 ==&lt;br /&gt;
この節においては、形式言語の定義を行う。&lt;br /&gt;
{{theorem |type=definition |name=記号列}}&lt;br /&gt;
'''記号集合（alphabet）'''とは'''記号（letter）'''の空でない集合である。&lt;br /&gt;
通常、形式言語を考える際は記号集合に有限性を課すことが多い。&lt;br /&gt;
本稿においても記号集合は特に断らない限り有限であるとする。&lt;br /&gt;
&lt;br /&gt;
記号集合 $\Sigma$ の元を有限個並べたものを'''語（word）'''や'''有限記号列（finite string）'''、&lt;br /&gt;
また単に'''記号列（string）'''などという。&lt;br /&gt;
以下では記号列で統一する。&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ の'''長さ（length）'''とは記号列を構成する&lt;br /&gt;
記号の個数である。&lt;br /&gt;
$w$ の長さを $\left|w\right|$ とあらわす。&lt;br /&gt;
&lt;br /&gt;
長さ $0$ の記号列を'''空列（empty string または empty word）'''という。&lt;br /&gt;
以下 $\emptyword$ によって空列を表す。&lt;br /&gt;
&lt;br /&gt;
{{id |id=id_concatenation}}&lt;br /&gt;
{{theorem |type=definition |name=連接}}&lt;br /&gt;
記号列 $a_{1}\dots a_{n}$ と $b_{1}\dots b_{m}$ の'''連接（concatenation）'''とは&lt;br /&gt;
記号列 $a_{1}\dots a_{n}b_{1}\dots b_{m}$ である。&lt;br /&gt;
&lt;br /&gt;
$w_{1}$ と $w_{2}$ が記号列を表すとき、$w_{1}$ と $w_{2}$ の連接を&lt;br /&gt;
$w_{1}\cdot w_{2}$ または単に $w_{1}w_{2}$ で表す。&lt;br /&gt;
&lt;br /&gt;
同じ記号列 $w$ を $n$ 個並べた記号列を $w^{n}$ と表す。形式的には記号列 $w$ と自然数 $n$ に対して、&lt;br /&gt;
# $w^{0}=\emptyword$&lt;br /&gt;
# $w^{n+1}=ww^{n}$&lt;br /&gt;
&lt;br /&gt;
と帰納的に定義する。&lt;br /&gt;
&lt;br /&gt;
同様にして記号列の集合 $L_{1}$, $L_{2}$ についてその連接を&lt;br /&gt;
\[L_{1}L_{2}= \mathsetintension{wv}{w\in L_{1}, v\in L_{2}} \]&lt;br /&gt;
と定義する。&lt;br /&gt;
&lt;br /&gt;
また，記号列の集合 $L$ に対して、$L^{n}$ （$n$ は自然数）を&lt;br /&gt;
# $L^{0}=\mathsetextension{\emptyword}$&lt;br /&gt;
# $L^{n+1}=\mathsetintension{wv}{w\in L, v\in L^{n}}$&lt;br /&gt;
&lt;br /&gt;
と帰納的に定義する。&lt;br /&gt;
&lt;br /&gt;
{{id |id=id_kleeneclosure}}&lt;br /&gt;
{{theorem |type=definition |name=Kleene閉包}}&lt;br /&gt;
記号列の集合 $L$ の'''Kleene閉包（Kleene closure）''' $\kleenecl{L}$ は&lt;br /&gt;
\[ \kleenecl{L} = \bigcup_{n=0}^{\infty} L^{n} \]&lt;br /&gt;
と定義される。&lt;br /&gt;
&lt;br /&gt;
記号集合 $\Sigma$ のKleene閉包 $\kleenecl{\Sigma}$ は、&lt;br /&gt;
$\Sigma$ の元を長さ $1$ の記号列とみなすことで自然に定義される。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=形式言語}}&lt;br /&gt;
記号集合 $\Sigma$ 上の'''形式言語（formal language）'''とは&lt;br /&gt;
$\kleenecl{\Sigma}$ の部分集合である。&lt;br /&gt;
&lt;br /&gt;
特に誤解のない限り、形式言語のことを単に'''言語（language）'''と呼ぶこともある。&lt;br /&gt;
&lt;br /&gt;
==  形式言語を扱う上でよく使われる演算など  ==&lt;br /&gt;
この節においては形式言語を考える際によく使われる演算などの定義・解説を行う。&lt;br /&gt;
以下では，特に断りのない限り記号集合 $\Sigma$ を固定する。&lt;br /&gt;
===  連接 ===&lt;br /&gt;
'''連接'''について述べる。&lt;br /&gt;
{{theorem |type=definition |name=連接}}&lt;br /&gt;
上記の[[#id_concatenation|連接の節]]を参照。&lt;br /&gt;
{{theorem |type=example |name=連接}}&lt;br /&gt;
* 記号列''math''と記号列''pedia''の連接は''mathpedia''である。&lt;br /&gt;
* 記号列''no''と記号列''where''の連接は''nowhere''である。&lt;br /&gt;
* 記号列''counter''と記号列''example''の連接は''counterexample''である。&lt;br /&gt;
* 記号列''ultra''と記号列''seven''の連接は''ultraseven''である。&lt;br /&gt;
* 記号列''bicycle''と記号列''repairman''の連接は''bicyclerepairman''である。&lt;br /&gt;
* 記号列 $\emptyword$ と記号列 $\emptyword$ の連接は $\emptyword$ である。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |name=連接の性質}}&lt;br /&gt;
* 任意の記号列 $w$ に対して、$w\emptyword=\emptyword w=w$ である。 &lt;br /&gt;
&lt;br /&gt;
====  連接とモノイド ====&lt;br /&gt;
* 連接 $\cdot$ を $\kleenecl{\Sigma}$ 上の演算とみなすことで、$(\kleenecl{\Sigma}, \cdot)$&lt;br /&gt;
は[[モノイド]]になる。単位元は $\emptyword$ である。&lt;br /&gt;
** 特に $(\kleenecl{\Sigma}, \cdot)$ を '''$\Sigma$ が生成する自由モノイド'''という。&lt;br /&gt;
&lt;br /&gt;
===  接頭語と接尾語 ===&lt;br /&gt;
形式言語の'''接頭語'''と'''接尾語'''について述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=接頭語、接尾語}}&lt;br /&gt;
$w=a_{0}\ldots a_{n}$ を記号列とする&lt;br /&gt;
（ただし、すべての $i$ に対して $a_{i}$ は記号であって、$a_{i}\neq \emptyword$ とする）。&lt;br /&gt;
&lt;br /&gt;
$w_{p}=a_{0}\ldots a_{n_{0}}$ （ただし、$0\leq n_{0}\leq n$）であるとき、&lt;br /&gt;
$w_{p}$ を $w$ の'''接頭語（prefix）'''と言う。&lt;br /&gt;
$w$ の接頭語 $w_{p}$ が $|w_{p}|&amp;lt;|w|$ を満たすとき、$w_{p}$ を'''真の接頭語（proper prefix）'''と言う。&lt;br /&gt;
&lt;br /&gt;
$w_{s}=a_{n_{0}}\ldots a_{n}$ （ただし、$0\leq n_{0}\leq n$）であるとき、&lt;br /&gt;
$w_{s}$ を $w$ の'''接尾語（suffix）'''と言う。&lt;br /&gt;
$w$ の接尾語 $w_{s}$ が $|w_{s}|&amp;lt;|w|$ を満たすとき、$w_{s}$ を'''真の接尾語（proper suffix）'''と言う。&lt;br /&gt;
&lt;br /&gt;
===  鏡像  ===&lt;br /&gt;
'''鏡像'''について述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=鏡像}}&lt;br /&gt;
$\kleenecl{\Sigma}$ の元 $w$ の&lt;br /&gt;
'''鏡像（mirror image）''' $\mirrorim{w}$ を次のように帰納的に定義する。&lt;br /&gt;
&lt;br /&gt;
# $w=\emptyword$ のとき、$\mirrorim{w}=\emptyword$ である。&lt;br /&gt;
# $w=av$ のとき、$\mirrorim{w}=\mirrorim{v}a$ である。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=鏡像}}&lt;br /&gt;
* 記号列''mathpedia''の鏡像は''aidephtam''である。&lt;br /&gt;
* 記号列''tomato''の鏡像は''otamot''である。&lt;br /&gt;
* 記号列''dog''の鏡像は''god''である。&lt;br /&gt;
* 記号列''top''の鏡像は''pot''である。&lt;br /&gt;
* 記号列''lol''の鏡像は''lol''である。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |name=鏡像の性質}}&lt;br /&gt;
* $\mirrorim{\mirrorim{w}}=w$&lt;br /&gt;
&lt;br /&gt;
===  商 ===&lt;br /&gt;
形式言語の'''商'''について述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=商}}&lt;br /&gt;
$\Sigma$ 上の形式言語 $L$、文字列 $w \in \kleenecl{\Sigma}$ に対して&lt;br /&gt;
$L$ の $w$ による'''左商（left quotient）'''を&lt;br /&gt;
\[w^{-1}L:= \mathsetintension{v \in \kleenecl{\Sigma}}{wv \in L} \]&lt;br /&gt;
と定める。&lt;br /&gt;
&lt;br /&gt;
また、$L$ の $w$ による'''右商（right quotient）'''を&lt;br /&gt;
\[Lw^{-1}:=\mathsetintension{v \in \kleenecl{\Sigma}}{vw \in L} \]&lt;br /&gt;
と定める。&lt;br /&gt;
&lt;br /&gt;
形式言語 $L$ の左商全体の集合を ${\kleenecl{\Sigma}}^{-1}L$ 右商全体の集合を $L{\Sigma^{*}}^{-1}$ で表す。つまり、&lt;br /&gt;
\begin{align*}%&lt;br /&gt;
{\kleenecl{\Sigma}}^{-1}L &amp;amp;:= \mathsetintension{w^{-1}L}{w \in \kleenecl{\Sigma}} \\&lt;br /&gt;
L{\kleenecl{\Sigma}}^{-1} &amp;amp;:= \mathsetintension{Lw^{-1}}{w \in \kleenecl{\Sigma}}&lt;br /&gt;
\end{align*}&lt;br /&gt;
である。&lt;br /&gt;
&lt;br /&gt;
===  （言語の）数え上げ関数と母関数 ===&lt;br /&gt;
形式言語の'''数え上げ関数'''と'''母関数'''について述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=数え上げ関数}}&lt;br /&gt;
形式言語 $L$ の'''数え上げ関数（counting function）''' $\Gamma_{L}:{\mathnat\to\mathnat}$ とは&lt;br /&gt;
\[\Gamma_{L}(n)=\mathof{\#}{\mathsetintension{w\in L}{|w|=n}}\]&lt;br /&gt;
で定義される関数である（ただし、$\#$ は有限集合を受け取りそこに所属する元の個数を返す関数）。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=母関数}}&lt;br /&gt;
形式言語 $L$ の'''母関数（generating function）'''とは形式的べき級数&lt;br /&gt;
\[\mathof{\mathgenfun{L}}{z}:=\sum_{n\geq 0} \mathof{\Gamma_{L}}{n}z^{n}\]&lt;br /&gt;
のことである（ただし、$\Gamma_{L}$ は $L$ の数え上げ関数）。&lt;br /&gt;
&lt;br /&gt;
==  参考文献 ==&lt;br /&gt;
# 新屋 良磨、オートマトン理論再考、コンピュータ ソフトウェア、2017、34 巻、3 号、p. 3_3-3_35、公開日 2017/09/25、Print ISSN 0289-6540、https://doi.org/10.11309/jssst.34.3_3、https://www.jstage.jst.go.jp/article/jssst/34/3/34_3_3/_article/-char/ja&lt;br /&gt;
# 五十嵐喜英他、『数理情報科学シリーズ ２４ オートマトンと形式言語の基礎』、牧野書店、2011&lt;br /&gt;
&lt;br /&gt;
==  関連項目 ==&lt;br /&gt;
* 主要な[[形式言語]]のクラス&lt;br /&gt;
** [[正規言語]]&lt;br /&gt;
*** [[正規表現]]&lt;br /&gt;
** [[文脈自由言語]]&lt;br /&gt;
*** [[BNF記法]]&lt;br /&gt;
** [[文脈依存言語]]&lt;br /&gt;
** [[句構造言語]]&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E6%9C%89%E9%99%90%E3%82%AA%E3%83%BC%E3%83%88%E3%83%9E%E3%83%88%E3%83%B3&amp;diff=4428</id>
		<title>有限オートマトン</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E6%9C%89%E9%99%90%E3%82%AA%E3%83%BC%E3%83%88%E3%83%9E%E3%83%88%E3%83%B3&amp;diff=4428"/>
		<updated>2021-04-09T13:56:19Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: 画像の差し替え&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:形式言語理論|ユウゲンオートマトン]]&lt;br /&gt;
[[Category:計算理論|ユウゲンオートマトン]]&lt;br /&gt;
{{begin |preamble}}&lt;br /&gt;
&amp;lt;!-- 参考文献 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 定理環境 --&amp;gt;&lt;br /&gt;
{{newtheorem |type=theorem |display=定理}}&lt;br /&gt;
{{newtheorem |type=lemma |display=補題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=definition |display=定義 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=prop |display=命題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=example |display=例 |family=theorem }}&lt;br /&gt;
&amp;lt;!-- MathJax commands --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\newcommand{\mathsetextension}[1]{%&lt;br /&gt;
\left\{ #1 \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathderiv}{\mathrel{\mathop{\Rightarrow}}^{*}}&lt;br /&gt;
\newcommand{\mathgen}{\rightsquigarrow}&lt;br /&gt;
\newcommand{\emptyword}{\varepsilon}&lt;br /&gt;
\newcommand{\kleenecl}[1]{{#1}^{*}}&lt;br /&gt;
\newcommand{\interpret}[1]{[\![#1]\!]}&lt;br /&gt;
\newcommand{\mathautomaton}[1]{\mathcal{#1}}&lt;br /&gt;
\newcommand{\mathnat}{\mathbb{N}}&lt;br /&gt;
\newcommand{\qed}{\blacksquare}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
{{end |preamble}}&lt;br /&gt;
'''有限オートマトン（finite automaton）'''とは[[正規言語]]を受理する計算モデルである。&lt;br /&gt;
&lt;br /&gt;
以下、項目[[形式言語]]において定められている言語上の演算などについては特に断らず用いる。&lt;br /&gt;
&lt;br /&gt;
==  有限オートマトンの導入  ==&lt;br /&gt;
この節では'''有限オートマトン'''やその周辺の重要な諸概念を定義する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=有限オートマトン |label=def-finite_automaton }}&lt;br /&gt;
'''有限オートマトン（finite automaton）'''とは&lt;br /&gt;
# '''状態集合(a set of states)'''と呼ばれる有限集合 $Q$&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# '''遷移関係(transition relation)'''と呼ばれる集合 $\Delta \subseteq Q\times (\Sigma \cup \{\emptyword\})  \times Q$ &lt;br /&gt;
# '''開始状態(initial state)'''と呼ばれる $q_{I}\in Q$&lt;br /&gt;
# '''受理状態(accepting state)'''や'''最終状態(final state)'''と呼ばれる集合 $F\subseteq Q$&lt;br /&gt;
&lt;br /&gt;
の５つ組 $(Q, \Sigma, \Delta, q_{I}, F)$ である。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=決定性有限オートマトン |label=def-deterministic_finite_automaton }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が次の２条件を満たすとき、'''$\mathautomaton{A}$ は決定性有限オートマトン(deterministic finite automaton)である'''と言う。&lt;br /&gt;
# $(q, a, q')\in \Delta$ に対して $a=\emptyword$ ならば、$q=q'$&lt;br /&gt;
# 各 $(q, a) \in Q\times \Sigma$ という組に対して、$(q, a, q')\in \Delta$ という形の元は高々一個&lt;br /&gt;
&lt;br /&gt;
有限オートマトン $\mathautomaton{A}$ が決定性有限オートマトンとは限らないことを明示したいときに、&lt;br /&gt;
'''$\mathautomaton{A}$ は非決定性有限オートマトン(nondeterministic finite automaton)である'''と言うことがある。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=有限オートマトンの受理する言語 |label=def-language_accepted_finite_automaton }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ と&lt;br /&gt;
記号列 $w \in \kleenecl{\Sigma}$ について、&lt;br /&gt;
次の２条件を満たす状態の列 $q_{0}, q_{1}, \dots, q_{n}$ を&lt;br /&gt;
'''記号列 $w$ による $q_{0}$ から $q_{n}$ への $\mathautomaton{A}$ の状態遷移'''と言う。&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{n}$ （ただし、各 $i=1, \dots, n$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）&lt;br /&gt;
# すべての $i\in \{1, \dots n\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ による $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
$q_{0}, q_{1}, \dots, q_{n}$ であって $q_{0} = q_{I}$, $q_{n}\in F$ を満たすものが存在するとき、&lt;br /&gt;
「有限オートマトン $\mathautomaton{A}$ が&lt;br /&gt;
'''記号列 $w$ を受理する'''」と言う。&lt;br /&gt;
&lt;br /&gt;
有限オートマトン $\mathautomaton{A}$ が受理する&lt;br /&gt;
記号列全体のことを '''有限オートマトン $\mathautomaton{A}$ の受理する言語'''&lt;br /&gt;
と言い、$L(\mathautomaton{A})$ と書く。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=等価な有限オートマトン |label=def-equivalence_finite_automaton }}&lt;br /&gt;
'''有限オートマトン $\mathautomaton{A}$ と 有限オートマトン $\mathautomaton{A'}$ が等価である'''とは，&lt;br /&gt;
$L(\mathautomaton{A})=L(\mathautomaton{A'})$&lt;br /&gt;
を満たすことである．&lt;br /&gt;
&lt;br /&gt;
==  有限オートマトンの例 ==&lt;br /&gt;
この節では有限オートマトンの例を紹介する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列全体を受理する有限オートマトン |label=ex-FA_all }}[[ファイル:Fig FA all.svg|サムネイル]]&lt;br /&gt;
\begin{align*}Q&amp;amp;=\mathsetextension{q_{I}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{I}), (q_{I}, 1, q_{I})}\\ F&amp;amp;= \mathsetextension{q_{I}}\end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。また、$\mathautomaton{A}$ は決定性有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
$0$ と $1$ からなる有限記号列をすべて受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ のみを受理する有限オートマトン |label=ex-0-1-only }}[[ファイル:Fig- 0-1-only.svg|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{1}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{2}), (q_{1}, 1, q_{2})}\\ F&amp;amp;=\mathsetextension{q_{1}} \end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は$0$ と $1$ のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$ をちょうど3個含む記号列全体を受理する有限オートマトン |label=ex-only-three-one}}[[ファイル:Fig FA only three one.svg|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}, q_{3}} \\ \Sigma&amp;amp;=\mathsetextension{0, 1} \\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{I}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{2}), (q_{2}, 0, q_{2}), (q_{2}, 1, q_{3}), (q_{3}, 0, q_{3})} \\ F&amp;amp;=\mathsetextension{q_{3}} \end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$ をちょうど3個含む記号列のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列全体を受理する有限オートマトン その1 |label=ex-one-less-than-three-1 }}[[ファイル:Fig FA one less than three 1.svg|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}, q_{3}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{I}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{2}), (q_{2}, 0, q_{2}), (q_{2}, 1, q_{3}), (q_{3}, 0, q_{3}), (q_{I}, \emptyword, q_{3}), (q_{1}, \emptyword, q_{3}), (q_{2}, \emptyword, q_{3})}\\ F&amp;amp;= \mathsetextension{q_{3}}\end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列全体を受理する有限オートマトン その2 |label=ex-one-less-than-three-2 }}[[ファイル:Fig FA one less than three 2.png|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}, q_{3}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, \emptyword, q_{I}), (q_{I}, 0, q_{I}), (q_{I}, 0, q_{1}), (q_{I}, 0, q_{2}), (q_{I}, 0, q_{3}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{2}), (q_{2}, 0, q_{2}), (q_{2}, 1, q_{3})}\\ F&amp;amp;= \mathsetextension{q_{I},q_{3}}\end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ も&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=自然数の二進表現全体を受理する有限オートマトン |label=ex-bi }}[[ファイル:Fig FA bi.svg|サムネイル]]&lt;br /&gt;
\begin{align*}Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{2}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{1})}\\ F&amp;amp;= \mathsetextension{q_{1}, q_{2}}\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
自然数の二進表現のみを受理する。&lt;br /&gt;
&lt;br /&gt;
==  正規言語、正規表現との関係 ==&lt;br /&gt;
この節では有限オートマトン、[[正規言語]]および[[正規表現]]の関係を述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=theorem |label=thm-Regular_Lang }}&lt;br /&gt;
言語 $L$ について以下は同値である．&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $L=\interpret{\alpha}$ なる正規表現 $\alpha$ が存在する。&lt;br /&gt;
# $L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
&lt;br /&gt;
この定理の証明は、項目[[正規言語#thm-regularandNFA|正規言語]]を参照せよ。&lt;br /&gt;
&lt;br /&gt;
==  反復補題（ポンピング補題） ==&lt;br /&gt;
この節では'''反復補題（pumping lemma）'''について述べる&amp;lt;ref name=&amp;quot;THE-BOOK&amp;quot;&amp;gt;Martin Aigner,Guenter M. Ziegler,Karl H. Hofmann, [&amp;quot;Proofs from THE BOOK&amp;quot;], Springer, 2004 によると、一般に定理が'''補題'''と呼ばれる条件は「広範囲の応用例を持つ」「一見して完璧に明らか」「証明も含めて美しい」の三条件を満たすことである。&amp;lt;/ref&amp;gt;。&lt;br /&gt;
反復補題は'''ポンピング補題'''や'''ポンプ補題'''と呼ばれることもある。&lt;br /&gt;
&lt;br /&gt;
反復補題は[[正規言語#not_regular_lang|ある記号列の集合が正規言語ではない証明]]などに&lt;br /&gt;
よく用いられる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=lemma |name=反復補題 |label=pumping_lemma }}&lt;br /&gt;
状態集合の大きさが $n$ の有限オートマトン $\mathautomaton{A}$ に記号列 $w$ が受理されるとする。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|&amp;gt;n$ であるとき、次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w=xyz$。&lt;br /&gt;
# $\left|y\right|&amp;gt;0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n$。&lt;br /&gt;
&lt;br /&gt;
'''{{ref |type=lemma |label=pumping_lemma }}の証明'''&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ に $w$ が受理されるとする。&lt;br /&gt;
以下 $n:=\left|Q\right|$, $l:=\left|w\right|$, $l&amp;gt;n$ とする。&lt;br /&gt;
&lt;br /&gt;
有限オートマトン $\mathautomaton{A}$ に $w$ が受理されることから、&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{k}$ （ただし、各 $i=1, \dots, k$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）。&lt;br /&gt;
# すべての $i\in \{1, \dots k\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$。&lt;br /&gt;
# $q_{0}=q_{I}$, $q_{k}\in F$。&lt;br /&gt;
&lt;br /&gt;
を満たす状態の列 $q_{0}, q_{1}, \dots, q_{k}$ と記号の列 $a_{1}, a_{2}, \dots, a_{k}$が存在する&lt;br /&gt;
（ただし、$k\geq l$）。&lt;br /&gt;
&lt;br /&gt;
$l&amp;gt;n$ から長さが $n$ の $w$ の[[形式言語#prefix_suffix|接頭語]] $w_{0}$ が存在する。&lt;br /&gt;
すると、$q_{0}, q_{1}, \dots, q_{k}$&lt;br /&gt;
の部分列であって、$w_{0}$ による $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
$$q_{0}, q_{1}, \dots, q_{k_{0}}$$&lt;br /&gt;
が存在する（ただし $n\leq k_{0}\leq k$）。&lt;br /&gt;
&lt;br /&gt;
すると、鳩ノ巣原理より&lt;br /&gt;
# $(q_{i-1}, a_{i}, q_{i})$, $(q_{i+j-1}, a_{i+j}, q_{i+j})\in \Delta$&lt;br /&gt;
（ただし、$a_{i}\neq\emptyword$, $a_{i+j}\neq\emptyword$）&lt;br /&gt;
# $q_{i}=q_{i+j}$&lt;br /&gt;
&lt;br /&gt;
という条件を満たす自然数の組 $(i, j)$ （ただし $0\leq i\leq k_{0}$, $0&amp;lt; j\leq k_{0}$）が少なくとも１つ存在する。&lt;br /&gt;
以下その $i$, $j$ を固定する。&lt;br /&gt;
&lt;br /&gt;
\begin{align*} x&amp;amp;:=a_{1}a_{2}\ldots a_{i}, \\ y&amp;amp;:=a_{i+1}a_{i+2}\ldots a_{i+j}, \\ z&amp;amp;:=a_{i+j+1}a_{i+j+2}\ldots a_{k},\end{align*}&lt;br /&gt;
とすると、$w=xyz$ である。また、$a_{i+j}\neq\emptyword$ であるから $\left|y\right|&amp;gt;0$。&lt;br /&gt;
さらに、定義より $xy$ は $w_{0}$ の部分列であるから、$|xy|\leq n$。&lt;br /&gt;
&lt;br /&gt;
任意の$m\in\mathnat$に対して，記号列 $xy^{m}z$ が $\mathautomaton{A}$ に受理されることを示す。&lt;br /&gt;
&lt;br /&gt;
以下，記号列 $x$, $y$, $z$ による $\mathautomaton{A}$ の状態遷移をそれぞれ&lt;br /&gt;
\begin{align*}Q_{x}&amp;amp;=q_{0}, \dots, q_{i}, \\ Q_{y}&amp;amp;=q_{i+1}, \dots, q_{i+j}, \\ Q_{z}&amp;amp;=q_{i+j+1}, \dots, q_{k}, \end{align*}&lt;br /&gt;
と書くことにする。&lt;br /&gt;
&lt;br /&gt;
$m=0$ のときを示す。&lt;br /&gt;
&lt;br /&gt;
$q_{i}=q_{i+j}$ に注意すると、$(q_{i}, a_{i+j+1}, q_{i+j+1})\in \Delta$ である。&lt;br /&gt;
よって、&lt;br /&gt;
$$Q_{x}Q_{z}=q_{0}, \dots, q_{i}, q_{i+j+1}, \dots, q_{k}$$&lt;br /&gt;
は記号列 $xz$ による $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
$q_{0}=q_{I}$, $q_{k}\in F$ であるから、$xz$($=xy^{0}z$) は $\mathautomaton{A}$ に受理される。&lt;br /&gt;
&lt;br /&gt;
$m&amp;gt;0$ のときを示す。&lt;br /&gt;
&lt;br /&gt;
$q_{i}=q_{i+j}$ に注意すると、$(q_{i+j}, a_{i+j+1}, q_{i+1})\in \Delta$ である。&lt;br /&gt;
$$Q_{x}\overbrace{Q_{y}\dots Q_{y}}^{m\text{個}}Q_{z}=q_{0}, \dots, q_{i}, \overbrace{q_{i+1}, \dots, q_{i+j}, q_{i+1}, \dots, q_{i+j}}^{\text{$q_{i+1}, \dots, q_{i+j}$ の反復が $m$回}}, q_{i+j+1}, \dots, q_{k}$$&lt;br /&gt;
は記号列 $xy^{m}z$ による $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
$q_{0}=q_{I}$, $q_{k}\in F$ であるから、$xy^{m}z$ は $\mathautomaton{A}$ に受理される。 &lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
===  反復補題の補足 ===&lt;br /&gt;
本稿の反復補題の $|xy|\leq n$ という条件を外したものも反復補題と呼ばれる。&lt;br /&gt;
反復補題の証明中において、$w$ の部分列を考えたことがそれ以外の条件の証明に対して非本質的であることに注意すると、&lt;br /&gt;
$|xy|\leq n$ という条件が余計であると考えられるからであろう。&lt;br /&gt;
&lt;br /&gt;
==  $\emptyword$ 動作なしの有限オートマトン ==&lt;br /&gt;
この項では&lt;br /&gt;
'''$\emptyword$ 動作なしの有限オートマトン(finite automaton without $\emptyword$-transitions)'''&lt;br /&gt;
について述べる．&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=$\emptyword$ 動作なしの有限オートマトン |label=def-finite_automaton_non_emptyword }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が&lt;br /&gt;
次の条件を満たすとき、&lt;br /&gt;
'''$\mathautomaton{A}$ は $\emptyword$ 動作なしの有限オートマトン(finite automaton without $\emptyword$-transitions)である'''&lt;br /&gt;
と言う。&lt;br /&gt;
* $(q, a, q')\in \Delta$ に対して $a=\emptyword$ ならば $q=q'$&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=prop-finite_automaton_non_emptyword }}&lt;br /&gt;
任意の有限オートマトンに対して、&lt;br /&gt;
それと等価な$\emptyword$ 動作なしの有限オートマトンが存在する。&lt;br /&gt;
&lt;br /&gt;
==== {{ref |type=prop |label=prop-finite_automaton_non_emptyword }} の証明 ====&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
Now writing.......&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
==  参考文献 ==&lt;br /&gt;
# 新屋 良磨、オートマトン理論再考、コンピュータ ソフトウェア、2017、34 巻、3 号、p. 3_3-3_35、公開日 2017/09/25、Print ISSN 0289-6540、[https://doi.org/10.11309/jssst.34.3_3]、[https://www.jstage.jst.go.jp/article/jssst/34/3/34_3_3/_article/-char/ja]&lt;br /&gt;
# 五十嵐喜英他、『[数理情報科学シリーズ ２４ オートマトンと形式言語の基礎]』、牧野書店、2011&lt;br /&gt;
# Martin Aigner,Guenter M. Ziegler,Karl H. Hofmann, [&amp;quot;Proofs from THE BOOK&amp;quot;], Springer, 2004&lt;br /&gt;
&lt;br /&gt;
====== 脚注 ======&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 関連項目  ==&lt;br /&gt;
* [[形式言語]]&lt;br /&gt;
* [[正規表現]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
|+ Chomsky階層&lt;br /&gt;
! 文法のタイプ&lt;br /&gt;
! 言語のクラス&lt;br /&gt;
! 計算モデル&lt;br /&gt;
|-&lt;br /&gt;
! タイプ0&lt;br /&gt;
| [[句構造言語]]&lt;br /&gt;
| [[Turingマシン]]&lt;br /&gt;
|-&lt;br /&gt;
! タイプ1&lt;br /&gt;
| [[文脈依存言語]]&lt;br /&gt;
| [[線形有界オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ2&lt;br /&gt;
| [[文脈自由言語]]&lt;br /&gt;
| [[プッシュダウン・オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ3&lt;br /&gt;
| [[正規言語]]&lt;br /&gt;
| [[有限オートマトン]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:Fig_FA_one_less_than_three_2.png&amp;diff=4427</id>
		<title>ファイル:Fig FA one less than three 2.png</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB:Fig_FA_one_less_than_three_2.png&amp;diff=4427"/>
		<updated>2021-04-09T13:54:15Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: svg が使えなくなったの草&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== 概要 ==&lt;br /&gt;
svg が使えなくなったの草&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E6%9C%89%E9%99%90%E3%82%AA%E3%83%BC%E3%83%88%E3%83%9E%E3%83%88%E3%83%B3&amp;diff=3867</id>
		<title>有限オートマトン</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E6%9C%89%E9%99%90%E3%82%AA%E3%83%BC%E3%83%88%E3%83%9E%E3%83%88%E3%83%B3&amp;diff=3867"/>
		<updated>2021-03-16T01:26:07Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: Fix typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:形式言語理論|ユウゲンオートマトン]]&lt;br /&gt;
[[Category:計算理論|ユウゲンオートマトン]]&lt;br /&gt;
{{begin |preamble}}&lt;br /&gt;
&amp;lt;!-- 参考文献 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 定理環境 --&amp;gt;&lt;br /&gt;
{{newtheorem |type=theorem |display=定理}}&lt;br /&gt;
{{newtheorem |type=lemma |display=補題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=definition |display=定義 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=prop |display=命題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=example |display=例 |family=theorem }}&lt;br /&gt;
&amp;lt;!-- MathJax commands --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\newcommand{\mathsetextension}[1]{%&lt;br /&gt;
\left\{ #1 \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathderiv}{\mathrel{\mathop{\Rightarrow}}^{*}}&lt;br /&gt;
\newcommand{\mathgen}{\rightsquigarrow}&lt;br /&gt;
\newcommand{\emptyword}{\varepsilon}&lt;br /&gt;
\newcommand{\kleenecl}[1]{{#1}^{*}}&lt;br /&gt;
\newcommand{\interpret}[1]{[\![#1]\!]}&lt;br /&gt;
\newcommand{\mathautomaton}[1]{\mathcal{#1}}&lt;br /&gt;
\newcommand{\mathnat}{\mathbb{N}}&lt;br /&gt;
\newcommand{\qed}{\blacksquare}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
{{end |preamble}}&lt;br /&gt;
'''有限オートマトン（finite automaton）'''とは[[正規言語]]を受理する計算モデルである。&lt;br /&gt;
&lt;br /&gt;
以下、項目[[形式言語]]において定められている言語上の演算などについては特に断らず用いる。&lt;br /&gt;
&lt;br /&gt;
==  有限オートマトンの導入  ==&lt;br /&gt;
この節では'''有限オートマトン'''やその周辺の重要な諸概念を定義する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=有限オートマトン |label=def-finite_automaton }}&lt;br /&gt;
'''有限オートマトン（finite automaton）'''とは&lt;br /&gt;
# '''状態集合(a set of states)'''と呼ばれる有限集合 $Q$&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# '''遷移関係(transition relation)'''と呼ばれる集合 $\Delta \subseteq Q\times (\Sigma \cup \{\emptyword\})  \times Q$ &lt;br /&gt;
# '''開始状態(initial state)'''と呼ばれる $q_{I}\in Q$&lt;br /&gt;
# '''受理状態(accepting state)'''や'''最終状態(final state)'''と呼ばれる集合 $F\subseteq Q$&lt;br /&gt;
&lt;br /&gt;
の５つ組 $(Q, \Sigma, \Delta, q_{I}, F)$ である。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=決定性有限オートマトン |label=def-deterministic_finite_automaton }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が次の２条件を満たすとき、'''$\mathautomaton{A}$ は決定性有限オートマトン(deterministic finite automaton)である'''と言う。&lt;br /&gt;
# $(q, a, q')\in \Delta$ に対して $a=\emptyword$ ならば、$q=q'$&lt;br /&gt;
# 各 $(q, a) \in Q\times \Sigma$ という組に対して、$(q, a, q')\in \Delta$ という形の元は高々一個&lt;br /&gt;
&lt;br /&gt;
有限オートマトン $\mathautomaton{A}$ が決定性有限オートマトンとは限らないことを明示したいときに、&lt;br /&gt;
'''$\mathautomaton{A}$ は非決定性有限オートマトン(nondeterministic finite automaton)である'''と言うことがある。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=有限オートマトンの受理する言語 |label=def-language_accepted_finite_automaton }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ と&lt;br /&gt;
記号列 $w \in \kleenecl{\Sigma}$ について、&lt;br /&gt;
次の２条件を満たす状態の列 $q_{0}, q_{1}, \dots, q_{n}$ を&lt;br /&gt;
'''記号列 $w$ による $q_{0}$ から $q_{n}$ への $\mathautomaton{A}$ の状態遷移'''と言う。&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{n}$ （ただし、各 $i=1, \dots, n$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）&lt;br /&gt;
# すべての $i\in \{1, \dots n\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ による $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
$q_{0}, q_{1}, \dots, q_{n}$ であって $q_{0} = q_{I}$, $q_{n}\in F$ を満たすものが存在するとき、&lt;br /&gt;
「有限オートマトン $\mathautomaton{A}$ が&lt;br /&gt;
'''記号列 $w$ を受理する'''」と言う。&lt;br /&gt;
&lt;br /&gt;
有限オートマトン $\mathautomaton{A}$ が受理する&lt;br /&gt;
記号列全体のことを '''有限オートマトン $\mathautomaton{A}$ の受理する言語'''&lt;br /&gt;
と言い、$L(\mathautomaton{A})$ と書く。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=等価な有限オートマトン |label=def-equivalence_finite_automaton }}&lt;br /&gt;
'''有限オートマトン $\mathautomaton{A}$ と 有限オートマトン $\mathautomaton{A'}$ が等価である'''とは，&lt;br /&gt;
$L(\mathautomaton{A})=L(\mathautomaton{A'})$&lt;br /&gt;
を満たすことである．&lt;br /&gt;
&lt;br /&gt;
==  有限オートマトンの例 ==&lt;br /&gt;
この節では有限オートマトンの例を紹介する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列全体を受理する有限オートマトン |label=ex-FA_all }}[[ファイル:Fig FA all.svg|サムネイル]]&lt;br /&gt;
\begin{align*}Q&amp;amp;=\mathsetextension{q_{I}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{I}), (q_{I}, 1, q_{I})}\\ F&amp;amp;= \mathsetextension{q_{I}}\end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。また、$\mathautomaton{A}$ は決定性有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
$0$ と $1$ からなる有限記号列をすべて受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ のみを受理する有限オートマトン |label=ex-0-1-only }}[[ファイル:Fig- 0-1-only.svg|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{1}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{2}), (q_{1}, 1, q_{2})}\\ F&amp;amp;=\mathsetextension{q_{1}} \end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は$0$ と $1$ のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$ をちょうど3個含む記号列全体を受理する有限オートマトン |label=ex-only-three-one}}[[ファイル:Fig FA only three one.svg|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}, q_{3}} \\ \Sigma&amp;amp;=\mathsetextension{0, 1} \\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{I}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{2}), (q_{2}, 0, q_{2}), (q_{2}, 1, q_{3}), (q_{3}, 0, q_{3})} \\ F&amp;amp;=\mathsetextension{q_{3}} \end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$ をちょうど3個含む記号列のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列全体を受理する有限オートマトン その1 |label=ex-one-less-than-three-1 }}[[ファイル:Fig FA one less than three 1.svg|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}, q_{3}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{I}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{2}), (q_{2}, 0, q_{2}), (q_{2}, 1, q_{3}), (q_{3}, 0, q_{3}), (q_{I}, \emptyword, q_{3}), (q_{1}, \emptyword, q_{3}), (q_{2}, \emptyword, q_{3})}\\ F&amp;amp;= \mathsetextension{q_{3}}\end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列全体を受理する有限オートマトン その2 |label=ex-one-less-than-three-2 }}[[ファイル:Fig FA one less than three 2.svg|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}, q_{3}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, \emptyword, q_{I}), (q_{I}, 0, q_{I}), (q_{I}, 0, q_{1}), (q_{I}, 0, q_{2}), (q_{I}, 0, q_{3}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{2}), (q_{2}, 0, q_{2}), (q_{2}, 1, q_{3})}\\ F&amp;amp;= \mathsetextension{q_{I},q_{3}}\end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ も&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=自然数の二進表現全体を受理する有限オートマトン |label=ex-bi }}[[ファイル:Fig FA bi.svg|サムネイル]]&lt;br /&gt;
\begin{align*}Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{2}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{1})}\\ F&amp;amp;= \mathsetextension{q_{1}, q_{2}}\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
自然数の二進表現のみを受理する。&lt;br /&gt;
&lt;br /&gt;
==  正規言語、正規表現との関係 ==&lt;br /&gt;
この節では有限オートマトン、[[正規言語]]および[[正規表現]]の関係を述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=theorem |label=thm-Regular_Lang }}&lt;br /&gt;
言語 $L$ について以下は同値である．&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $L=\interpret{\alpha}$ なる正規表現 $\alpha$ が存在する。&lt;br /&gt;
# $L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
&lt;br /&gt;
この定理の証明は、項目[[正規言語#thm-regularandNFA|正規言語]]を参照せよ。&lt;br /&gt;
&lt;br /&gt;
==  反復補題（ポンピング補題） ==&lt;br /&gt;
この節では'''反復補題（pumping lemma）'''について述べる&amp;lt;ref name=&amp;quot;THE-BOOK&amp;quot;&amp;gt;Martin Aigner,Guenter M. Ziegler,Karl H. Hofmann, [&amp;quot;Proofs from THE BOOK&amp;quot;], Springer, 2004 によると、一般に定理が'''補題'''と呼ばれる条件は「広範囲の応用例を持つ」「一見して完璧に明らか」「証明も含めて美しい」の三条件を満たすことである。&amp;lt;/ref&amp;gt;。&lt;br /&gt;
反復補題は'''ポンピング補題'''や'''ポンプ補題'''と呼ばれることもある。&lt;br /&gt;
&lt;br /&gt;
反復補題は[[正規言語#not_regular_lang|ある記号列の集合が正規言語ではない証明]]などに&lt;br /&gt;
よく用いられる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=lemma |name=反復補題 |label=pumping_lemma }}&lt;br /&gt;
状態集合の大きさが $n$ の有限オートマトン $\mathautomaton{A}$ に記号列 $w$ が受理されるとする。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|&amp;gt;n$ であるとき、次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w=xyz$。&lt;br /&gt;
# $\left|y\right|&amp;gt;0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n$。&lt;br /&gt;
&lt;br /&gt;
'''{{ref |type=lemma |label=pumping_lemma }}の証明'''&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ に $w$ が受理されるとする。&lt;br /&gt;
以下 $n:=\left|Q\right|$, $l:=\left|w\right|$, $l&amp;gt;n$ とする。&lt;br /&gt;
&lt;br /&gt;
有限オートマトン $\mathautomaton{A}$ に $w$ が受理されることから、&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{k}$ （ただし、各 $i=1, \dots, k$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）。&lt;br /&gt;
# すべての $i\in \{1, \dots k\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$。&lt;br /&gt;
# $q_{0}=q_{I}$, $q_{k}\in F$。&lt;br /&gt;
&lt;br /&gt;
を満たす状態の列 $q_{0}, q_{1}, \dots, q_{k}$ と記号の列 $a_{1}, a_{2}, \dots, a_{k}$が存在する&lt;br /&gt;
（ただし、$k\geq l$）。&lt;br /&gt;
&lt;br /&gt;
$l&amp;gt;n$ から長さが $n$ の $w$ の[[形式言語#prefix_suffix|接頭語]] $w_{0}$ が存在する。&lt;br /&gt;
すると、$q_{0}, q_{1}, \dots, q_{k}$&lt;br /&gt;
の部分列であって、$w_{0}$ による $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
$$q_{0}, q_{1}, \dots, q_{k_{0}}$$&lt;br /&gt;
が存在する（ただし $n\leq k_{0}\leq k$）。&lt;br /&gt;
&lt;br /&gt;
すると、鳩ノ巣原理より&lt;br /&gt;
# $(q_{i-1}, a_{i}, q_{i})$, $(q_{i+j-1}, a_{i+j}, q_{i+j})\in \Delta$&lt;br /&gt;
（ただし、$a_{i}\neq\emptyword$, $a_{i+j}\neq\emptyword$）&lt;br /&gt;
# $q_{i}=q_{i+j}$&lt;br /&gt;
&lt;br /&gt;
という条件を満たす自然数の組 $(i, j)$ （ただし $0\leq i\leq k_{0}$, $0&amp;lt; j\leq k_{0}$）が少なくとも１つ存在する。&lt;br /&gt;
以下その $i$, $j$ を固定する。&lt;br /&gt;
&lt;br /&gt;
\begin{align*} x&amp;amp;:=a_{1}a_{2}\ldots a_{i}, \\ y&amp;amp;:=a_{i+1}a_{i+2}\ldots a_{i+j}, \\ z&amp;amp;:=a_{i+j+1}a_{i+j+2}\ldots a_{k},\end{align*}&lt;br /&gt;
とすると、$w=xyz$ である。また、$a_{i+j}\neq\emptyword$ であるから $\left|y\right|&amp;gt;0$。&lt;br /&gt;
さらに、定義より $xy$ は $w_{0}$ の部分列であるから、$|xy|\leq n$。&lt;br /&gt;
&lt;br /&gt;
任意の$m\in\mathnat$に対して，記号列 $xy^{m}z$ が $\mathautomaton{A}$ に受理されることを示す。&lt;br /&gt;
&lt;br /&gt;
以下，記号列 $x$, $y$, $z$ による $\mathautomaton{A}$ の状態遷移をそれぞれ&lt;br /&gt;
\begin{align*}Q_{x}&amp;amp;=q_{0}, \dots, q_{i}, \\ Q_{y}&amp;amp;=q_{i+1}, \dots, q_{i+j}, \\ Q_{z}&amp;amp;=q_{i+j+1}, \dots, q_{k}, \end{align*}&lt;br /&gt;
と書くことにする。&lt;br /&gt;
&lt;br /&gt;
$m=0$ のときを示す。&lt;br /&gt;
&lt;br /&gt;
$q_{i}=q_{i+j}$ に注意すると、$(q_{i}, a_{i+j+1}, q_{i+j+1})\in \Delta$ である。&lt;br /&gt;
よって、&lt;br /&gt;
$$Q_{x}Q_{z}=q_{0}, \dots, q_{i}, q_{i+j+1}, \dots, q_{k}$$&lt;br /&gt;
は記号列 $xz$ による $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
$q_{0}=q_{I}$, $q_{k}\in F$ であるから、$xz$($=xy^{0}z$) は $\mathautomaton{A}$ に受理される。&lt;br /&gt;
&lt;br /&gt;
$m&amp;gt;0$ のときを示す。&lt;br /&gt;
&lt;br /&gt;
$q_{i}=q_{i+j}$ に注意すると、$(q_{i+j}, a_{i+j+1}, q_{i+1})\in \Delta$ である。&lt;br /&gt;
$$Q_{x}\overbrace{Q_{y}\dots Q_{y}}^{m\text{個}}Q_{z}=q_{0}, \dots, q_{i}, \overbrace{q_{i+1}, \dots, q_{i+j}, q_{i+1}, \dots, q_{i+j}}^{\text{$q_{i+1}, \dots, q_{i+j}$ の反復が $m$回}}, q_{i+j+1}, \dots, q_{k}$$&lt;br /&gt;
は記号列 $xy^{m}z$ による $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
$q_{0}=q_{I}$, $q_{k}\in F$ であるから、$xy^{m}z$ は $\mathautomaton{A}$ に受理される。 &lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
===  反復補題の補足 ===&lt;br /&gt;
本稿の反復補題の $|xy|\leq n$ という条件を外したものも反復補題と呼ばれる。&lt;br /&gt;
反復補題の証明中において、$w$ の部分列を考えたことがそれ以外の条件の証明に対して非本質的であることに注意すると、&lt;br /&gt;
$|xy|\leq n$ という条件が余計であると考えられるからであろう。&lt;br /&gt;
&lt;br /&gt;
==  $\emptyword$ 動作なしの有限オートマトン ==&lt;br /&gt;
この項では&lt;br /&gt;
'''$\emptyword$ 動作なしの有限オートマトン(finite automaton without $\emptyword$-transitions)'''&lt;br /&gt;
について述べる．&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=$\emptyword$ 動作なしの有限オートマトン |label=def-finite_automaton_non_emptyword }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が&lt;br /&gt;
次の条件を満たすとき、&lt;br /&gt;
'''$\mathautomaton{A}$ は $\emptyword$ 動作なしの有限オートマトン(finite automaton without $\emptyword$-transitions)である'''&lt;br /&gt;
と言う。&lt;br /&gt;
* $(q, a, q')\in \Delta$ に対して $a=\emptyword$ ならば $q=q'$&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=prop-finite_automaton_non_emptyword }}&lt;br /&gt;
任意の有限オートマトンに対して、&lt;br /&gt;
それと等価な$\emptyword$ 動作なしの有限オートマトンが存在する。&lt;br /&gt;
&lt;br /&gt;
==== {{ref |type=prop |label=prop-finite_automaton_non_emptyword }} の証明 ====&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
Now writing.......&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
==  参考文献 ==&lt;br /&gt;
# 新屋 良磨、オートマトン理論再考、コンピュータ ソフトウェア、2017、34 巻、3 号、p. 3_3-3_35、公開日 2017/09/25、Print ISSN 0289-6540、[https://doi.org/10.11309/jssst.34.3_3]、[https://www.jstage.jst.go.jp/article/jssst/34/3/34_3_3/_article/-char/ja]&lt;br /&gt;
# 五十嵐喜英他、『[数理情報科学シリーズ ２４ オートマトンと形式言語の基礎]』、牧野書店、2011&lt;br /&gt;
# Martin Aigner,Guenter M. Ziegler,Karl H. Hofmann, [&amp;quot;Proofs from THE BOOK&amp;quot;], Springer, 2004&lt;br /&gt;
&lt;br /&gt;
====== 脚注 ======&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 関連項目  ==&lt;br /&gt;
* [[形式言語]]&lt;br /&gt;
* [[正規表現]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
|+ Chomsky階層&lt;br /&gt;
! 文法のタイプ&lt;br /&gt;
! 言語のクラス&lt;br /&gt;
! 計算モデル&lt;br /&gt;
|-&lt;br /&gt;
! タイプ0&lt;br /&gt;
| [[句構造言語]]&lt;br /&gt;
| [[Turingマシン]]&lt;br /&gt;
|-&lt;br /&gt;
! タイプ1&lt;br /&gt;
| [[文脈依存言語]]&lt;br /&gt;
| [[線形有界オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ2&lt;br /&gt;
| [[文脈自由言語]]&lt;br /&gt;
| [[プッシュダウン・オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ3&lt;br /&gt;
| [[正規言語]]&lt;br /&gt;
| [[有限オートマトン]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E6%9C%89%E9%99%90%E3%82%AA%E3%83%BC%E3%83%88%E3%83%9E%E3%83%88%E3%83%B3&amp;diff=3866</id>
		<title>有限オートマトン</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E6%9C%89%E9%99%90%E3%82%AA%E3%83%BC%E3%83%88%E3%83%9E%E3%83%88%E3%83%B3&amp;diff=3866"/>
		<updated>2021-03-16T01:21:31Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: Fix typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:形式言語理論|ユウゲンオートマトン]]&lt;br /&gt;
[[Category:計算理論|ユウゲンオートマトン]]&lt;br /&gt;
{{begin |preamble}}&lt;br /&gt;
&amp;lt;!-- 参考文献 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 定理環境 --&amp;gt;&lt;br /&gt;
{{newtheorem |type=theorem |display=定理}}&lt;br /&gt;
{{newtheorem |type=lemma |display=補題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=definition |display=定義 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=prop |display=命題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=example |display=例 |family=theorem }}&lt;br /&gt;
&amp;lt;!-- MathJax commands --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\newcommand{\mathsetextension}[1]{%&lt;br /&gt;
\left\{ #1 \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathderiv}{\mathrel{\mathop{\Rightarrow}}^{*}}&lt;br /&gt;
\newcommand{\mathgen}{\rightsquigarrow}&lt;br /&gt;
\newcommand{\emptyword}{\varepsilon}&lt;br /&gt;
\newcommand{\kleenecl}[1]{{#1}^{*}}&lt;br /&gt;
\newcommand{\interpret}[1]{[\![#1]\!]}&lt;br /&gt;
\newcommand{\mathautomaton}[1]{\mathcal{#1}}&lt;br /&gt;
\newcommand{\mathnat}{\mathbb{N}}&lt;br /&gt;
\newcommand{\qed}{\blacksquare}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
{{end |preamble}}&lt;br /&gt;
'''有限オートマトン（finite automaton）'''とは[[正規言語]]を受理する計算モデルである。&lt;br /&gt;
&lt;br /&gt;
以下、項目[[形式言語]]において定められている言語上の演算などについては特に断らず用いる。&lt;br /&gt;
&lt;br /&gt;
==  有限オートマトンの導入  ==&lt;br /&gt;
この節では'''有限オートマトン'''やその周辺の重要な諸概念を定義する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=有限オートマトン |label=def-finite_automaton }}&lt;br /&gt;
'''有限オートマトン（finite automaton）'''とは&lt;br /&gt;
# '''状態集合(a set of states)'''と呼ばれる有限集合 $Q$&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# '''遷移関係(transition relation)'''と呼ばれる集合 $\Delta \subseteq Q\times (\Sigma \cup \{\emptyword\})  \times Q$ &lt;br /&gt;
# '''開始状態(initial state)'''と呼ばれる $q_{I}\in Q$&lt;br /&gt;
# '''受理状態(accepting state)'''や'''最終状態(final state)'''と呼ばれる集合 $F\subseteq Q$&lt;br /&gt;
&lt;br /&gt;
の５つ組 $(Q, \Sigma, \Delta, q_{I}, F)$ である。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=決定性有限オートマトン |label=def-deterministic_finite_automaton }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が次の２条件を満たすとき、'''$\mathautomaton{A}$ は決定性有限オートマトン(deterministic finite automaton)である'''と言う。&lt;br /&gt;
# $(q, a, q')\in \Delta$ に対して $a=\emptyword$ ならば、$q=q'$&lt;br /&gt;
# 各 $(q, a) \in Q\times \Sigma$ という組に対して、$(q, a, q')\in \Delta$ という形の元は高々一個&lt;br /&gt;
&lt;br /&gt;
有限オートマトン $\mathautomaton{A}$ が決定性有限オートマトンとは限らないことを明示したいときに、&lt;br /&gt;
'''$\mathautomaton{A}$ は非決定性有限オートマトン(nondeterministic finite automaton)である'''と言うことがある。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=有限オートマトンの受理する言語 |label=def-language_accepted_finite_automaton }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ と&lt;br /&gt;
記号列 $w \in \kleenecl{\Sigma}$ について、&lt;br /&gt;
次の２条件を満たす状態の列 $q_{0}, q_{1}, \dots, q_{n}$ を&lt;br /&gt;
'''記号列 $w$ による $q_{0}$ から $q_{n}$ への $\mathautomaton{A}$ の状態遷移'''と言う。&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{n}$ （ただし、各 $i=1, \dots, n$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）&lt;br /&gt;
# すべての $i\in \{1, \dots n\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$&lt;br /&gt;
&lt;br /&gt;
記号列 $w$ による $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
$q_{0}, q_{1}, \dots, q_{n}$ であって $q_{0} = q_{I}$, $q_{n}\in F$ を満たすものが存在するとき、&lt;br /&gt;
「有限オートマトン $\mathautomaton{A}$ が&lt;br /&gt;
'''記号列 $w$ を受理する'''」と言う。&lt;br /&gt;
&lt;br /&gt;
有限オートマトン $\mathautomaton{A}$ が受理する&lt;br /&gt;
記号列全体のことを '''有限オートマトン $\mathautomaton{A}$ の受理する言語'''&lt;br /&gt;
と言い、$L(\mathautomaton{A})$ と書く。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=等価な有限オートマトン |label=def-equivalence_finite_automaton }}&lt;br /&gt;
'''有限オートマトン $\mathautomaton{A}$ と 有限オートマトン $\mathautomaton{A'}$ が等価である'''とは，&lt;br /&gt;
$L(\mathautomaton{A})=L(\mathautomaton{A'})$&lt;br /&gt;
を満たすことである．&lt;br /&gt;
&lt;br /&gt;
==  有限オートマトンの例 ==&lt;br /&gt;
この節では有限オートマトンの例を紹介する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列全体を受理する有限オートマトン |label=ex-FA_all }}[[ファイル:Fig FA all.svg|サムネイル]]&lt;br /&gt;
\begin{align*}Q&amp;amp;=\mathsetextension{q_{I}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{I}), (q_{I}, 1, q_{I})}\\ F&amp;amp;= \mathsetextension{q_{I}}\end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。また、$\mathautomaton{A}$ は決定性有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
$0$ と $1$ からなる有限記号列をすべて受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ のみを受理する有限オートマトン |label=ex-0-1-only }}[[ファイル:Fig- 0-1-only.svg|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{1}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{2}), (q_{1}, 1, q_{2})}\\ F&amp;amp;=\mathsetextension{q_{1}} \end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は$0$ と $1$ のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$ をちょうど3個含む記号列全体を受理する有限オートマトン |label=ex-only-three-one}}[[ファイル:Fig FA only three one.svg|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}, q_{3}} \\ \Sigma&amp;amp;=\mathsetextension{0, 1} \\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{I}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{2}), (q_{2}, 0, q_{2}), (q_{2}, 1, q_{3}), (q_{3}, 0, q_{3})} \\ F&amp;amp;=\mathsetextension{q_{3}} \end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$ をちょうど3個含む記号列のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列全体を受理する有限オートマトン その1 |label=ex-one-less-than-three-1 }}[[ファイル:Fig FA one less than three 1.svg|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}, q_{3}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{I}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{2}), (q_{2}, 0, q_{2}), (q_{2}, 1, q_{3}), (q_{3}, 0, q_{3}), (q_{I}, \emptyword, q_{3}), (q_{1}, \emptyword, q_{3}), (q_{2}, \emptyword, q_{3})}\\ F&amp;amp;= \mathsetextension{q_{3}}\end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列全体を受理する有限オートマトン その2 |label=ex-one-less-than-three-2 }}[[ファイル:Fig FA one less than three 2.svg|サムネイル]]&lt;br /&gt;
\begin{align*} Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}, q_{3}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, \emptyword, q_{I}), (q_{I}, 0, q_{I}), (q_{I}, 0, q_{1}), (q_{I}, 0, q_{2}), (q_{I}, 0, q_{3}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{2}), (q_{2}, 0, q_{2}), (q_{2}, 1, q_{3})}\\ F&amp;amp;= \mathsetextension{q_{I},q_{3}}\end{align*}&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ も&lt;br /&gt;
$0$ と $1$ からなる有限記号列のうち、$1$ を高々3個含む記号列のみを受理する。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=自然数の二進表現全体を受理する有限オートマトン |label=ex-bi }}[[ファイル:Fig FA bi.svg|サムネイル]]&lt;br /&gt;
\begin{align*}Q&amp;amp;=\mathsetextension{q_{I}, q_{1}, q_{2}}\\ \Sigma&amp;amp;=\mathsetextension{0, 1}\\ \Delta&amp;amp;=\mathsetextension{(q_{I}, 0, q_{2}), (q_{I}, 1, q_{1}), (q_{1}, 0, q_{1}), (q_{1}, 1, q_{1})}\\ F&amp;amp;= \mathsetextension{q_{1}, q_{2}}\end{align*}&lt;br /&gt;
&lt;br /&gt;
とすると、$\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ は有限オートマトンである。&lt;br /&gt;
&lt;br /&gt;
この有限オートマトン $\mathautomaton{A}$ は&lt;br /&gt;
自然数の二進表現のみを受理する。&lt;br /&gt;
&lt;br /&gt;
==  正規言語、正規表現との関係 ==&lt;br /&gt;
この節では有限オートマトン、[[正規言語]]および[[正規表現]]の関係を述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=theorem |label=thm-Regular_Lang }}&lt;br /&gt;
言語 $L$ について以下は同値である．&lt;br /&gt;
# $L$ は正規言語である。&lt;br /&gt;
# $L=\interpret{\alpha}$ なる正規表現 $\alpha$ が存在する。&lt;br /&gt;
# $L$ を受理する有限オートマトンが存在する。&lt;br /&gt;
&lt;br /&gt;
この定理の証明は、項目[[正規言語#thm-regularandNFA|正規言語]]を参照せよ。&lt;br /&gt;
&lt;br /&gt;
==  反復補題（ポンピング補題） ==&lt;br /&gt;
この節では''反復補題（pumping lemma）''について述べる&amp;lt;ref name=&amp;quot;THE-BOOK&amp;quot;&amp;gt;Martin Aigner,Guenter M. Ziegler,Karl H. Hofmann, [&amp;quot;Proofs from THE BOOK&amp;quot;], Springer, 2004 によると、一般に定理が''補題''と呼ばれる条件は「広範囲の応用例を持つ」「一見して完璧に明らか」「証明も含めて美しい」の三条件を満たすことである。&amp;lt;/ref&amp;gt;。&lt;br /&gt;
反復補題は''ポンピング補題''や''ポンプ補題''と呼ばれることもある。&lt;br /&gt;
&lt;br /&gt;
反復補題は[[正規言語#not_regular_lang|ある記号列の集合が正規言語ではない証明]]などに&lt;br /&gt;
よく用いられる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=lemma |name=反復補題 |label=pumping_lemma }}&lt;br /&gt;
状態集合の大きさが $n$ の有限オートマトン $\mathautomaton{A}$ に記号列 $w$ が受理されるとする。&lt;br /&gt;
&lt;br /&gt;
$\left|w\right|&amp;gt;n$ であるとき、次の四条件を満たす記号列 $x$, $y$, $z$ が存在する。&lt;br /&gt;
# $w=xyz$。&lt;br /&gt;
# $\left|y\right|&amp;gt;0$。&lt;br /&gt;
# 任意の$m\in\mathnat$に対して、記号列 $xy^{m}z$ は$\mathautomaton{A}$ に受理される。&lt;br /&gt;
# $|xy|\leq n$。&lt;br /&gt;
&lt;br /&gt;
'''{{ref |type=lemma |label=pumping_lemma }}の証明'''&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ に $w$ が受理されるとする。&lt;br /&gt;
以下 $n:=\left|Q\right|$, $l:=\left|w\right|$, $l&amp;gt;n$ とする。&lt;br /&gt;
&lt;br /&gt;
有限オートマトン $\mathautomaton{A}$ に $w$ が受理されることから、&lt;br /&gt;
# $w=a_{1}a_{2} \dots a_{k}$ （ただし、各 $i=1, \dots, k$ について $a_{i}\in \Sigma\cup\{\emptyword\}$）。&lt;br /&gt;
# すべての $i\in \{1, \dots k\}$ について $(q_{i-1}, a_{i}, q_{i})\in \Delta$。&lt;br /&gt;
# $q_{0}=q_{I}$, $q_{k}\in F$。&lt;br /&gt;
&lt;br /&gt;
を満たす状態の列 $q_{0}, q_{1}, \dots, q_{k}$ と記号の列 $a_{1}, a_{2}, \dots, a_{k}$が存在する&lt;br /&gt;
（ただし、$k\geq l$）。&lt;br /&gt;
&lt;br /&gt;
$l&amp;gt;n$ から長さが $n$ の $w$ の[[形式言語#prefix_suffix|接頭語]] $w_{0}$ が存在する。&lt;br /&gt;
すると、$q_{0}, q_{1}, \dots, q_{k}$&lt;br /&gt;
の部分列であって、$w_{0}$ による $\mathautomaton{A}$ の状態遷移&lt;br /&gt;
$$q_{0}, q_{1}, \dots, q_{k_{0}}$$&lt;br /&gt;
が存在する（ただし $n\leq k_{0}\leq k$）。&lt;br /&gt;
&lt;br /&gt;
すると、鳩ノ巣原理より&lt;br /&gt;
# $(q_{i-1}, a_{i}, q_{i})$, $(q_{i+j-1}, a_{i+j}, q_{i+j})\in \Delta$&lt;br /&gt;
（ただし、$a_{i}\neq\emptyword$, $a_{i+j}\neq\emptyword$）&lt;br /&gt;
# $q_{i}=q_{i+j}$&lt;br /&gt;
&lt;br /&gt;
という条件を満たす自然数の組 $(i, j)$ （ただし $0\leq i\leq k_{0}$, $0&amp;lt; j\leq k_{0}$）が少なくとも１つ存在する。&lt;br /&gt;
以下その $i$, $j$ を固定する。&lt;br /&gt;
&lt;br /&gt;
\begin{align*} x&amp;amp;:=a_{1}a_{2}\ldots a_{i}, \\ y&amp;amp;:=a_{i+1}a_{i+2}\ldots a_{i+j}, \\ z&amp;amp;:=a_{i+j+1}a_{i+j+2}\ldots a_{k},\end{align*}&lt;br /&gt;
とすると、$w=xyz$ である。また、$a_{i+j}\neq\emptyword$ であるから $\left|y\right|&amp;gt;0$。&lt;br /&gt;
さらに、定義より $xy$ は $w_{0}$ の部分列であるから、$|xy|\leq n$。&lt;br /&gt;
&lt;br /&gt;
任意の$m\in\mathnat$に対して，記号列 $xy^{m}z$ が $\mathautomaton{A}$ に受理されることを示す。&lt;br /&gt;
&lt;br /&gt;
以下，記号列 $x$, $y$, $z$ による $\mathautomaton{A}$ の状態遷移をそれぞれ&lt;br /&gt;
\begin{align*}Q_{x}&amp;amp;=q_{0}, \dots, q_{i}, \\ Q_{y}&amp;amp;=q_{i+1}, \dots, q_{i+j}, \\ Q_{z}&amp;amp;=q_{i+j+1}, \dots, q_{k}, \end{align*}&lt;br /&gt;
と書くことにする。&lt;br /&gt;
&lt;br /&gt;
$m=0$ のときを示す。&lt;br /&gt;
&lt;br /&gt;
$q_{i}=q_{i+j}$ に注意すると、$(q_{i}, a_{i+j+1}, q_{i+j+1})\in \Delta$ である。&lt;br /&gt;
よって、&lt;br /&gt;
$$Q_{x}Q_{z}=q_{0}, \dots, q_{i}, q_{i+j+1}, \dots, q_{k}$$&lt;br /&gt;
は記号列 $xz$ による $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
$q_{0}=q_{I}$, $q_{k}\in F$ であるから、$xz$($=xy^{0}z$) は $\mathautomaton{A}$ に受理される。&lt;br /&gt;
&lt;br /&gt;
$m&amp;gt;0$ のときを示す。&lt;br /&gt;
&lt;br /&gt;
$q_{i}=q_{i+j}$ に注意すると、$(q_{i+j}, a_{i+j+1}, q_{i+1})\in \Delta$ である。&lt;br /&gt;
$$Q_{x}\overbrace{Q_{y}\dots Q_{y}}^{m\text{個}}Q_{z}=q_{0}, \dots, q_{i}, \overbrace{q_{i+1}, \dots, q_{i+j}, q_{i+1}, \dots, q_{i+j}}^{\text{$q_{i+1}, \dots, q_{i+j}$ の反復が $m$回}}, q_{i+j+1}, \dots, q_{k}$$&lt;br /&gt;
は記号列 $xy^{m}z$ による $\mathautomaton{A}$ の状態遷移である。&lt;br /&gt;
$q_{0}=q_{I}$, $q_{k}\in F$ であるから、$xy^{m}z$ は $\mathautomaton{A}$ に受理される。 &lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
===  反復補題の補足 ===&lt;br /&gt;
本稿の反復補題の $|xy|\leq n$ という条件を外したものも反復補題と呼ばれる。&lt;br /&gt;
反復補題の証明中において、$w$ の部分列を考えたことがそれ以外の条件の証明に対して非本質的であることに注意すると、&lt;br /&gt;
$|xy|\leq n$ という条件が余計であると考えられるからであろう。&lt;br /&gt;
&lt;br /&gt;
==  $\emptyword$ 動作なしの有限オートマトン ==&lt;br /&gt;
この項では&lt;br /&gt;
''$\emptyword$ 動作なしの有限オートマトン(finite automaton without $\emptyword$-transitions)''&lt;br /&gt;
について述べる．&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=$\emptyword$ 動作なしの有限オートマトン |label=def-finite_automaton_non_emptyword }}&lt;br /&gt;
有限オートマトン $\mathautomaton{A}=(Q, \Sigma, \Delta, q_{I}, F)$ が&lt;br /&gt;
次の条件を満たすとき、&lt;br /&gt;
''$\mathautomaton{A}$ は $\emptyword$ 動作なしの有限オートマトン(finite automaton without $\emptyword$-transitions)である''&lt;br /&gt;
と言う。&lt;br /&gt;
* $(q, a, q')\in \Delta$ に対して $a=\emptyword$ ならば $q=q'$&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=prop |label=prop-finite_automaton_non_emptyword }}&lt;br /&gt;
任意の有限オートマトンに対して、&lt;br /&gt;
それと等価な$\emptyword$ 動作なしの有限オートマトンが存在する。&lt;br /&gt;
&lt;br /&gt;
==== {{ref |type=prop |label=prop-finite_automaton_non_emptyword }} の証明 ====&lt;br /&gt;
{{begin   |proof | collapsible=1 }}&lt;br /&gt;
Now writing.......&lt;br /&gt;
{{end     |proof }}&lt;br /&gt;
&lt;br /&gt;
==  参考文献 ==&lt;br /&gt;
# 新屋 良磨、オートマトン理論再考、コンピュータ ソフトウェア、2017、34 巻、3 号、p. 3_3-3_35、公開日 2017/09/25、Print ISSN 0289-6540、[https://doi.org/10.11309/jssst.34.3_3]、[https://www.jstage.jst.go.jp/article/jssst/34/3/34_3_3/_article/-char/ja]&lt;br /&gt;
# 五十嵐喜英他、『[数理情報科学シリーズ ２４ オートマトンと形式言語の基礎]』、牧野書店、2011&lt;br /&gt;
# Martin Aigner,Guenter M. Ziegler,Karl H. Hofmann, [&amp;quot;Proofs from THE BOOK&amp;quot;], Springer, 2004&lt;br /&gt;
&lt;br /&gt;
====== 脚注 ======&lt;br /&gt;
&amp;lt;references /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 関連項目  ==&lt;br /&gt;
* [[形式言語]]&lt;br /&gt;
* [[正規表現]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
|+ Chomsky階層&lt;br /&gt;
! 文法のタイプ&lt;br /&gt;
! 言語のクラス&lt;br /&gt;
! 計算モデル&lt;br /&gt;
|-&lt;br /&gt;
! タイプ0&lt;br /&gt;
| [[句構造言語]]&lt;br /&gt;
| [[Turingマシン]]&lt;br /&gt;
|-&lt;br /&gt;
! タイプ1&lt;br /&gt;
| [[文脈依存言語]]&lt;br /&gt;
| [[線形有界オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ2&lt;br /&gt;
| [[文脈自由言語]]&lt;br /&gt;
| [[プッシュダウン・オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ3&lt;br /&gt;
| [[正規言語]]&lt;br /&gt;
| [[有限オートマトン]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E6%96%87%E8%84%88%E8%87%AA%E7%94%B1%E8%A8%80%E8%AA%9E&amp;diff=3865</id>
		<title>文脈自由言語</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E6%96%87%E8%84%88%E8%87%AA%E7%94%B1%E8%A8%80%E8%AA%9E&amp;diff=3865"/>
		<updated>2021-03-16T00:53:14Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: Change some links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:形式言語理論|ブンミャクジユウゲンゴ]]&lt;br /&gt;
{{begin |preamble}}&lt;br /&gt;
&amp;lt;!-- 参考文献 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 定理環境 --&amp;gt;&lt;br /&gt;
{{newtheorem |type=theorem |display=定理}}&lt;br /&gt;
{{newtheorem |type=lemma |display=補題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=definition |display=定義 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=prop |display=命題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=example |display=例 |family=theorem }}&lt;br /&gt;
&amp;lt;!-- MathJax commands --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\newcommand{\mathsetextension}[1]{%&lt;br /&gt;
\left\{ #1 \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathsetintension}[2]{%&lt;br /&gt;
\left\{ #1 \left| #2 \right.\right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathof}[2]{%&lt;br /&gt;
\mathop{#1}\left(#2\right)%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathderiv}{\mathrel{\mathop{\Rightarrow}^{*}}}&lt;br /&gt;
\newcommand{\mathgen}{\rightsquigarrow}&lt;br /&gt;
\newcommand{\mathgenfun}[1]{\mathbf{#1}}&lt;br /&gt;
\newcommand{\mirrorim}[1]{\overleftarrow{#1}}&lt;br /&gt;
\newcommand{\emptyword}{\varepsilon}&lt;br /&gt;
\newcommand{\kleenecl}[1]{{#1}^{*}}&lt;br /&gt;
\newcommand{\interpret}[1]{[\![#1]\!]}&lt;br /&gt;
\newcommand{\mathautomaton}[1]{\mathcal{#1}}&lt;br /&gt;
\newcommand{\mathnat}{\mathbb{N}}&lt;br /&gt;
\newcommand{\qed}{\blacksquare}&lt;br /&gt;
\newcommand{\mathrelbar}{\mathrel{|}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
{{end |preamble}}&lt;br /&gt;
'''文脈自由言語（context-free language）'''とは文脈自由文法によって生成される形式言語である。&lt;br /&gt;
&lt;br /&gt;
文脈自由文法は句構造文法の一種であるから、&lt;br /&gt;
文脈自由言語は[[句構造言語]]の一種である。&lt;br /&gt;
また、文脈自由文法は文脈依存文法の一種であるから、&lt;br /&gt;
文脈自由言語は[[文脈依存言語]]の一種である。&lt;br /&gt;
&lt;br /&gt;
以下、項目[[形式言語]]において定められている言語上の演算などについては特に断らず用いる。&lt;br /&gt;
&lt;br /&gt;
==  文脈自由言語の導入 ==&lt;br /&gt;
この節では文脈自由言語を定義する。&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=definition |name=文脈自由文法 |label=def-context-free_grammar }}&lt;br /&gt;
'''文脈自由文法（context-free grammar）'''とは&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# $\Sigma$ と互いに素な'''変数記号（variable）'''の有限集合 $V$&lt;br /&gt;
# '''生成規則（production rule）'''と呼ばれる有限集合 $R \subseteq V \times \kleenecl{(\Sigma \cup V)}$&lt;br /&gt;
# '''開始記号(start symbol)'''または'''初期記号'''と呼ばれる $S\in V$&lt;br /&gt;
&lt;br /&gt;
の４つ組$(V, \Sigma, R, S)$である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
これは、[[句構造言語#句構造文法 | 句構造文法]]の一種である。また、[[文脈依存言語#文脈依存文法 | 文脈依存文法]]の一種である。&lt;br /&gt;
&lt;br /&gt;
[[句構造言語]]のときと同様、$\Sigma$ の元を'''終端記号(terminal)'''、$V$ の元を'''非終端記号(non-terminal)'''と呼ぶことも多い。&lt;br /&gt;
&lt;br /&gt;
以下では、元$(A, \alpha)\in R$ のことを$A\mathgen\alpha$と書く。&lt;br /&gt;
&lt;br /&gt;
[[句構造言語#def-derivation | 導出]]、[[句構造言語#def-phrase_structure_lang | 生成される言語]]などは&lt;br /&gt;
句構造言語と同様に定義される。&lt;br /&gt;
&lt;br /&gt;
'''文脈自由言語'''とは何らかの文脈自由文法によって生成される言語のことを言う。&lt;br /&gt;
&lt;br /&gt;
==  文脈自由言語の例 ==&lt;br /&gt;
この節では文脈自由言語の例を紹介する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=Dyck言語 |label=ex-Dyck_lang }}&lt;br /&gt;
$V=\left\{ S \right\}$, &lt;br /&gt;
$\Sigma=\left\{ [, ] \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen\varepsilon, S\mathgen [S]S \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は文脈自由文法である。&lt;br /&gt;
この文脈自由文法によって生成される言語 $L(G)$ を'''Dyck言語'''と呼ぶ&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dyck言語の元となる記号列とその記号列を生成する導出の列をいくつかあげる。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{gather*}&lt;br /&gt;
 S \Rightarrow \varepsilon \\&lt;br /&gt;
 S \Rightarrow [S]S \Rightarrow [\varepsilon]S \Rightarrow [\varepsilon]\varepsilon \equiv [] \\&lt;br /&gt;
 S \Rightarrow [S]S \Rightarrow [[]]S \Rightarrow [[]]\varepsilon \equiv [[]] \\&lt;br /&gt;
 S \Rightarrow [S]S \Rightarrow [\varepsilon]S \Rightarrow [\varepsilon][S]S \mathderiv [\varepsilon][\varepsilon]\varepsilon \equiv [][] \\&lt;br /&gt;
 S \Rightarrow [S]S \Rightarrow [[S]S]S \Rightarrow [[[S]S]S]S \mathderiv [[[\varepsilon]\varepsilon]\varepsilon]\varepsilon \equiv [[[]]] \\&lt;br /&gt;
 S \Rightarrow [S]S \Rightarrow [[S]S]S \Rightarrow [[S]S][S]S \mathderiv [[\varepsilon]\varepsilon][\varepsilon]\varepsilon \equiv [[]][] \\&lt;br /&gt;
 S \Rightarrow [S]S \Rightarrow [S][S]S \Rightarrow [S][[S]S]S \mathderiv [\varepsilon][[\varepsilon]\varepsilon]\varepsilon \equiv [][[]] \\&lt;br /&gt;
S \Rightarrow [S]S \Rightarrow [S][S]S \Rightarrow [S][S][S]S \mathderiv [\varepsilon][\varepsilon][\varepsilon]\varepsilon \equiv [][][] &lt;br /&gt;
\end{gather*}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=二進表現された自然数同士の四則演算の式全体 |label=ex-arithmetic_form_lang }}&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{align*}&lt;br /&gt;
 V&amp;amp;=\left\{ S, B, B', M, P \right\}, \\&lt;br /&gt;
 \Sigma&amp;amp;=\left\{ 0, 1, +, -, \times, \div, (, ) \right\}, \\&lt;br /&gt;
 R&amp;amp;=\{ S \mathgen M, S \mathgen S + M, S \mathgen S - M,  M \mathgen P, M \mathgen M \times P, M \mathgen M \div P,  P \mathgen B, P \mathgen ( S ),  B \mathgen 0, B \mathgen 1, B \mathgen 1B', B' \mathgen 0, B' \mathgen 1, B' \mathgen 0B', B' \mathgen 1B' \}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は文脈自由文法である。&lt;br /&gt;
この文法によって生成される言語は二進表現された自然数同士の四則演算の式全体である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
二進表現された自然数同士の四則演算の式の導出の例をあげる。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{align*}&lt;br /&gt;
 S &amp;amp;\Rightarrow M \\&lt;br /&gt;
 &amp;amp;\Rightarrow M \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow M \times P \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow P \times P \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (S) \times P \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (S - M) \times P \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (S + M - M) \times P \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (M + M - M) \times P \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (P + M - M) \times P \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (B + M - M) \times P \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (0 + M - M) \times P \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (0 + P - M) \times P \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (0 + B - M) \times P \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (0 + 1B' - M) \times P \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (0 + 10 - M) \times P \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (0 + 10 - P) \times P \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (0 + 10 - B) \times P \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (0 + 10 - 1) \times P \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (0 + 10 - 1) \times B \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (0 + 10 - 1) \times 1B' \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (0 + 10 - 1) \times 10B' \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (0 + 10 - 1) \times 101 \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (0 + 10 - 1) \times 101 \div B \\&lt;br /&gt;
 &amp;amp;\Rightarrow (0 + 10 - 1) \times 101 \div 1 \\&lt;br /&gt;
\end{align*}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=(命題変数が有限の)命題論理の論理式全体 |label=ex-prop_form_lang }}&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{align*}&lt;br /&gt;
 V&amp;amp;=\left\{ S \right\}, \\&lt;br /&gt;
 \Sigma&amp;amp;=\left\{ p_1, \ldots p_n, \top, \bot, \lnot, \land, \lor, \to, (, )\right\}, \\&lt;br /&gt;
 R&amp;amp;=\{ S\mathgen p_1, \ldots,  S\mathgen p_n, S\mathgen \top, S\mathgen \bot, &lt;br /&gt;
 S\mathgen(\lnot S), S\mathgen(S\land S), S\mathgen(S\lor S), S\mathgen({S\to S}) \}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は文脈自由文法である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
この文脈自由文法によって生成される言語 $L(G)$ は[[数理論理学の基礎・命題論理]]において定義されている命題論理の論理式全体である（ただし、命題変数の集合の濃度を有限としたときに限る）。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=$0^{n}1^{n}$ という形をした記号列全体 |label=ex-counter_example_reg_lang_n }}&lt;br /&gt;
$V=\left\{ S \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen\emptyword, S\mathgen 0S1 \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は文脈自由文法である。&lt;br /&gt;
この文脈自由文法によって生成される言語 $L(G)$ は $0^{n}1^{n}$ （ただし、$n\in\mathnat$）という形をした記号列全体になっている。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$0^{n}1^{n}$ という形をした記号列の導出の例をいくつかあげる。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{gather*}&lt;br /&gt;
 S \Rightarrow \varepsilon \\&lt;br /&gt;
 S \Rightarrow 0S1 \Rightarrow 0\emptyword 1  \equiv 01 \\&lt;br /&gt;
 S \Rightarrow 0S1 \Rightarrow 00S11 \Rightarrow 00\emptyword 11  \equiv 0011 \\&lt;br /&gt;
 S \Rightarrow 0S1 \Rightarrow 00S11 \Rightarrow 000S111 \Rightarrow 000\emptyword 111  \equiv 000111 \\&lt;br /&gt;
 S \Rightarrow 0S1 \Rightarrow 00S11 \Rightarrow 000S111 \Rightarrow 0000S1111 \Rightarrow 0000\emptyword 1111  \equiv 00001111 \\&lt;br /&gt;
S \Rightarrow 0S1 \Rightarrow 00S11 \Rightarrow 000S111 \Rightarrow 0000S1111 \Rightarrow 00000S11111 \Rightarrow 00000\emptyword 11111  \equiv 0000011111 &lt;br /&gt;
\end{gather*}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=$w\mirrorim{w}$ という形をした記号列全体 |label=ex-counter_example_reg_lang_mirror }}&lt;br /&gt;
$V=\left\{ S \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen\emptyword, S\mathgen 0S0, S\mathgen 1S1 \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は文脈自由文法である。&lt;br /&gt;
この文脈自由文法によって生成される言語 $L(G)$ は $w\mirrorim{w}$ （ただし、$w\in \kleenecl{\Sigma}$）という形をした記号列全体になっている。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$w\mirrorim{w}$ という形をした記号列の導出の例をいくつかあげる。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{gather*}&lt;br /&gt;
 S \Rightarrow \varepsilon \\&lt;br /&gt;
 S \Rightarrow 0S0 \Rightarrow 0\emptyword 0 \equiv 00 \\&lt;br /&gt;
 S \Rightarrow 1S1 \Rightarrow 1\emptyword 1 \equiv 11 \\&lt;br /&gt;
 S \Rightarrow 0S0 \Rightarrow 00S00 \Rightarrow 00\emptyword 00  \equiv 0000 \\&lt;br /&gt;
 S \Rightarrow 0S0 \Rightarrow 01S10 \Rightarrow 01\emptyword 10  \equiv 0110 \\&lt;br /&gt;
 S \Rightarrow 1S1 \Rightarrow 10S01 \Rightarrow 10\emptyword 01  \equiv 1001 \\&lt;br /&gt;
 S \Rightarrow 1S1 \Rightarrow 11S11 \Rightarrow 11\emptyword 11 \equiv 1111 &lt;br /&gt;
\end{gather*}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Backus-Naur記法 ==&lt;br /&gt;
この節では'''[[Backus-Naur記法]](Backus-Naur form)'''について述べる。&lt;br /&gt;
&lt;br /&gt;
=== Backus-Naur記法の導入 ===&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{align*}&lt;br /&gt;
 V&amp;amp;=\left\{ S, A_{1}, \dots A_{n} \right\},   \\&lt;br /&gt;
 R&amp;amp;=\{ S\mathgen \alpha_{00}, \dots S\mathgen \alpha_{0m_{0}},  \\&lt;br /&gt;
 &amp;amp;\phantom{=\{} A_{1}\mathgen \alpha_{10}, \dots A_{1}\mathgen \alpha_{1m_{1}},  \\&lt;br /&gt;
 &amp;amp;\phantom{=\{ A_{1}\mathgen \alpha_{10}, } \vdots  \\&lt;br /&gt;
 &amp;amp;\phantom{=\{} A_{n}\mathgen \alpha_{n0}, \dots A_{n}\mathgen \alpha_{nm_{n}} \}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
という、文脈自由文法 $G=(V, \Sigma, R, S)$ について、&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{align*}&lt;br /&gt;
 S &amp;amp;::= \alpha_{00} \mathrelbar \dots \mathrelbar \alpha_{0m_{0}} \\&lt;br /&gt;
 A_{1} &amp;amp;::= \alpha_{10} \mathrelbar \dots \mathrelbar \alpha_{1m_{1}} \\&lt;br /&gt;
 \vdots \\&lt;br /&gt;
 A_{n} &amp;amp;::= \alpha_{n0} \mathrelbar \dots \mathrelbar \alpha_{nm_{n}} &lt;br /&gt;
\end{align*}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
という表記を $G$ の'''[[Backus-Naur記法]](Backus-Naur form)'''という。&lt;br /&gt;
&lt;br /&gt;
この記法は、論理式の定義やプログラミング言語の定義などによく使われる。&lt;br /&gt;
&lt;br /&gt;
=== BNFの例 ===&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=二進表現された自然数同士の四則演算の式全体 |label=ex-arithmetic_form_lang_BNF }}&lt;br /&gt;
&lt;br /&gt;
[[文脈自由言語#ex-arithmetic_form_lang | 二進表現された自然数同士の四則演算の式全体]]を表すBNF記法は次のとおりである。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{align*}&lt;br /&gt;
 S  &amp;amp;::= M \mathrelbar S + M \mathrelbar S - M \\&lt;br /&gt;
 M  &amp;amp;::= P \mathrelbar M \times P \mathrelbar M \div P \\&lt;br /&gt;
 P  &amp;amp;::= B \mathrelbar ( S ) \\&lt;br /&gt;
 B  &amp;amp;::= 0 \mathrelbar 1 \mathrelbar 1B' \\&lt;br /&gt;
 B' &amp;amp;::= 0 \mathrelbar 1 \mathrelbar 0B'\mathrelbar 1B' &lt;br /&gt;
\end{align*}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- == プッシュダウンオートマトンとの関係 == --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Now writing...... --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  参考文献 ==&lt;br /&gt;
# 新屋 良磨、オートマトン理論再考、コンピュータ ソフトウェア、2017、34 巻、3 号、p. 3_3-3_35、公開日 2017/09/25、Print ISSN 0289-6540、https://doi.org/10.11309/jssst.34.3_3、https://www.jstage.jst.go.jp/article/jssst/34/3/34_3_3/_article/-char/ja&lt;br /&gt;
# 五十嵐喜英他、『数理情報科学シリーズ ２４ オートマトンと形式言語の基礎』、牧野書店、2011&lt;br /&gt;
&lt;br /&gt;
== 関連項目 ==&lt;br /&gt;
* [[形式言語]]&lt;br /&gt;
* [[Backus-Naur記法]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
|+ Chomsky階層&lt;br /&gt;
! 文法のタイプ&lt;br /&gt;
! 言語のクラス&lt;br /&gt;
! 計算モデル&lt;br /&gt;
|-&lt;br /&gt;
! タイプ0&lt;br /&gt;
| [[句構造言語]]&lt;br /&gt;
| [[Turingマシン]]&lt;br /&gt;
|-&lt;br /&gt;
! タイプ1&lt;br /&gt;
| [[文脈依存言語]]&lt;br /&gt;
| [[線形有界オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ2&lt;br /&gt;
| [[文脈自由言語]]&lt;br /&gt;
| [[プッシュダウン・オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ3&lt;br /&gt;
| [[正規言語]]&lt;br /&gt;
| [[有限オートマトン]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E6%95%B0%E7%90%86%E8%AB%96%E7%90%86%E5%AD%A6%E3%81%AE%E5%9F%BA%E7%A4%8E%E3%80%81%E5%91%BD%E9%A1%8C%E8%AB%96%E7%90%86&amp;diff=3864</id>
		<title>数理論理学の基礎、命題論理</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E6%95%B0%E7%90%86%E8%AB%96%E7%90%86%E5%AD%A6%E3%81%AE%E5%9F%BA%E7%A4%8E%E3%80%81%E5%91%BD%E9%A1%8C%E8%AB%96%E7%90%86&amp;diff=3864"/>
		<updated>2021-03-16T00:46:01Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: Redirect to 数理論理学の基礎・命題論理&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[数理論理学の基礎・命題論理]]&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E8%87%AA%E7%84%B6%E6%95%B0&amp;diff=3602</id>
		<title>自然数</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E8%87%AA%E7%84%B6%E6%95%B0&amp;diff=3602"/>
		<updated>2021-03-06T00:06:47Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: Q-rad (トーク) による編集を Alwe による直前の版へ差し戻しました&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:数の集合|シゼンスウ]]&lt;br /&gt;
{{begin |preamble}}&lt;br /&gt;
&amp;lt;!-- 参考文献 --&amp;gt;&lt;br /&gt;
{{#scite: SimpsonYokoyama13&lt;br /&gt;
 |type=journal&lt;br /&gt;
 |author=S. G. Simpson, and K. Yokoyama&lt;br /&gt;
 |year=2013&lt;br /&gt;
 |title=Reverse mathematics and Peano categoricity&lt;br /&gt;
 |journal=Annals of Pure and Applied Logic&lt;br /&gt;
 |volume=164&lt;br /&gt;
 |number=3&lt;br /&gt;
 |pages=284–293&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;!-- 定理環境 --&amp;gt;&lt;br /&gt;
{{newtheorem |type=theorem |display=定理}}&lt;br /&gt;
{{newtheorem |type=lemma |display=補題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=definition |display=定義 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=prop |display=命題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=example |display=例 |family=theorem }}&lt;br /&gt;
&amp;lt;!-- MathJax commands --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\newcommand{\mathsetextension}[1]{%&lt;br /&gt;
\left\{ #1 \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathsetintension}[2]{%&lt;br /&gt;
\left\{ #1 \left| #2 \right.\right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathof}[2]{%&lt;br /&gt;
\mathop{#1}\left(#2\right)%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathnat}{\mathbb{N}}&lt;br /&gt;
\newcommand{\mathreal}{\mathbb{R}}&lt;br /&gt;
\newcommand{\qed}{\blacksquare}&lt;br /&gt;
\newcommand{\mathrelbar}{\mathrel{|}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
{{end |preamble}}&lt;br /&gt;
'''自然数'''(natural number)とは、素朴には “ $0, 1, 2, \ldots$ ” のように数えられる「数」のことである。&lt;br /&gt;
現代数学においてはPeanoの公理を満たす構造として自然数全体の集合 $\mathbb{N}$ を定義し、&lt;br /&gt;
その元のことを自然数と呼ぶ。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Peanoの公理 ==&lt;br /&gt;
この節では自然数全体の集合の定義である'''Peanoの公理'''について述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=Peanoの公理 |label=def-Peano }}&lt;br /&gt;
空でない集合 $\mathbb{N}$ 、単射写像 $s\colon \mathbb{N} \to \mathbb{N}$ と $\mathbb{N}$ の元 $0$ が&lt;br /&gt;
次の1、2を満たすとき $\left(\mathbb{N}, \mathop{s}, 0 \right)$ を'''自然数全体の集合'''や&lt;br /&gt;
'''自然数の集合'''と呼ぶ:&lt;br /&gt;
# $0 \notin \mathof{s}{\mathbb{N}}$;&lt;br /&gt;
# 任意の$X \subseteq \mathbb{N}$ について、$0 \in X $ かつ $ \mathof{s}{X} \subseteq X$ ならば、$X=\mathbb{N}$。&lt;br /&gt;
&lt;br /&gt;
$\mathbb{N}$ が自然数全体の集合であるとき、$\mathbb{N}$の元は'''自然数'''と呼ばれる。&lt;br /&gt;
&lt;br /&gt;
==  Peanoの公理を満たす具体例 ==&lt;br /&gt;
この節ではPeanoの公理を満たす例をみる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=集合系による |label=ex-N_with_set }}&lt;br /&gt;
以下のように帰納的に定義される最小の集合系 $\mathbf{N}$ はPeanoの公理を満たす構造と考えることができる。&lt;br /&gt;
# 空集合 $\emptyset$ は $\mathbf{N}$ の元である。&lt;br /&gt;
# $n \in \mathbf{N}$ であるとき, $n \cup \left\{ n \right\} \in \mathbf{N}$。&lt;br /&gt;
&lt;br /&gt;
具体的には $\mathbb{N}=\mathbf{N}$, $0=\emptyset$, $\mathop{s}(n)=n \cup \mathsetextension{n}$ とすればよい。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=記号列による |label=ex-N_with_symbols }}&lt;br /&gt;
記号の集合 $\mathsetextension{z, s}$ 上の記号列であって、&lt;br /&gt;
以下のように帰納的に定義される最小の記号列の集合 $\mathbf{N}$ は&lt;br /&gt;
Peanoの公理を満たす構造と考えることができる。&lt;br /&gt;
# 記号列 $z$ は $\mathbf{N}$ の元である。&lt;br /&gt;
# 記号列 $\mathbf{n}$ が $\mathbf{N}$ の元であるとき、文字列 $s\mathbf{n}$ は $\mathbf{N}$ の元である。&lt;br /&gt;
&lt;br /&gt;
具体的には $\mathbb{N}=\mathbf{N}$, $0=z$, $\mathop{s}(\mathbf{n})=s\mathbf{n}$ とすればよい。&lt;br /&gt;
&lt;br /&gt;
==  自然数全体の一意性 ==&lt;br /&gt;
自然数の集合は同型を除いて一意に定まる。&lt;br /&gt;
&lt;br /&gt;
==  $0$ は自然数か？ ==&lt;br /&gt;
自然数の集合の定義には $0$ を自然数に含む流儀と $0$ を自然数に含まない流儀がある。&lt;br /&gt;
この節ではそのことについて述べる。&lt;br /&gt;
&lt;br /&gt;
===  Mathpediaでのスタンス ===&lt;br /&gt;
Mathpediaにおいては「$0$ を自然数とするかどうか」について、&lt;br /&gt;
各分野ごとの習慣やそれぞれで行っている議論における利便性に応じて、&lt;br /&gt;
適宜筆者の判断に委ねることとしている。&lt;br /&gt;
そのためこの記事以外のMathpediaの記事においては、&lt;br /&gt;
'''$0$ を自然数に含まない流儀が採用されることがある'''。&lt;br /&gt;
個別の記事を読む際には注意されたい。&lt;br /&gt;
&lt;br /&gt;
====  $0$ を自然数に含まない流儀の場合のPeano の公理 ====&lt;br /&gt;
$0$ を自然数に含まない流儀の場合の自然数の集合は{{ref |type=definition |label=def-Peano }}の&lt;br /&gt;
$0$ をすべて $1$ に書き換えれば良い。&lt;br /&gt;
&lt;br /&gt;
===  この記事でのスタンス ===&lt;br /&gt;
&lt;br /&gt;
この記事においては、次の観点から $0$ を含む流儀を採用した。&lt;br /&gt;
* Peano の公理の具体例を構成する際、$0$ を含まない流儀を採用すると不自然になる。&lt;br /&gt;
* 自然数の加法に単位元がほしい。&lt;br /&gt;
* 集合論などでは $0$ を含む流儀が普通である。&lt;br /&gt;
&lt;br /&gt;
===  落ち穂拾い ===&lt;br /&gt;
====  ISO 80000-2:2009 ====&lt;br /&gt;
数学記号について定義している国際規格であるISO 80000-2:2009 によると、&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
! Item No.&lt;br /&gt;
! Sign, Symbol, expression&lt;br /&gt;
! Meaning, verbal equivalent&lt;br /&gt;
!  Remarks and examples&lt;br /&gt;
|-&lt;br /&gt;
| 2-6.1&lt;br /&gt;
| $\mathbf{N}$&lt;br /&gt;
| the set of natural numbers, &amp;lt;br /&amp;gt; the set of positive integers and zero&lt;br /&gt;
|$\mathbf{N}=\mathsetextension{0, 1, 2, 3, \ldots}$ &amp;lt;br /&amp;gt; $\mathbf{N^{*}}=\mathsetextension{1, 2, 3, \ldots}$  &amp;lt;br /&amp;gt; Other restrictions can be indicate in an obvious way, as shown below. &amp;lt;br /&amp;gt; $\mathbf{N_{\lt 5}}=\mathsetintension{ n \in \mathbf{N} }{n \lt 5}$ &amp;lt;br /&amp;gt; The symbols $\mathrm{I\! N}$ and $\mathbb{N}$ are also used.&lt;br /&gt;
|}&lt;br /&gt;
と定義されている。日本語訳は以下のようになる。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
! 番号&lt;br /&gt;
! 記号、記号列&lt;br /&gt;
! 意味&lt;br /&gt;
! 注意および例&lt;br /&gt;
|-&lt;br /&gt;
| 2-6.1&lt;br /&gt;
| $\mathbf{N}$&lt;br /&gt;
| 自然数の集合、&amp;lt;br /&amp;gt; 正の整数およびゼロからなる集合&lt;br /&gt;
|$\mathbf{N}=\mathsetextension{0, 1, 2, 3, \ldots}$ &amp;lt;br /&amp;gt; $\mathbf{N^{*}}=\mathbf{N^{*}}=\mathsetextension{1, 2, 3, \ldots}$  &amp;lt;br /&amp;gt; 他の制限については以下のように表記できる。 &amp;lt;br /&amp;gt; $\mathbf{N_{\lt 5}}=\mathsetintension{ n \in \mathbf{N} }{n\lt 5}$ &amp;lt;br /&amp;gt; 記号$\mathrm{I\! N}$や$\mathbb{N}$もまた使われる。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==  Peano範疇性に対する逆数学 ==&lt;br /&gt;
&lt;br /&gt;
Peanoシステムの範疇性定理については良く知られた事実であるが、この範疇性に対する逆数学として以下のような結果が知られている。&lt;br /&gt;
&lt;br /&gt;
====  定義（Peanoシステム） ====&lt;br /&gt;
$ A\subseteq\mathbb{N},i\in A,f\colon A\to A$ の組 $\langle A,i,f\rangle$ を'''システム''' (system) という。システム $\langle A,i,f\rangle$ が'''Peanoシステム''' (Peano system) であるとは、以下の条件を満たすことである。&lt;br /&gt;
# $i\notin\mathrm{rng}(f)$ である。&lt;br /&gt;
# $f$ は単射である。&lt;br /&gt;
# 任意の $X\subseteq A$ に対して、$i\in X$ かつ、任意の $x\in\mathbb{N}$ に対して $x\in X$ ならば $f(x)\in X$ であると仮定する。このとき $X=A$ である。&lt;br /&gt;
&lt;br /&gt;
また $\langle \mathbb{N},0,\mathrm{suc}\rangle$ を標準的なPeanoシステムという。ここで $\mathrm{suc}(x):=x+1$ である。&lt;br /&gt;
&lt;br /&gt;
====  定義（同型） ====&lt;br /&gt;
Peanoシステム $\langle A,i,f\rangle$ が $\langle \mathbb{N},0,\mathrm{suc}\rangle$ に'''同型''' (isomorphic) であるとは全単射 $\sigma\colon A\to\mathbb{N}$ で以下を満たすようなものが存在することである。&lt;br /&gt;
# $\sigma(i)=0$ である。&lt;br /&gt;
# 任意の $x\in A$ に対し $\sigma(f(x))=\mathrm{suc}(\sigma(x))$ である。&lt;br /&gt;
&lt;br /&gt;
またPeanoシステム $\langle A,i,f\rangle$ が $\langle \mathbb{N},0,\mathrm{suc}\rangle$ に'''ほとんど同型''' (almost isomorphic) であるとは、任意の $x\in A$ に対して、ある $n\in\mathbb{N}$ が存在し、$a=f^n(x)$ が成り立つことである。&lt;br /&gt;
&lt;br /&gt;
====  定理（Simpson–横山[[CiteRef::SimpsonYokoyama13]]） ====&lt;br /&gt;
$\mathsf{RCA}^*_0$ 上で以下は同値である。&lt;br /&gt;
# $\mathsf{RCA}_0$ 。&lt;br /&gt;
# 任意の $\langle\mathbb{N},0,\mathrm{suc}\rangle$ にほとんど同型なPeanoシステムは $\langle\mathbb{N},0,\mathrm{suc}\rangle$ に同型である。&lt;br /&gt;
# 任意の無限集合 $C\subseteq \mathbb{N}$ に対し、単射 $f\colon\mathbb{N}\to C$ が存在する。&lt;br /&gt;
# 任意の無限集合 $C\subseteq \mathbb{N}$ 、任意の $n\in\mathbb{N}$ に対し $C$ の部分集合で濃度が $n$ となるものが存在する。&lt;br /&gt;
&lt;br /&gt;
また$\mathsf{RCA}^*_0$ 上で以下は同値である。&lt;br /&gt;
# $\mathsf{WKL}^*_0$ 。&lt;br /&gt;
# 任意のPeano構造は $\langle\mathbb{N},0,\mathrm{suc}\rangle$ にほとんど同型である。&lt;br /&gt;
&lt;br /&gt;
同様に $\mathsf{RCA}^*_0$ 上で以下は同値である。&lt;br /&gt;
# $\mathsf{WKL}_0$ 。&lt;br /&gt;
# 任意のPeano構造は $\langle\mathbb{N},0,\mathrm{suc}\rangle$ に同型である。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- 出典 --&amp;gt;&lt;br /&gt;
{{#referencelist:&lt;br /&gt;
 |listtype=ul&lt;br /&gt;
 |browselinks=false&lt;br /&gt;
 |columns=2&lt;br /&gt;
 |header=出典&lt;br /&gt;
}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  関連項目 ==&lt;br /&gt;
* [[順序数]]&lt;br /&gt;
* [[整数]]&lt;br /&gt;
* [[有理数]]&lt;br /&gt;
* [[p進数]]&lt;br /&gt;
* [[実数]]&lt;br /&gt;
* [[複素数]]&lt;br /&gt;
* [[四元数]]&lt;br /&gt;
* [[集合の基本的な用語、集合の演算]]&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E8%87%AA%E7%84%B6%E6%95%B0&amp;diff=3544</id>
		<title>自然数</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E8%87%AA%E7%84%B6%E6%95%B0&amp;diff=3544"/>
		<updated>2021-03-03T15:19:59Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: Change to media wiki style&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:数の集合|シゼンスウ]]&lt;br /&gt;
{{begin |preamble}}&lt;br /&gt;
&amp;lt;!-- 参考文献 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 定理環境 --&amp;gt;&lt;br /&gt;
{{newtheorem |type=theorem |display=定理}}&lt;br /&gt;
{{newtheorem |type=lemma |display=補題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=definition |display=定義 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=prop |display=命題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=example |display=例 |family=theorem }}&lt;br /&gt;
&amp;lt;!-- MathJax commands --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\newcommand{\mathsetextension}[1]{%&lt;br /&gt;
\left\{ #1 \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathsetintension}[2]{%&lt;br /&gt;
\left\{ #1 \left| #2 \right.\right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathof}[2]{%&lt;br /&gt;
\mathop{#1}\left(#2\right)%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathnat}{\mathbb{N}}&lt;br /&gt;
\newcommand{\mathreal}{\mathbb{R}}&lt;br /&gt;
\newcommand{\qed}{\blacksquare}&lt;br /&gt;
\newcommand{\mathrelbar}{\mathrel{|}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
{{end |preamble}}&lt;br /&gt;
'''自然数'''(natural number)とは、素朴には “ $0, 1, 2, \ldots$ ” のように数えられる「数」のことである。&lt;br /&gt;
現代数学においてはPeanoの公理を満たす構造として自然数全体の集合 $\mathbb{N}$ を定義し、&lt;br /&gt;
その元のことを自然数と呼ぶ。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  Peanoの公理 ==&lt;br /&gt;
この節では自然数全体の集合の定義である'''Peanoの公理'''について述べる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=definition |name=Peanoの公理 |label=def-Peano }}&lt;br /&gt;
空でない集合 $\mathbb{N}$ 、単射写像 $s\colon \mathbb{N} \to \mathbb{N}$ と $\mathbb{N}$ の元 $0$ が&lt;br /&gt;
次の1、2を満たすとき $\left(\mathbb{N}, \mathop{s}, 0 \right)$ を'''自然数全体の集合'''や&lt;br /&gt;
'''自然数の集合'''と呼ぶ:&lt;br /&gt;
# $0 \notin \mathof{s}{\mathbb{N}}$;&lt;br /&gt;
# 任意の$X \subseteq \mathbb{N}$ について、$0 \in X $ かつ $ \mathof{s}{X} \subseteq X$ ならば、$X=\mathbb{N}$。&lt;br /&gt;
&lt;br /&gt;
$\mathbb{N}$ が自然数全体の集合であるとき、$\mathbb{N}$の元は'''自然数'''と呼ばれる。&lt;br /&gt;
&lt;br /&gt;
==  Peanoの公理を満たす具体例 ==&lt;br /&gt;
この節ではPeanoの公理を満たす例をみる。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=集合系による |label=ex-N_with_set }}&lt;br /&gt;
以下のように帰納的に定義される最小の集合系 $\mathbf{N}$ はPeanoの公理を満たす構造と考えることができる。&lt;br /&gt;
# 空集合 $\emptyset$ は $\mathbf{N}$ の元である。&lt;br /&gt;
# $n \in \mathbf{N}$ であるとき, $n \cup \left\{ n \right\} \in \mathbf{N}$。&lt;br /&gt;
&lt;br /&gt;
具体的には $\mathbb{N}=\mathbf{N}$, $0=\emptyset$, $\mathop{s}(n)=n \cup \mathsetextension{n}$ とすればよい。&lt;br /&gt;
&lt;br /&gt;
{{theorem |type=example |name=記号列による |label=ex-N_with_symbols }}&lt;br /&gt;
記号の集合 $\mathsetextension{z, s}$ 上の記号列であって、&lt;br /&gt;
以下のように帰納的に定義される最小の記号列の集合 $\mathbf{N}$ は&lt;br /&gt;
Peanoの公理を満たす構造と考えることができる。&lt;br /&gt;
# 記号列 $z$ は $\mathbf{N}$ の元である。&lt;br /&gt;
# 記号列 $\mathbf{n}$ が $\mathbf{N}$ の元であるとき、文字列 $s\mathbf{n}$ は $\mathbf{N}$ の元である。&lt;br /&gt;
&lt;br /&gt;
具体的には $\mathbb{N}=\mathbf{N}$, $0=z$, $\mathop{s}(\mathbf{n})=s\mathbf{n}$ とすればよい。&lt;br /&gt;
&lt;br /&gt;
==  自然数全体の一意性 ==&lt;br /&gt;
自然数の集合は同型を除いて一意に定まる。&lt;br /&gt;
&lt;br /&gt;
==  $0$ は自然数か？ ==&lt;br /&gt;
自然数の集合の定義には $0$ を自然数に含む流儀と $0$ を自然数に含まない流儀がある。&lt;br /&gt;
この節ではそのことについて述べる。&lt;br /&gt;
&lt;br /&gt;
===  Mathpediaでのスタンス ===&lt;br /&gt;
Mathpediaにおいては「$0$ を自然数とするかどうか」について、&lt;br /&gt;
各分野ごとの習慣やそれぞれで行っている議論における利便性に応じて、&lt;br /&gt;
適宜筆者の判断に委ねることとしている。&lt;br /&gt;
そのためこの記事以外のMathpediaの記事においては、&lt;br /&gt;
'''$0$ を自然数に含まない流儀が採用されることがある'''。&lt;br /&gt;
個別の記事を読む際には注意されたい。&lt;br /&gt;
&lt;br /&gt;
====  $0$ を自然数に含まない流儀の場合のPeano の公理 ====&lt;br /&gt;
$0$ を自然数に含まない流儀の場合の自然数の集合は{{ref |type=definition |label=def-Peano }}の&lt;br /&gt;
$0$ をすべて $1$ に書き換えれば良い。&lt;br /&gt;
&lt;br /&gt;
===  この記事でのスタンス ===&lt;br /&gt;
&lt;br /&gt;
この記事においては、次の観点から $0$ を含む流儀を採用した。&lt;br /&gt;
* Peano の公理の具体例を構成する際、$0$ を含まない流儀を採用すると不自然になる&lt;br /&gt;
* 自然数の加法に単位元がほしい&lt;br /&gt;
* 集合論などでは $0$ を含む流儀が普通である&lt;br /&gt;
&lt;br /&gt;
===  落ち穂拾い ===&lt;br /&gt;
====  ISO 80000-2:2009 ====&lt;br /&gt;
数学記号について定義している国際規格であるISO 80000-2:2009 によると、&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
! Item No.&lt;br /&gt;
! Sign, Symbol, expression&lt;br /&gt;
! Meaning, verbal equivalent&lt;br /&gt;
!  Remarks and examples&lt;br /&gt;
|-&lt;br /&gt;
| 2-6.1&lt;br /&gt;
| $\mathbf{N}$&lt;br /&gt;
| the set of natural numbers, &amp;lt;br /&amp;gt; the set of positive integers and zero&lt;br /&gt;
|$\mathbf{N}=\mathsetextension{0, 1, 2, 3, \ldots}$ &amp;lt;br /&amp;gt; $\mathbf{N^{*}}=\mathsetextension{1, 2, 3, \ldots}$  &amp;lt;br /&amp;gt; Other restrictions can be indicate in an obvious way, as shown below. &amp;lt;br /&amp;gt; $\mathbf{N_{\lt 5}}=\mathsetintension{ n \in \mathbf{N} }{n \lt 5}$ &amp;lt;br /&amp;gt; The symbols $\mathrm{I\! N}$ and $\mathbb{N}$ are also used.&lt;br /&gt;
|}&lt;br /&gt;
と定義されている。日本語訳は以下のようになる。&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
! 番号&lt;br /&gt;
! 記号、記号列&lt;br /&gt;
! 意味&lt;br /&gt;
! 注意および例&lt;br /&gt;
|-&lt;br /&gt;
| 2-6.1&lt;br /&gt;
| $\mathbf{N}$&lt;br /&gt;
| 自然数の集合、&amp;lt;br /&amp;gt; 正の整数およびゼロからなる集合&lt;br /&gt;
|$\mathbf{N}=\mathsetextension{0, 1, 2, 3, \ldots}$ &amp;lt;br /&amp;gt; $\mathbf{N^{*}}=\mathbf{N^{*}}=\mathsetextension{1, 2, 3, \ldots}$  &amp;lt;br /&amp;gt; 他の制限については以下のように表記できる。 &amp;lt;br /&amp;gt; $\mathbf{N_{\lt 5}}=\mathsetintension{ n \in \mathbf{N} }{n\lt 5}$ &amp;lt;br /&amp;gt; 記号$\mathrm{I\! N}$や$\mathbb{N}$もまた使われる。&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==  Peano範疇性に対する逆数学 ==&lt;br /&gt;
&lt;br /&gt;
Peanoシステムの範疇性定理については良く知られた事実であるが、この範疇性に対する逆数学として以下のような結果が知られている。&lt;br /&gt;
&lt;br /&gt;
====  定義（Peanoシステム） ====&lt;br /&gt;
$ A\subseteq\mathbb{N},i\in A,f\colon A\to A$ の組 $\langle A,i,f\rangle$ を'''システム''' (system) という。システム $\langle A,i,f\rangle$ が'''Peanoシステム''' (Peano system) であるとは、以下の条件を満たすことである。&lt;br /&gt;
# $i\notin\mathrm{rng}(f)$ である。&lt;br /&gt;
# $f$ は単射である。&lt;br /&gt;
# 任意の $X\subseteq A$ に対して、$i\in X$ かつ、任意の $x\in\mathbb{N}$ に対して $x\in X$ ならば $f(x)\in X$ であると仮定する。このとき $X=A$ である。&lt;br /&gt;
&lt;br /&gt;
また $\langle \mathbb{N},0,\mathrm{suc}\rangle$ を標準的なPeanoシステムという。ここで $\mathrm{suc}(x):=x+1$ である。&lt;br /&gt;
&lt;br /&gt;
====  定義（同型） ====&lt;br /&gt;
Peanoシステム $\langle A,i,f\rangle$ が $\langle \mathbb{N},0,\mathrm{suc}\rangle$ に'''同型''' (isomorphic) であるとは全単射 $\sigma\colon A\to\mathbb{N}$ で以下を満たすようなものが存在することである。&lt;br /&gt;
# $\sigma(i)=0$ である。&lt;br /&gt;
# 任意の $x\in A$ に対し $\sigma(f(x))=\mathrm{suc}(\sigma(x))$ である。&lt;br /&gt;
&lt;br /&gt;
またPeanoシステム $\langle A,i,f\rangle$ が $\langle \mathbb{N},0,\mathrm{suc}\rangle$ に'''ほとんど同型''' (almost isomorphic) であるとは、任意の $x\in A$ に対して、ある $n\in\mathbb{N}$ が存在し、$a=f^n(x)$ が成り立つことである。&lt;br /&gt;
&lt;br /&gt;
====  定理（Simpson–横山） ====&lt;br /&gt;
$\mathsf{RCA}^*_0$ 上で以下は同値である。&lt;br /&gt;
# $\mathsf{RCA}_0$ 。&lt;br /&gt;
# 任意の $\langle\mathbb{N},0,\mathrm{suc}\rangle$ にほとんど同型なPeanoシステムは $\langle\mathbb{N},0,\mathrm{suc}\rangle$ に同型である。&lt;br /&gt;
# 任意の無限集合 $C\subseteq \mathbb{N}$ に対し、単射 $f\colon\mathbb{N}\to C$ が存在する。&lt;br /&gt;
# 任意の無限集合 $C\subseteq \mathbb{N}$ 、任意の $n\in\mathbb{N}$ に対し $C$ の部分集合で濃度が $n$ となるものが存在する。&lt;br /&gt;
&lt;br /&gt;
また$\mathsf{RCA}^*_0$ 上で以下は同値である。&lt;br /&gt;
# $\mathsf{WKL}^*_0$ 。&lt;br /&gt;
# 任意のPeano構造は $\langle\mathbb{N},0,\mathrm{suc}\rangle$ にほとんど同型である。&lt;br /&gt;
&lt;br /&gt;
同様に $\mathsf{RCA}^*_0$ 上で以下は同値である。&lt;br /&gt;
# $\mathsf{WKL}_0$ 。&lt;br /&gt;
# 任意のPeano構造は $\langle\mathbb{N},0,\mathrm{suc}\rangle$ に同型である。&lt;br /&gt;
&lt;br /&gt;
==  出典 ==&lt;br /&gt;
* Simpson, Stephen G., and Keita Yokoyama. &amp;quot;Reverse mathematics and Peano categoricity.&amp;quot; Annals of Pure and Applied Logic 164.3 (2013): 284–293.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  関連項目 ==&lt;br /&gt;
* [[順序数]]&lt;br /&gt;
* [[整数]]&lt;br /&gt;
* [[有理数]]&lt;br /&gt;
* [[p進数]]&lt;br /&gt;
* [[実数]]&lt;br /&gt;
* [[複素数]]&lt;br /&gt;
* [[四元数]]&lt;br /&gt;
* [[集合の基本的な用語、集合の演算]]&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=%E6%96%87%E8%84%88%E8%87%AA%E7%94%B1%E8%A8%80%E8%AA%9E&amp;diff=3424</id>
		<title>文脈自由言語</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=%E6%96%87%E8%84%88%E8%87%AA%E7%94%B1%E8%A8%80%E8%AA%9E&amp;diff=3424"/>
		<updated>2021-03-02T03:42:29Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: /* 文脈自由言語の例 */ Fix a typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:形式言語理論|ブンミャクジユウゲンゴ]]&lt;br /&gt;
{{begin |preamble}}&lt;br /&gt;
&amp;lt;!-- 参考文献 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 定理環境 --&amp;gt;&lt;br /&gt;
{{newtheorem |type=theorem |display=定理}}&lt;br /&gt;
{{newtheorem |type=lemma |display=補題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=definition |display=定義 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=prop |display=命題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=example |display=例 |family=theorem }}&lt;br /&gt;
&amp;lt;!-- MathJax commands --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\newcommand{\mathsetextension}[1]{%&lt;br /&gt;
\left\{ #1 \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathsetintension}[2]{%&lt;br /&gt;
\left\{ #1 \left| #2 \right.\right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathof}[2]{%&lt;br /&gt;
\mathop{#1}\left(#2\right)%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathderiv}{\mathrel{\mathop{\Rightarrow}^{*}}}&lt;br /&gt;
\newcommand{\mathgen}{\rightsquigarrow}&lt;br /&gt;
\newcommand{\mathgenfun}[1]{\mathbf{#1}}&lt;br /&gt;
\newcommand{\mirrorim}[1]{\overleftarrow{#1}}&lt;br /&gt;
\newcommand{\emptyword}{\varepsilon}&lt;br /&gt;
\newcommand{\kleenecl}[1]{{#1}^{*}}&lt;br /&gt;
\newcommand{\interpret}[1]{[\![#1]\!]}&lt;br /&gt;
\newcommand{\mathautomaton}[1]{\mathcal{#1}}&lt;br /&gt;
\newcommand{\mathnat}{\mathbb{N}}&lt;br /&gt;
\newcommand{\qed}{\blacksquare}&lt;br /&gt;
\newcommand{\mathrelbar}{\mathrel{|}}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
{{end |preamble}}&lt;br /&gt;
'''文脈自由言語（context-free language）'''とは文脈自由文法によって生成される形式言語である。&lt;br /&gt;
&lt;br /&gt;
文脈自由文法は句構造文法の一種であるから、&lt;br /&gt;
文脈自由言語は[[句構造言語]]の一種である。&lt;br /&gt;
また、文脈自由文法は文脈依存文法の一種であるから、&lt;br /&gt;
文脈自由言語は[[文脈依存言語]]の一種である。&lt;br /&gt;
&lt;br /&gt;
以下、項目[[形式言語]]において定められている言語上の演算などについては特に断らず用いる。&lt;br /&gt;
&lt;br /&gt;
==  文脈自由言語の導入 ==&lt;br /&gt;
この節では文脈自由言語を定義する。&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=definition |name=文脈自由文法 |label=def-context-free_grammar }}&lt;br /&gt;
'''文脈自由文法（context-free grammar）'''とは&lt;br /&gt;
# 記号集合 $\Sigma$&lt;br /&gt;
# $\Sigma$ と互いに素な'''変数記号（variable）'''の有限集合 $V$&lt;br /&gt;
# '''生成規則（production rule）'''と呼ばれる有限集合 $R \subseteq V \times \kleenecl{(\Sigma \cup V)}$&lt;br /&gt;
# '''開始記号(start symbol)'''または'''初期記号'''と呼ばれる $S\in V$&lt;br /&gt;
&lt;br /&gt;
の４つ組$(V, \Sigma, R, S)$である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
これは、[[句構造言語#句構造文法 | 句構造文法]]の一種である。また、[[文脈依存言語#文脈依存文法 | 文脈依存文法]]の一種である。&lt;br /&gt;
&lt;br /&gt;
[[句構造言語]]のときと同様、$\Sigma$ の元を'''終端記号(terminal)'''、$V$ の元を'''非終端記号(non-terminal)'''と呼ぶことも多い。&lt;br /&gt;
&lt;br /&gt;
以下では、元$(A, \alpha)\in R$ のことを$A\mathgen\alpha$と書く。&lt;br /&gt;
&lt;br /&gt;
[[句構造言語#def-derivation | 導出]]、[[句構造言語#def-phrase_structure_lang | 生成される言語]]などは&lt;br /&gt;
句構造言語と同様に定義される。&lt;br /&gt;
&lt;br /&gt;
'''文脈自由言語'''とは何らかの文脈自由文法によって生成される言語のことを言う。&lt;br /&gt;
&lt;br /&gt;
==  文脈自由言語の例 ==&lt;br /&gt;
この節では文脈自由言語の例を紹介する。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=Dyck言語 |label=ex-Dyck_lang }}&lt;br /&gt;
$V=\left\{ S \right\}$, &lt;br /&gt;
$\Sigma=\left\{ [, ] \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen\varepsilon, S\mathgen [S]S \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は文脈自由文法である。&lt;br /&gt;
この文脈自由文法によって生成される言語 $L(G)$ を'''Dyck言語'''と呼ぶ&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Dyck言語の元となる記号列とその記号列を生成する導出の列をいくつかあげる。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{gather*}&lt;br /&gt;
 S \Rightarrow \varepsilon \\&lt;br /&gt;
 S \Rightarrow [S]S \Rightarrow [\varepsilon]S \Rightarrow [\varepsilon]\varepsilon \equiv [] \\&lt;br /&gt;
 S \Rightarrow [S]S \Rightarrow [[]]S \Rightarrow [[]]\varepsilon \equiv [[]] \\&lt;br /&gt;
 S \Rightarrow [S]S \Rightarrow [\varepsilon]S \Rightarrow [\varepsilon][S]S \mathderiv [\varepsilon][\varepsilon]\varepsilon \equiv [][] \\&lt;br /&gt;
 S \Rightarrow [S]S \Rightarrow [[S]S]S \Rightarrow [[[S]S]S]S \mathderiv [[[\varepsilon]\varepsilon]\varepsilon]\varepsilon \equiv [[[]]] \\&lt;br /&gt;
 S \Rightarrow [S]S \Rightarrow [[S]S]S \Rightarrow [[S]S][S]S \mathderiv [[\varepsilon]\varepsilon][\varepsilon]\varepsilon \equiv [[]][] \\&lt;br /&gt;
 S \Rightarrow [S]S \Rightarrow [S][S]S \Rightarrow [S][[S]S]S \mathderiv [\varepsilon][[\varepsilon]\varepsilon]\varepsilon \equiv [][[]] \\&lt;br /&gt;
S \Rightarrow [S]S \Rightarrow [S][S]S \Rightarrow [S][S][S]S \mathderiv [\varepsilon][\varepsilon][\varepsilon]\varepsilon \equiv [][][] &lt;br /&gt;
\end{gather*}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=二進表現された自然数同士の四則演算の式全体 |label=ex-arithmetic_form_lang }}&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{align*}&lt;br /&gt;
 V&amp;amp;=\left\{ S, B, B', M, P \right\}, \\&lt;br /&gt;
 \Sigma&amp;amp;=\left\{ 0, 1, +, -, \times, \div, (, ) \right\}, \\&lt;br /&gt;
 R&amp;amp;=\{ S \mathgen M, S \mathgen S + M, S \mathgen S - M,  M \mathgen P, M \mathgen M \times P, M \mathgen M \div P,  P \mathgen B, P \mathgen ( S ),  B \mathgen 0, B \mathgen 1, B \mathgen 1B', B' \mathgen 0, B' \mathgen 1, B' \mathgen 0B', B' \mathgen 1B' \}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は文脈自由文法である。&lt;br /&gt;
この文法によって生成される言語は二進表現された自然数同士の四則演算の式全体である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
二進表現された自然数同士の四則演算の式の導出の例をあげる。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{align*}&lt;br /&gt;
 S &amp;amp;\Rightarrow M \\&lt;br /&gt;
 &amp;amp;\Rightarrow M \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow M \times P \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow P \times P \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (S) \times P \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (S - M) \times P \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (S + M - M) \times P \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (M + M - M) \times P \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (P + M - M) \times P \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (B + M - M) \times P \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (0 + M - M) \times P \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (0 + P - M) \times P \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (0 + B - M) \times P \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (0 + 1B' - M) \times P \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (0 + 10 - M) \times P \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (0 + 10 - P) \times P \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (0 + 10 - B) \times P \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (0 + 10 - 1) \times P \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (0 + 10 - 1) \times B \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (0 + 10 - 1) \times 1B' \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (0 + 10 - 1) \times 10B' \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (0 + 10 - 1) \times 101 \div P \\&lt;br /&gt;
 &amp;amp;\Rightarrow (0 + 10 - 1) \times 101 \div B \\&lt;br /&gt;
 &amp;amp;\Rightarrow (0 + 10 - 1) \times 101 \div 1 \\&lt;br /&gt;
\end{align*}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=(命題変数が有限の)命題論理の論理式全体 |label=ex-prop_form_lang }}&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{align*}&lt;br /&gt;
 V&amp;amp;=\left\{ S \right\}, \\&lt;br /&gt;
 \Sigma&amp;amp;=\left\{ p_1, \ldots p_n, \top, \bot, \lnot, \land, \lor, \to, (, )\right\}, \\&lt;br /&gt;
 R&amp;amp;=\{ S\mathgen p_1, \ldots,  S\mathgen p_n, S\mathgen \top, S\mathgen \bot, &lt;br /&gt;
 S\mathgen(\lnot S), S\mathgen(S\land S), S\mathgen(S\lor S), S\mathgen({S\to S}) \}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は文脈自由文法である。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
この文脈自由文法によって生成される言語 $L(G)$ は[[数理論理学の基礎、命題論理]]において定義されている命題論理の論理式全体である（ただし、命題変数の集合の濃度を有限としたときに限る）。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=$0^{n}1^{n}$ という形をした記号列全体 |label=ex-counter_example_reg_lang_n }}&lt;br /&gt;
$V=\left\{ S \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen\emptyword, S\mathgen 0S1 \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は文脈自由文法である。&lt;br /&gt;
この文脈自由文法によって生成される言語 $L(G)$ は $0^{n}1^{n}$ （ただし、$n\in\mathnat$）という形をした記号列全体になっている。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$0^{n}1^{n}$ という形をした記号列の導出の例をいくつかあげる。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{gather*}&lt;br /&gt;
 S \Rightarrow \varepsilon \\&lt;br /&gt;
 S \Rightarrow 0S1 \Rightarrow 0\emptyword 1  \equiv 01 \\&lt;br /&gt;
 S \Rightarrow 0S1 \Rightarrow 00S11 \Rightarrow 00\emptyword 11  \equiv 0011 \\&lt;br /&gt;
 S \Rightarrow 0S1 \Rightarrow 00S11 \Rightarrow 000S111 \Rightarrow 000\emptyword 111  \equiv 000111 \\&lt;br /&gt;
 S \Rightarrow 0S1 \Rightarrow 00S11 \Rightarrow 000S111 \Rightarrow 0000S1111 \Rightarrow 0000\emptyword 1111  \equiv 00001111 \\&lt;br /&gt;
S \Rightarrow 0S1 \Rightarrow 00S11 \Rightarrow 000S111 \Rightarrow 0000S1111 \Rightarrow 00000S11111 \Rightarrow 00000\emptyword 11111  \equiv 0000011111 &lt;br /&gt;
\end{gather*}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=$w\mirrorim{w}$ という形をした記号列全体 |label=ex-counter_example_reg_lang_mirror }}&lt;br /&gt;
$V=\left\{ S \right\}$, &lt;br /&gt;
$\Sigma=\left\{ 0, 1 \right\}$, &lt;br /&gt;
$R=\left\{ S\mathgen\emptyword, S\mathgen 0S0, S\mathgen 1S1 \right\}$&lt;br /&gt;
とすると、$G=(V, \Sigma, R, S)$ は文脈自由文法である。&lt;br /&gt;
この文脈自由文法によって生成される言語 $L(G)$ は $w\mirrorim{w}$ （ただし、$w\in \kleenecl{\Sigma}$）という形をした記号列全体になっている。&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
$w\mirrorim{w}$ という形をした記号列の導出の例をいくつかあげる。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{gather*}&lt;br /&gt;
 S \Rightarrow \varepsilon \\&lt;br /&gt;
 S \Rightarrow 0S0 \Rightarrow 0\emptyword 0 \equiv 00 \\&lt;br /&gt;
 S \Rightarrow 1S1 \Rightarrow 1\emptyword 1 \equiv 11 \\&lt;br /&gt;
 S \Rightarrow 0S0 \Rightarrow 00S00 \Rightarrow 00\emptyword 00  \equiv 0000 \\&lt;br /&gt;
 S \Rightarrow 0S0 \Rightarrow 01S10 \Rightarrow 01\emptyword 10  \equiv 0110 \\&lt;br /&gt;
 S \Rightarrow 1S1 \Rightarrow 10S01 \Rightarrow 10\emptyword 01  \equiv 1001 \\&lt;br /&gt;
 S \Rightarrow 1S1 \Rightarrow 11S11 \Rightarrow 11\emptyword 11 \equiv 1111 &lt;br /&gt;
\end{gather*}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  BNF記法 ==&lt;br /&gt;
この節ではBNF記法について述べる。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{align*}&lt;br /&gt;
 V&amp;amp;=\left\{ S, A_{1}, \dots A_{n} \right\},   \\&lt;br /&gt;
 R&amp;amp;=\{ S\mathgen \alpha_{00}, \dots S\mathgen \alpha_{0m_{0}},  \\&lt;br /&gt;
 &amp;amp;\phantom{=\{} A_{1}\mathgen \alpha_{10}, \dots A_{1}\mathgen \alpha_{1m_{1}},  \\&lt;br /&gt;
 &amp;amp;\phantom{=\{ A_{1}\mathgen \alpha_{10}, } \vdots  \\&lt;br /&gt;
 &amp;amp;\phantom{=\{} A_{n}\mathgen \alpha_{n0}, \dots A_{n}\mathgen \alpha_{nm_{n}} \}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
という、文脈自由文法 $G=(V, \Sigma, R, S)$ について、&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{align*}&lt;br /&gt;
 S &amp;amp;::= \alpha_{00} \mathrelbar \dots \mathrelbar \alpha_{0m_{0}} \\&lt;br /&gt;
 A_{1} &amp;amp;::= \alpha_{10} \mathrelbar \dots \mathrelbar \alpha_{1m_{1}} \\&lt;br /&gt;
 \vdots \\&lt;br /&gt;
 A_{n} &amp;amp;::= \alpha_{n0} \mathrelbar \dots \mathrelbar \alpha_{nm_{n}} &lt;br /&gt;
\end{align*}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&lt;br /&gt;
という表記を $G$ の'''[[BNF記法]](Backus-Naur form)'''という。&lt;br /&gt;
&lt;br /&gt;
この記法は、論理式の定義やプログラミング言語の定義などによく使われる。&lt;br /&gt;
&lt;br /&gt;
=== BNFの例 ===&lt;br /&gt;
&amp;lt;div&amp;gt;&lt;br /&gt;
{{theorem |type=example |name=二進表現された自然数同士の四則演算の式全体 |label=ex-arithmetic_form_lang_BNF }}&lt;br /&gt;
&lt;br /&gt;
[[文脈自由言語#ex-arithmetic_form_lang | 二進表現された自然数同士の四則演算の式全体]]を表すBNF記法は次のとおりである。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\begin{align*}&lt;br /&gt;
 S  &amp;amp;::= M \mathrelbar S + M \mathrelbar S - M \\&lt;br /&gt;
 M  &amp;amp;::= P \mathrelbar M \times P \mathrelbar M \div P \\&lt;br /&gt;
 P  &amp;amp;::= B \mathrelbar ( S ) \\&lt;br /&gt;
 B  &amp;amp;::= 0 \mathrelbar 1 \mathrelbar 1B' \\&lt;br /&gt;
 B' &amp;amp;::= 0 \mathrelbar 1 \mathrelbar 0B'\mathrelbar 1B' &lt;br /&gt;
\end{align*}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- == プッシュダウンオートマトンとの関係 == --&amp;gt;&lt;br /&gt;
&amp;lt;!-- Now writing...... --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==  参考文献 ==&lt;br /&gt;
# 新屋 良磨、オートマトン理論再考、コンピュータ ソフトウェア、2017、34 巻、3 号、p. 3_3-3_35、公開日 2017/09/25、Print ISSN 0289-6540、https://doi.org/10.11309/jssst.34.3_3、https://www.jstage.jst.go.jp/article/jssst/34/3/34_3_3/_article/-char/ja&lt;br /&gt;
# 五十嵐喜英他、『数理情報科学シリーズ ２４ オートマトンと形式言語の基礎』、牧野書店、2011&lt;br /&gt;
&lt;br /&gt;
== 関連項目 ==&lt;br /&gt;
* [[形式言語]]&lt;br /&gt;
* [[BNF記法]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
|+ Chomsky階層&lt;br /&gt;
! 文法のタイプ&lt;br /&gt;
! 言語のクラス&lt;br /&gt;
! 計算モデル&lt;br /&gt;
|-&lt;br /&gt;
! タイプ0&lt;br /&gt;
| [[句構造言語]]&lt;br /&gt;
| [[Turingマシン]]&lt;br /&gt;
|-&lt;br /&gt;
! タイプ1&lt;br /&gt;
| [[文脈依存言語]]&lt;br /&gt;
| [[線形有界オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ2&lt;br /&gt;
| [[文脈自由言語]]&lt;br /&gt;
| [[プッシュダウン・オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ3&lt;br /&gt;
| [[正規言語]]&lt;br /&gt;
| [[有限オートマトン]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
	<entry>
		<id>https://math.jp/w/index.php?title=Backus-Naur%E8%A8%98%E6%B3%95&amp;diff=3412</id>
		<title>Backus-Naur記法</title>
		<link rel="alternate" type="text/html" href="https://math.jp/w/index.php?title=Backus-Naur%E8%A8%98%E6%B3%95&amp;diff=3412"/>
		<updated>2021-03-01T16:50:59Z</updated>

		<summary type="html">&lt;p&gt;そくらてす: Fix a typo&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Category:形式言語理論 |Backus-Naurキホウ]]&lt;br /&gt;
{{begin |preamble}}&lt;br /&gt;
&amp;lt;!-- 参考文献 --&amp;gt;&lt;br /&gt;
&amp;lt;!-- 定理環境 --&amp;gt;&lt;br /&gt;
{{newtheorem |type=theorem |display=定理}}&lt;br /&gt;
{{newtheorem |type=lemma |display=補題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=definition |display=定義 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=prop |display=命題 |family=theorem }}&lt;br /&gt;
{{newtheorem |type=example |display=例 |family=theorem }}&lt;br /&gt;
&amp;lt;!-- MathJax commands --&amp;gt;&lt;br /&gt;
&amp;lt;math&amp;gt;&lt;br /&gt;
\newcommand{\mathsetextension}[1]{%&lt;br /&gt;
\left\{ #1 \right\}%&lt;br /&gt;
}&lt;br /&gt;
\newcommand{\mathderiv}{\mathrel{\mathop{\Rightarrow}}^{*}}&lt;br /&gt;
\newcommand{\mathgen}{\rightsquigarrow}&lt;br /&gt;
\newcommand{\emptyword}{\varepsilon}&lt;br /&gt;
\newcommand{\kleenecl}[1]{{#1}^{*}}&lt;br /&gt;
\newcommand{\interpret}[1]{[\![#1]\!]}&lt;br /&gt;
\newcommand{\mathautomaton}[1]{\mathcal{#1}}&lt;br /&gt;
\newcommand{\mathnat}{\mathbb{N}}&lt;br /&gt;
\newcommand{\qed}{\blacksquare}&lt;br /&gt;
&amp;lt;/math&amp;gt;&lt;br /&gt;
{{end |preamble}}&lt;br /&gt;
'''Backus-Naur記法'''(Backus-Naur form)&lt;br /&gt;
とは[[文脈自由言語]]の文法を定義するのに用いられる標準的な記法である。&lt;br /&gt;
BN記法、BNF記法や単にBNFとも呼ばれる。&lt;br /&gt;
通常，[[形式言語]]理論においては，記号集合を有限にするが，&lt;br /&gt;
この項目においては'''記号集合が無限であることがある'''。&lt;br /&gt;
&lt;br /&gt;
以下ではBNF記法と書く。&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==  概要  ==&lt;br /&gt;
&lt;br /&gt;
形式的に厳密な定義については[[文脈自由言語#BNF]]を&lt;br /&gt;
参照のこと．&lt;br /&gt;
&lt;br /&gt;
BNF記法にはさまざまなバリエーションがあるが共通して&lt;br /&gt;
\[\text{定義したい記号列を表すメタ記号}::=\text{記号列の並びを指定するメタ記号の列}\mathrel{|}\cdots\mathrel{|}\text{記号列の並びを指定するメタ記号の列}\]&lt;br /&gt;
という表現が用いられる。&lt;br /&gt;
&lt;br /&gt;
たとえば、BNF記法を用いて自然数の二進表現 $B$ を表現すると次のようになる。&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
\begin{align*}&lt;br /&gt;
{B} &amp;amp;::= {b\mathrel{|}1B'} \\&lt;br /&gt;
{B'} &amp;amp;::= {b\mathrel{|}bB'} \\&lt;br /&gt;
{b} &amp;amp;::= {0\mathrel{|}1}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
この記法によって、$B$ は&lt;br /&gt;
\[0, 1, 10, 11, 100, 101, 110, 111, 1000,\ldots\]&lt;br /&gt;
という記号列全体を表現できている．&lt;br /&gt;
&lt;br /&gt;
==  BNF記法の具体例  ==&lt;br /&gt;
===  命題論理の論理式の表現  ===&lt;br /&gt;
[[数理論理学の基礎1]]の記事に書いてある命題論理の論理式 $\varphi$ の定義は次のように表現できる。&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;&lt;br /&gt;
\begin{align*}&lt;br /&gt;
{p} &amp;amp;\in {\mathrm{PropVar}} \\&lt;br /&gt;
{\varphi} &amp;amp;::= {p \mathrel{|} \top \mathrel{|} \bot \mathrel{|} (\lnot\varphi) \mathrel{|} (\varphi\land\varphi) \mathrel{|} (\varphi\lor\varphi) \mathrel{|} (\varphi\to\varphi)}&lt;br /&gt;
\end{align*}&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===  等式論理の項、論理式の表現  ===&lt;br /&gt;
[[数理論理学の基礎1]]の記事に書いてある等式論理の$\mathscr{L}$-項 $t$ と$\mathscr{L}$-論理式 $\varphi$ の定義は次のように表現できる。&lt;br /&gt;
&lt;br /&gt;
\begin{align*}&lt;br /&gt;
{t} &amp;amp;::= {v\mathrel{|}f(\overbrace{t,\ldots,t}^{n\text{個}})} \\&lt;br /&gt;
{\varphi} &amp;amp;::= {t=t}&lt;br /&gt;
\end{align*}&lt;br /&gt;
ただし、$v$ は変数記号を表し、$f$ は項数 $n$ の関数記号である。&lt;br /&gt;
&lt;br /&gt;
== 関連項目  ==&lt;br /&gt;
* [[形式言語]]&lt;br /&gt;
* [[文脈自由言語]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin: auto;&amp;quot;&lt;br /&gt;
|+ Chomsky階層&lt;br /&gt;
! 文法のタイプ&lt;br /&gt;
! 言語のクラス&lt;br /&gt;
! 計算モデル&lt;br /&gt;
|-&lt;br /&gt;
! タイプ0&lt;br /&gt;
| [[句構造言語]]&lt;br /&gt;
| [[Turingマシン]]&lt;br /&gt;
|-&lt;br /&gt;
! タイプ1&lt;br /&gt;
| [[文脈依存言語]]&lt;br /&gt;
| [[線形有界オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ2&lt;br /&gt;
| [[文脈自由言語]]&lt;br /&gt;
| [[プッシュダウン・オートマトン]]&lt;br /&gt;
|-&lt;br /&gt;
!タイプ3&lt;br /&gt;
| [[正規言語]]&lt;br /&gt;
| [[有限オートマトン]]&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>そくらてす</name></author>
	</entry>
</feed>