0

型推栄の5分で定理 #1

48
0
$$$$

これは何

定期的に何か文章を書きたいのだが、特にネタもないので5分で証明できる定理をちょくちょく紹介することにしたい。

Kts.1

Kts.1

任意の形式言語は高々可算である。

ただしここで形式言語とは、アルファベットと呼ばれる可算集合(有限集合に限定する流儀もあるが、こちらの方が強い主張なので問題ない)の要素を有限個並べて作った列(語)からなる集合のことをいう。

以下、自然数とは1以上の整数のことをいい、$\mathbb{N}$で自然数全体を指すものとする。
またアルファベットの集合$\Sigma$に対し、$2^\Sigma$は(冪集合でなく)$\Sigma$上の語全体がなす集合を表す。

$L$ をアルファベット $\Sigma$ 上の勝手な形式言語とすると、 $ L \subseteq 2^\Sigma$ である。ここで $\Sigma$ は可算であるから、要素である各文字は自然数によって $s_1, s_2, \ldots \in \Sigma$ と付番できる。

さて、ここで正の整数 $k$ に対して $[k]$$k$ 以下の自然数からなる集合を表す。$\Sigma$ 上の長さ $n > 0$ の語 $w$ が写像 $f: [n] \to \mathbb{N}$により $w \equiv s_{f(1)} \cdots s_{f(n)}$ と表せるとする。なお、そのような $f$ は長さ1以上のどんな語 $w$ に対しても必ず存在する。

ところで素数は可算無限個存在するから、素数を小さい順に $p_1, p_2, p_3, \ldots$ と付番する(例えば $ p_1 = 2, p_2 = 3, p_3 = 5$ である)。そこで写像 $g: 2^{\Sigma} \to \mathbb{N}$ を次の通り定義する。

\begin{equation} g(s_{f(1)} \cdots s_{f(n)}) := p_1^{f(1)} \cdots p_{n}^{f(n)} \end{equation}

ただし、空語$\lambda$に対しては$g(\lambda) = 1$と約束する。

この方法により任意の $w \in 2^\Sigma$ に自然数 $g(w)$ を対応づけることができ、また素因数分解の一意性から $g$ は明らかに単射である。よって $|2^\Sigma| \le |\mathbb{N}|$ であるから、 $L$ もやはり高々可算である。

余談

一般に $g(w)$$w$ のゲーデル数 (Gödel number) と呼ばれる。

ゲーデル数 - Wikipedia

感想

文章を打ち込む時間を考えると、これ全然5分では済まないな。

修正(2024/03/17)

#0は自然数 なので本記事でもそのように書いていたが、$g$の定義において$g(s_0^*) = 1\quad (s^* = \lambda, s, ss, sss, \ldots)$となって不都合であったから1-indexedに修正した。

投稿日:314
更新日:317
OptHub AI Competition

この記事を高評価した人

高評価したユーザはいません

この記事に送られたバッジ

バッジはありません。

投稿者

コメント

他の人のコメント

コメントはありません。
読み込み中...
読み込み中