1

証明と関数は似ている

46
0
$$\newcommand{C}[0]{\mathbb{C}} \newcommand{card}[1]{|#1|} \newcommand{dotge}[0]{\dot\ge} \newcommand{F}[0]{\mathbb{F}} \newcommand{i}[0]{\ \ \ \ \ \ } \newcommand{id}[0]{\mathrm{id}} \newcommand{ii}[0]{\i\i} \newcommand{iii}[0]{\i\i\i} \newcommand{im}[0]{\mathrm{Im}} \newcommand{ker}[0]{\mathrm{Ker}} \newcommand{mapsdown}[0]{\overline{\downarrow}} \newcommand{mapsup}[0]{\underline{\uparrow}} \newcommand{N}[0]{\mathbb{N}} \newcommand{Q}[0]{\mathbb{Q}} \newcommand{R}[0]{\mathbb{R}} \newcommand{set}[1]{\left\{#1\right\}} \newcommand{setmid}[0]{\ \middle|\ } \newcommand{simeqw}[1]{\simeq_{\mathrm{#1}}} \newcommand{xr}[1]{\xrightarrow{#1}} \newcommand{Z}[0]{\mathbb{Z}} $$

命題は「前提」「結果」「証明」の形で記述される。
これはプログラミングにおける関数の「引数(型)」「返り値(型)」「内容」に似ているとおもう。

証明をプログラムチックに(Pythonっぽく)書くと読みやすいよってこと。(私にとって)
一行には基本一文だけ。一文はできるだけ短く。程よく改行を入れる。仮定があれば[]で括って字下げする。

(私は今から示したいことを[]字下げで書くこともある。)

↓こんな感じ

素数は無限に存在する。

引数型:なし($\N$において考えているという大前提がある気もするが、それを考えていたらきりがない)
返り値型:「素数は無限に存在する」

[「素数は有限個しか存在しない」と仮定する]
$\i$すべての素数を $p_1, p_2, \dots, p_n$ とする。

$\i$$N = (p_1 \times p_2 \times \dots \times p_n) + 1$ と置く。

$\i$$N$$1$ではないから、素数か合成数のどちらかである。

$\i$[$N$が素数の場合]
$\ii$$N$ は明らかにどの $p_i$ よりも大きい。
$\ii$これは「存在する素数は $p_1$ から $p_n$ で全てである」という前提に矛盾する。

$\i$[$N$が合成数である場合]
$\ii$$N$ が合成数であるなら、何らかの素数 $q$ で割り切れるはずである。
$\ii$仮定より、$q$$p_1, p_2, \dots, p_n$ のいずれかである。
$\ii$したがって、積 $(p_1 \times p_2 \times \dots \times p_n)$$q$ で割り切れる。
$\ii$すると、$N$ との差である $N - (p_1 \times p_2 \times \dots \times p_n) = 1$
$\ii$$q$ で割り切れなければならない。
$\ii$しかし、$1$ を割り切れる素数 $q$ は存在しないため、矛盾する。

$\i$すべての分岐ケースにおいて矛盾が発生した。

したがって、「素数は有限個しか存在しない」は偽である。

投稿日:6日前
更新日:5日前
数学の力で現場を変える アルゴリズムエンジニア募集 - Mathlog served by OptHub

この記事を高評価した人

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

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

バッジはありません。

投稿者

コメント

他の人のコメント

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