基本的には logic は proposition が基本的な unit です。
proposition には truth value があり、 truth value は常に true, false の値を持ちます。
そして、関連する基本的な proposition の組み合わせに枠を持たせます。
その proposition - truth value の対応表を truth table といいます。
また、この枠を基本論理結合子といいます。
二進数は 0, 1 の二つの keyword を扱い数値を表現します。
この特性をいかしlogic での proposition の truth value である TRUE = 1, FALSE = 0 に置換し考慮します。
この proposition は複合されています。
基本的な proposition は次の二つです。
この二つの proposition の結合子は「かつ」です。つまり、
「金津新兵衛 氏は人間である」かつ「金津新兵衛 氏は日本人である」
これで複合 proposition と同意になります。
結果、
proposition「金津新兵衛 氏は人間で日本人である」
は
proposition「金津新兵衛 氏は人間である」
かつ
proposition「金津新兵衛 氏は日本人である」
となります。
これを抽象化します。
proposition Z「金津新兵衛 氏は人間で日本人である」
は
proposition A「金津新兵衛 氏は人間である」
かつ
proposition B「金津新兵衛 氏は日本人である」
です。
proposition Z は proposition A かつ proposition B です。
proposition Z を proposition A かつ proposition B で表せるとき
といいます。
また A かつ B ですから、A と B の truth value が true の時のみ Z の truth value は true になります。
Z と A, B の truth table です。
conjunction truth table
|
conjunction truth table [binary]
|
この論理積の式は一般に次式で表します。
この場合だと Z=A・Bになります。
また、論理積は一般に AND といわれています。
[まとめ]
conjunction (論理積) は AND ともいい、論理式は A・B で表します。
つまり AとBがともに 1 のとき結果が 1 になります。
この proposition は複合されています。
基本的な proposition は次の二つです。
この二つの proposition の結合子は「または」です。つまり、
「この匂いは curry である。」または「この匂いは うどん である。」
これで複合 proposition と"大体"同意になります。
完全なる同意には、もう一つの概念が入ってきます。
憶測なら、他にも人生の経験則から案ずるものがあるかもしれないですね。
しかし、それは立脚点が間違いです。
大もとの proposition は「この匂いは curry か うどん である」です。
この 複合的な proposition からの基本 proposition は、それらからは成り立ちません。
これで複合 proposition と同意になります。
結果、
proposition「この匂いは curry か うどん である」
は
proposition「この匂いは curry である。」
または
proposition「この匂いは うどん である。」
または
proposition「この匂いは curry である。」と proposition「この匂いは うどん である。」
となります。
これを抽象化します。
proposition Z「この匂いは curry か うどん である」
は
proposition A「この匂いは curry である。」
または
proposition B「この匂いは うどん である。」
または
proposition A「この匂いは curry である。」と proposition B「この匂いは うどん である。」
です。
proposition Z は 「proposition A」 または 「proposition B」 または 「proposition A と proposition B」 です。
これは置き換えると次と同じです。
proposition Z は proposition A か proposition B か proposition A と B です。
これを
といいます。
また A か B か A と B ですから、A と B の truth value が false の時のみ Z の truth value は false になります。
Z と A, B の truth table です。
disjunction truth table
|
disjunction truth table [binary]
|
この論理和の式は一般に次式で表します。
この場合だと Z=A+Bになります。
また、論理和は一般に OR といわれています。
[まとめ]
disjunction (論理和) は OR ともいい、論理式は A+B で表します。
つまり AとBがともに 0 のとき結果が 0 になります。
この proposition は複合されています。
基本的な proposition は次の二つです。
この二つの proposition の結合子は「あるいは」です。つまり、
「宝くじは当たりである。」あるいは「宝くじは外れである。」
これで複合 proposition と同意になります。
結果、
proposition「宝くじは当たりか外れである。」
は
proposition「宝くじは当たりである。」
あるいは
proposition「宝くじは外れである。」
となります。
これを抽象化します。
proposition Z「宝くじは当たりか外れである。」
は
proposition A「宝くじは当たりである。」
あるいは
proposition B「宝くじは外れである。」
です。
proposition Z は proposition A あるいは proposition B です。
proposition Z を proposition A あるいは proposition B で表せるとき
といいます。
また A あるいは B ですから
になります。
Z と A, B の truth table です。
exclusive disjunction truth table
|
exclusive disjunction truth table [binary]
|
この排他的論理和の式は一般に次式で表します。
申し訳ありません。通常は+記号を○で囲むのですが、JIS に文字がありません。
Graphic で表現をしようかと考えましたが、[+]で代用する事にしました。
[+]は、著者が作り出した、規定外の文字です。
読者の方々は+記号を丸で囲むようにお願いします。
この場合だと Z=A[+]Bになります。
また、排他的論理和は一般に Exclusive OR といわれています。
[まとめ]
Exclusive disjunction(排他的論理和) は Exclusive OR ともいい、論理式は A[+]Bで表します。
つまり AかBのどちらかが 1 のときだけ結果が 1 になります。
Negation はちょっと特殊です。
Negation は複合ではありません。
新しい proposition を用意します。
proposition N :
「この色は赤色ではない。」
大元の proposition 「この色は赤色である。」を proposition Z とします。
このとき proposition Z と proposition N の関係に成り立つのが negation です。
この関係を
といいます。
また N は Z の否定ですから
になります。
Z と N の truth table です。
negation truth table
|
negation truth table [binary]
|
この否定の式は一般に次式で表します。
_ N |
もうしわけありません。
この記号は正しいのですが、表示が無理矢理で再現しておりますので、
今後否定記号を ! (exclamation mark) で表現したいと思います。
つまり
でお願いします。
_
N
= !N
この場合だと Z=!Nになります。
また、否定は一般に NOT といわれています。
[まとめ]
negation(否定) は NOT ともいい、論理式は !N で表します。
つまり bit 反転 になります。
NAND
|
となります。
ただし、注意として"!"は数学でいう展開はできません。
例えば次のように
この三つは数学などの展開に近い形ですが、
と異なります。つまり出力される結果が全て異なります。
これらの式が意味する事は、それぞれ次の通りです。
!A・!B=Z は"Aの否定"と"Bの否定"の conjunction が出力になります。
!A・B=Z は"Aの否定"と"B"の conjunction が出力になります。
A・!B=Z は"A"と"Bの否定"の conjunction が出力になります。
そうすると truth table は次のようになります。
!A・!B
|
!A・B
|
A・!B
|
[まとめ]
NAND はAND の結果に NOT で出力したもので論理式は !(A・B)で表します。
A と B が 1 のときだけ 0 になります。
NOR
|
となります。
ただし、論理式ですので、"!"は数学でいう展開はできません。
NAND と同様に例を確かめてみます。
!A+!B=Z は"Aの否定"と"Bの否定"の disjunction が出力になります。
!A+B=Z は"Aの否定"と"B"の disjunction が出力になります。
A+!B=Z は"A"と"Bの否定"の disjunction が出力になります。
そうすると truth table は次のようになります。
!A+!B
|
!A+B
|
A+!B
|
[まとめ]
NOR はOR の結果に NOT で出力したもので論理式は !(A+B)で表します。
A と B が 0 のときだけ 1 になります。
これを truth table から確認します。
!A・!B
|
!(A+B)
|
!A+!B
|
!(A・B)
|
(00),(01),(10),(11)
もう気付かれたでしょうか。
これを十進数表記にすると次の通りです。
(0),(1),(2),(3)
AとBが 1 bit ならば A と B 二つの組み合わせ(variation) は二進数を 0〜3 まで記述するとできます。
抽象化し答えを導きます。
「1つの要素の variation が N 存在し B 個の要素の全組み合わせは N の B 乗通り存在する。」
ここでの要素の variation とは keyword を意味します。
二進数なら 0, 1 で N = 2 です。
十進数なら 0〜9 で N = 10 です。
要素とはここでは A, B の数です。
つまり 要素数2が A,B で、1つの要素のvariation が1 bit で2つです。
全組み合わせは 2の2乗=4通りになります。
truth value は true, false の要素の variation が二つですから二進数と同じです。
dial式のkeyを例に考えてみます。
5 つの dial がついています。
dial には 0 〜 9 までの番号があります。
この全組み合わせは何通りかを確かめます。
要素数は 5 つです。
1つの要素の variation は 0〜9 の 10 個です。
よって 10の5乗で 100000 通りの組み合わせがあります。
ではもう一つ例題です。
単純に true, false の組み合わせを考えます。
要素の数は A, B, C の三つです。
組み合わせは 2 の 3 乗通りです。
truth table に組み合わせを記述してみます。
C | A | B | CAB [bin] | CAB [dec] |
0 | 0 | 0 | 000 | 0 |
0 | 0 | 1 | 001 | 1 |
0 | 1 | 0 | 010 | 2 |
0 | 1 | 1 | 011 | 3 |
1 | 0 | 0 | 100 | 4 |
1 | 0 | 1 | 101 | 5 |
1 | 1 | 0 | 110 | 6 |
1 | 1 | 1 | 111 | 7 |
例えば設計した論理式が羅列すると
!A+!B+B+A+!B・!A
だったとします。
!A+!B+B+A+!B・!A
まず、根本的に論理は間違っていないと仮定して話を進めます。
この式は
=!(A・B)+(C+!C)
=!(A・B)+1
この時点で 1 が出てきています。
そのまえに + 1 の意味を説明します。
例えば
T + 1
この意味は A がどんな value であっても 1 と OR を取るという意味になります。
つまり truth table は次のようになります。
|
|
……というように、最適化(簡略化)できるだけではなく、間違いもある程度確認できます。