プログラム的な両刀論法の証明 by ddt³さん [ひとこと言わねば]
プログラム的な両刀論法の証明 by ddt³さん
ddt³さんからコンピュータのプラグラム的解答をいただいたので、それを紹介します。
昔の最も単純なコンピュータのCPUは論理記号の「かつ(and)」、「または(or)」、「ない(not)」などの論理回路から構成されていたことから明らかなように、コンピュータと論理(計算)の間には切っても切れない深い関係がある。0(False)と1(True)の2進数を使うコンピュータの計算原理は、論理(計算)そのものだにゃ。
だから、ddt³さんのようなこうした回答があっても然るべきだと思う。
論理回路
論理回路を実際に組み立て、電流を流すことによって、これを証明することだってできる。
マリオメーカー(って何だ(・・?)を使って証明することだってできるかもしれない(^^ゞ
>
たとえば、これは次のような命題である。
「ネムネコに遭遇すると、お前らはネコパンチをくらう」
「ブラゲロ・マムシに遭遇すると、お前らは毒を吐かれる」
「ネムネコに遭遇するか、プラゲロ・マムシに遭遇するかである」
ゆえに、
「お前らはネコパンチを食らうか、毒を吐かれる」
>
じつはこれ、構文論的証明なんですよね(^^)。ここでの原始命題a,b,c,・・・は、a⇒b:「ネムネコに遭遇すると、お前らはネコパンチをくらう」などですが、構文論で重要なのは個々の「原始命題の意味」ではなく、「論理の流れの意味」です。ただしこれは実際上の話で、理屈の上では構文論的証明は「意味」に関わる事無く機械的に行えます。以下で、 _ は継続行マーク, [・・・]はコメント行を表します。
(Main開始)
((a⇒b)∧(c⇒d)∧(a∨c))⇒(b∨d)を示す。
(a⇒b)∧(c⇒d)∧(a∨c)を仮定する。
(sub-1呼び出し,sub名:補助仮定の方法)
(引数:Aを仮定してBを導ければ、 _
A⇒Bは真。)
[(a⇒b)∧(c⇒d)∧(a∨c)を仮定した。]
(sub-2呼び出し,sub名:論理積の分解法則)
(引数:A∧B∧C∧・・・が真なら、 _
A,B,C,・・・は同時に真。)
(sub-2復帰)
(a⇒b),(c⇒d),(a∨c)は同時に真。
(sub-1呼び出し)aを仮定する。
[(a⇒b),(c⇒d),(a∨c)は同時に真。]
aと(a⇒b)は同時に真。
(sub-4呼び出し,sub名:三段論法)
(引数:AとA⇒Bが同時に真なら、 _
Bは真。)
(sub-4復帰)
bは真。
b⇒(b∨d)は公理(要するに真)。
(b∨d)は真(sub-4を呼び出して復帰)。
(sub-1復帰)
a⇒(b∨d)は真。
(sub-1呼び出し)cを仮定する。
[(a⇒b),(c⇒d),(a∨c)は同時に真。]
cと(c⇒d)は同時に真。
dは真(sub-4を呼び出して復帰)。
d⇒(b∨d)は公理(要するに真)。
(b∨d)は真(sub-4を呼び出して復帰)。
(sub-1復帰)
c⇒(b∨d)は真。
[a⇒(b∨d)とc⇒(b∨d)は同時に真。]
(sub-5呼び出し,sub名:場合分けの方法)
(引数:A⇒CとB⇒Cが同時に真なら、 _
(A∨B)⇒Cは真。)
(sub-5復帰)
(a∨c)⇒(b∨d)は真。
[(a⇒b),(c⇒d),(a∨c)は同時に真だった。]
(a∨c)は真。
(b∨d)は真(sub-4を呼び出して復帰)。
(sub-1復帰)
[(a⇒b)∧(c⇒d)∧(a∨c)を仮定していた。]
((a⇒b)∧(c⇒d)∧(a∨c))⇒(b∨d)は真。
(Main終了)
・・・となります(^^;)。
絶対に構文論的証明が、プログラミングの原型だと思えるんですよね(^^)。
(by ddt³さん)
コメント 0