ブ?ル論理 (ブ?ルろんり、 英 : Boolean logic )は、 古典論理 のひとつで、その名?は ブ?ル代? ないしその形式化を示した ジョ?ジ?ブ?ル に由?する。
リレ?などによる「スイッチング回路の理論」として1930年代に再?見され( 論理回路#?史 を?照)、間もなくコンピュ?タに不可欠な理論として?まり、今日では一般的に使われている。
本項目では、 集合代? を用いて、 集合 、ブ?ル演算、 ベン? 、 ?理値表 などの基本的解?とブ?ル論理の?用について解?する。 ブ?ル代? の記事ではブ?ル論理の公理を?足する 代?的構造 の型を?明している。ブ?ル論理はブ?ル代?で形式化され2値の意味論を?えられた 命題論理 とみることができる。
X を集合としたとき:
集合 A には普遍集合の中の全ての偶?(2の倍?)が含まれ、集合 B には同じ普遍集合の中の全ての 3 の倍?が含まれるとする。そのとき、これらの集合の 共通部分 (A AND B の集合の全ての元)は、その普遍集合の中の全ての6の倍?が含まれる。
集合 A の補集合(NOT A に含まれる全ての元)は、その普遍集合の全ての奇?となる。
たかだか2つの集合に?してブ?ル演算を行い、その演算によって形成された新たな集合と別の集合に?して新たなブ?ル演算を適用することができる。上の例で言えば、普遍集合の全ての 5 の倍?を含む集合 C を新たに定義する。ここで「集合 A AND B AND C」は、その普遍集合の全ての30の倍?を含む。記述を?純化するため、集合 A と B の共通部分を AB と記したり、6の倍?の集合を導入したりする。そうすると「集合 AB AND C」は、同?に全ての30の倍?を含む。このようなステップをさらに進めていくこともでき、この演算の結果として集合 ABC を定義することもできる。
任意個の論理積(AND)の連鎖には曖昧さは全くないが、AND と OR と NOT が組み合わされると曖昧な場合が出てくる。そのような場合に演算の順序を明確化するために括弧を使うこともある。通常、最も?側の括弧?の演算が最初に?行され、順次外側に移っていく。
2つの二項演算子の記?を ∧ / ∩ {\displaystyle \land /\cap } (論理積/AND/共通部分)と ∨ / ∪ {\displaystyle \lor /\cup } (論理和/OR/和集合)とし、?項演算子の記?を ¬ {\displaystyle \lnot } / ~ (論理否定/NOT/補集合)とする。また、値 0 (?/空集合)と 1 (?/普遍集合)も使用する。ブ?ル代?とブ?ル論理では以下のような法則が成り立つ。
最初の3つの法則が 束 を定義し、最初の5つの法則が ブ?ル代? を定義する。
0 と 1 という2つの値のみを使ったブ?ル論理で、それらの値の共通部分と和集合を ?理値表 で定義すると次のようになる:
ブ?ル論理の表記に使われる記?は、目的や?術分野、あるいは文化?などによってさまざまである。まず、英?語にもとづく AND、OR、NOT といった一群がある。 ??者 や 技術者 は OR の代わりに +、AND の代わりに ⋅ {\displaystyle \cdot } を使うことが多い(これらの演算子は他の 代?的構造 での加算や?算と性質が似ており、通常の代?に詳しい者にとっては 選言標準形 を理解しやすいため)。NOT は式の上に線を引いて表すこともある。
プログラマ は、AND を表現するのに & ( アンパサンド )、OR を表すのに | (パイプ記?)を使うことが多い。これらの記?は プログラミング言語 で ビット演算 の演算子として使われていることが多い。NOT は ! ( 感嘆符 )で表されることが多く、!= などの派生もある。
(ブ?ル論理に限った話ではないが)論理式をそのまま自然言語にすると、しばしば、同じ言葉の日常での意味と異なっていたり、曖昧だったりすることがあるため注意が必要である。
日本語の場合の例をいくつか?げる。自然言語の「朝食にはパンか御飯を食べることができる」の「パンか御飯」は、そのまま解?すればORだが、普通は 排他的論理和 すなわち「パンか御飯のどちらかを選ぶことができる」の意味であることが多い。曖昧な例としては「全ての輝くものが金ではない」という文は「輝くものは全て金ではない」(全否定)とも「輝くものには金でないものもある」(部分否定)とも解?できる。
CG業界用語でその名も「 ブ?リアン演算 」と呼ばれているものであるが、立?などの?形を集合としてとらえる??的な手法をそのまま工?的に?用したもので、かつそのまま具?化される点で、直?的にわかりやすい?用のひとつである。
ブ?ル論理は 論理回路 の設計にも使われる。その場合、0 と 1 は ディジタル回路 での ビット の異なる2つの?態を表し、 電? の高低に??させることが、現代では多い(必ずしもそうしなければならないわけではない)。回路は??を含む式で表され、??が回路の入力、式を評?した結果が回路の出力に相?する。入力と出力の??が完全に?えられれば、それをブ?ル論理の式で表現することができる。
ANDゲ?ト 、ORゲ?ト、NOTゲ?トのような基本 論理回路 だけを使うこともできるが、 NANDゲ?ト 、 NOR ゲ?ト、 XOR ゲ?トなども組み合わせてディジタル回路を構成することができる。組み合わせ方は、 演算子の優先順位 に?って 直列や?列 に結合する。
デ?タベ?ス管理システム 等によるデ?タベ?スの操作は、各デ?タベ?スを集合、クエリ結果などを部分集合、デ?タベ?スに含まれる個?のデ?タを集合の要素とみなすと、ある種、集合の操作のようなものとみなすことができる。特に ?係デ?タベ?ス は、デ?タベ?スの操作が集合代?にもとづき整理?定義されているデ?タベ?スである( ?係代? (?係モデル) )。以下では、?係デ?タベ?スの代表的なクエリ言語であるSQLの具?例を示す。
SELECT 文の例を示す。
複?のブ?ル演算がある場合、括弧を使って演算の順序を制御することもある:
必要に?じて括弧をいくつも入れ子にすることも可能である。複?の表をブ?ル演算で組み合わせることを 結合 と呼ぶ。
?索エンジン に代表される、?索を行なうネットサ?ビスでも、ブ?ル演算にもとづく?索式が使えるものがある。例として、 Google ?索のものを示す。
カッコは使えない。
( Google Scholar では "OR" を使うと排他的論理和(XOR)の操作が行われる) [ 要出典 ]