以下の内容はhttps://m-hiyama-second.hatenablog.com/entry/2024/06/02/164847より取得しました。


絵図主義者の証明法 (5) すべての規則

「規則」はテクニカルタームで、証明規則または導出規則〈リーズニング規則〉である。規則は、基本的〈basic | primitive | atomic | elementary〉で組み込み〈builtin〉な関数またはマクロのこと。$`
\newcommand{\Imp}{\Rightarrow}
\newcommand{\LL}{\langle} % List Left
\newcommand{\LR}{\rangle} % List Right
\newcommand{\T}[1]{\text{#1} }
\newcommand{\hinfer}{ \rightrightarrows }% horizontal meta rule (infer)
\newcommand{\num}[1]{\:\text{ - - }#1 } % numbering, labeling
`$

外部変数の約束

外部変数、つまり、人と人とのコミュニケーションにおいて、説明のための地の文〈じのぶん〉に登場する変数の約束を述べる。今ここでは、システム〈形式的体系〉とその内部言語を外から観察・記述する立場。主観位置を変えて、自分(人)がシステムになったとして、システムの動作を人がやること(生きている人間によるシステムのシミュレーション)も、もちろんある -- つうか、それが現実の証明の人による作成行為。

  • ラテン文字小文字: $`a,b, x, y`$ など。内部の名前を表す外部変数、内部の名前が番号($`{\bf N}`$ の要素)のときもある。
  • アルファベットなかほどのラテン文字小文字: $`f, g`$ など。証明(名前なし関数または名前付き関数=定理)を表す外部変数。名前付き関数の場合は、名前と本体〈名前に割り当てられた項〉を適宜置き換えてよい。
  • ラテン文字大文字: $`A, B, P, Q, X, Y`$ など。内部の型項(型を表す記号表現)または命題項〈論理式〉を表す外部変数、命題は型の特殊なものとみなす(Propositions-As-Types)。
  • ラテン文字小文字列 立体〈ローマン体〉: $`\T{abc}`$ など。証明規則の名前〈固有名〉、変数ではない。
  • ラテン文字大文字列 立体〈ローマン体〉: $`\T{ABC}`$ など。導出規則の名前〈固有名〉、変数ではない。
  • ギリシャ文字小文字 : $`\varphi`$ など。内部のなんらかの項〈記号的表現〉を表す外部変数。
  • ギリシャ文字大文字 : $`\Gamma, \Delta`$ など。宣言(後述)のリストを表す外部変数。

リストの最後に項目を追加する演算の演算子記号は $`\cdot`$ 、リストの連接の演算子記号は $`\odot`$ 。リストの囲み記号は $`\LL\;\LR`$ とするが、適宜省略する。また、$`(\;)`$ と $`\LL\;\LR`$ を常に使い分けるわけではない(テキトーである、とてもイイカゲンである)

内部構文の約束

内部構文(システムが使用するプログラミング言語=内部言語の構文)の記述には外部変数が使われる(システムを外部から見ているので)。内部言語は自然言語ではない。人と人とのコミュニケーションに使用するときは自然言語〈日本語〉に翻訳して使う。

  • 名前の型宣言は $`(a: A)`$ の形。ここで、$`a`$ は名前(番号かも知れない)、A は型項(命題項含む)。囲み丸括弧は適宜省略可能。
  • $`(A \num{a})`$ は、$`(a: A)`$ の別表記。まったく同じ!
  • 名前(番号かも知れない)の型宣言を並べたリストは、 $`\LL(a_1:A_1), \cdots, (a_n:A_n)\LR`$ の形で書く。これがコンテキスト。囲み記号 $`\LL\; \LR`$ は、関数のデカルトペアリングとコンフリクトしている。
  • 計算〈名前なし関数〉、関数〈名前付き計算〉のプロファイルは $`\to`$ で書く。証明は計算、定理は関数〈名前付き計算〉。
  • 高階計算〈名前なし高階関数〉、高階関数〈名前付き高階計算〉のプロファイルは二本矢印 $`\hinfer`$ で書く。導出は高階計算、マクロは高階関数〈名前付き高階計算〉。

略称(短縮名)

略称 フルスペル 使用場面・意味
mp modus ponens 証明規則の固有名、おそらく最も有名
qt quantification 限量すること。固有名の一部に使う
ex exsistential 形容詞で「存在に関わる」。固有名の一部に使う
univ universal 形容詞で「全称に関わる」。固有名の一部に使う
exam example 実例。固有名の一部に使う
contra contradiction 矛盾。固有名に使う

規則の一覧

導入規則(表の第三列)と消去規則(表の第ニ列)に対称性〈symmetry〉がある、というのはコジツケのデタラメ。双対性はあるが、表の左右ではない。

命題の論理記号 仮定として使いたいとき 結論として欲しいとき
$`\land`$ $`\T{select}`$ $`\T{AND}`$
$`\lor`$ $`\T{CASE}`$ $`\T{insert}`$
$`\Imp`$ $`\T{mp}`$ $`\T{CURRY}`$
$`\lnot`$ $`\T{mp}`$ $`\T{CONTRA}`$
$`\top`$ $`\T{terminal}`$
$`\bot`$ $`\T{initial}`$
$`\forall`$ $`\T{univ-to-exam}`$ $`\T{UNIV-QT}`$
$`\exists`$ $`\T{EX-USE}`$ $`\T{exam-to-ex}`$

規則の仕様と使い方

よく使われる(気がする)順で並べる。日本語翻訳例はあくまで一例であり、極めて多様な言い回しがある(なにしろ日本語だから)。

モダスポネンス mp

カタカナ表記は「モーダス」が多いかも。

名前: $`\T{mp}`$
プロファイル: $`(A\num{a}), (A\Imp B \num{b}) \to (B\num{c})`$

日本語翻訳例:
$`a`$ であった。ここで $`b`$ を使えば、$`B`$ が言える(これを $`c`$ とする)。

連言の構成 AND

名前: $`\T{AND}`$
高階プロファイル:
$`\quad f: \Gamma \to (A\num{a})\\
\quad g: \Gamma \to (B\num{b})\\
\hinfer \LL f, g\LR : \Gamma \to (A\land B \num{c})
`$

日本語翻訳例:
$`a`$ は言えている。また、$`b`$ も言えている。よって、$`A \land B`$ が言える(これを $`c`$ とする)。

含意の構成 CURRY

名前: $`\T{CURRY}`$
高階プロファイル:
$`\quad f: \Gamma \cdot (A\num{a}) \to (B\num{b})\\
\hinfer {^\cap f} : \Gamma \to (A\Imp B\num{c})
`$

日本語翻訳例:
さて、ここで $`a`$ を仮定しよう。
‥‥ $`f`$ ‥‥
これで $`b`$ が言えた。
よって、$`A \Imp B`$ が示せた(これを $`c`$ とする)。

全称の構成(全称限量) UNIV-QT

名前: $`\T{UNIV-QT}`$
高階プロファイル:
$`\quad f:\Gamma \cdot (x: X) \to (P(x) \num{a} )\\
\hinfer \LL f_x \LR_{x:X} : \Gamma \to (\forall x:X. P(x) \num{b})
`$

日本語翻訳例:
さて、ここで $`x: X`$ としよう。
‥‥ $`f`$ ‥‥
これで $`a`$ が言えた。
$`x`$ は任意だったから、$`\forall x:X. P(x)`$ が示せた(これを $`b`$ とする)。

場合分け CASE

名前: $`\T{CASE}`$
高階プロファイル:
$`\quad f: \Gamma\cdot (A \num{a}) \to (C \num{b})\\
\quad g: \Gamma\cdot (B \num{c}) \to (C \num{d})\\
\hinfer [f, g] : \Gamma\cdot( A\land B \num{s}) \to (C \num{t})
`$

日本語翻訳例:
$`s`$ から $`t`$ を示したい。そのために、$`s`$ を場合分けしよう。
まず、$`a`$ の場合を示す。
‥‥ $`f`$ ‥‥
これで、$`b`$ ($`t`$ と同じだが)が示せた。
次に、$`c`$ の場合を示す。
‥‥ $`g`$ ‥‥
これで、$`d`$ ($`t`$ と同じだが)が示せた。
以上により、$`s`$ から $`t`$ が言えた。

存在の利用 EX-USE

名前: $`\T{EX-USE}`$
高階プロファイル:
$`\quad f: \Gamma\odot\LL (y:X), (P(y)\num{a}) \LR \to (A\num{b})\\
\hinfer [f_x]_{x:X} : \Gamma\cdot(\exists x:X. P(x) \num{c}) \to (A \num{d})
`$

日本語翻訳例:
$`c`$ から $`d`$ を示したい。
$`P(x)`$ である $`x`$ は存在するので、そのような $`x`$ を(念の為、名前を変えて) $`y`$ とする。
すると、次のようになる。
‥‥ $`f`$ ‥‥
これで、$`b`$($`d`$ と同じだが)が示せた。
以上により、$`c`$ から $`d`$ が言えた。

事例の作成 univ-to-exam

名前: $`\T{univ-to-exam}`$
プロファイル:
$`\quad (\varphi : X), (\forall x:X.P(x) \num{a}) \to (P(\varphi) \num{b})`$

日本語翻訳例:
$`\varphi`$ は $`X`$ のインスタンスである。
$`a`$ により、$`X`$ の任意のインスタンスは $`P`$ なのだから、当然に $`P(\varphi)`$ である(これを $`b`$ とする)。

事例から存在 exam-to-ex

名前: $`\T{exam-to-ex}`$
プロファイル: $`(\varphi : X), (P(\varphi) \num{a}) \to (\exists x:X. P(x) \num{b})`$

日本語翻訳例:
$`\varphi`$ は $`X`$ のインスタンスである。
そして、$`\varphi`$ は $`P`$ を満たす($`a`$ により)。
したがって、$`\varphi`$ を事例として $`b`$ が言えた。

背理法 CONTRA

否定は $`\lnot A \equiv A \Imp \bot`$ と考える。$`\T{CONTRA}`$ は、$`\T{CURRY}`$ の特別な場合。

名前: $`\T{CONTRA}`$
高階プロファイル:
$`\quad f: \Gamma \cdot (A\num{a}) \to (\bot \num{b})\\
\hinfer {^\cap f} : \Gamma \to (A\Imp \bot\num{c})
`$

日本語翻訳例:
背理法を使って示す。
否定したい命題 $`A`$ を仮定しよう($`a`$ とする)。
‥‥ $`f`$ ‥‥
矛盾 $`b`$ が言えた。
よって、$`A \Imp \bot`$ が示せた。
つまり背理法により $`\lnot A`$ が言えた(これを $`c`$ とする)。

連言の一部抜き出し select

名前: $`\T{select-left}`$
プロファイル: $`(A\land B \num{a}) \to (A \num{b})`$

日本語翻訳例:
$`A \land B`$ であった。当然に $`A`$ は言える(これを $`b`$ とする)。

$`\T{select-right}`$ も同様、省略。

選言の構成 insert

名前: $`\T{insert-left}`$
プロファイル: $`(A \num{a}) \to (A\lor B \num{b})`$

日本語翻訳例:
$`A`$ であった。当然に $`A\lor B`$ である(これを $`b`$ とする)。

$`\T{insert-right}`$ も同様、省略。

矛盾の構成 mp

否定は $`\lnot A \equiv A \Imp \bot`$ と考える。

名前: $`\T{mp}`$
プロファイル: $`(A\num{a}), (A\Imp \bot \num{b}) \to (\bot\num{c})`$

日本語翻訳例:
$`a`$ であった。ここで $`b`$ を使えば、矛盾が言える(これを $`c`$ とする)。

自明に真 terminal

使う機会はほぼないだろう。

名前: $`\T{terminal}`$
プロファイル: $`(A\num{a}) \to (\top \num{b})`$

日本語翻訳例:
$`a`$ であった。前提に無関係に真は結論できるから、$`{b}`$ が言える。

矛盾からの結論 initial

使う機会はほぼないだろう。

名前: $`\T{initial}`$
プロファイル: $`(\bot \num{a}) \to (A \num{b})`$

日本語翻訳例:
矛盾からは何でも結論できるから、$`{b}`$ が言える。

証明作成と伝達〈コミュニケーション〉方法

正確に証明したいなら、システム〈形式的体系〉(人ではない)の振る舞いを、生きている人間がシミュレーションする。システム(人ではない)は、証明項(あるいは証明図)と導出図を出力できる。そのシステムをシミュレートする行為で、生きている人間も証明項(あるいは証明図)と導出図を出力できる。

証明項(あるいは証明図)と導出図は自然言語〈外部言語〉ではないので、そのままでは、人と人のコミュニケーションには使えない。システムの内部言語を外部言語である自然言語に翻訳する。そのとき、一部の内部言語(よく知られた論理記号とか)は外部言語としてもそのまま使える。

どこまで内部言語を外部言語に混ぜてよいかは、コミュニケーションする相手による。例えば '$`\land`$' を知らない相手なら、日本語「かつ」に置き換える。形式的表現のリテラシーが高い相手なら、内部言語を多く使える。そうでない相手だと、日本語翻訳が多くなる。




以上の内容はhttps://m-hiyama-second.hatenablog.com/entry/2024/06/02/164847より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14