命題論理の言語
概要
このノートでは、2つの記号からなる基本言語を用いて妥当な表現を得るためのメタ言語として、命題論理の言語を考察します。構文規則、命題変数と接続詞の概念、否定結合、括弧の使用と読解のための再配置について説明します。さらに、命題論理表現の発声方法についても触れます。最後に、命題論理の言語を数学と論理学における基本的なツールとして要約し、「基盤の基盤となる言語」を見出す可能性について考察します。
学習目標:
このセクションを完了することで、学生は以下のことができるようになることを目指します:
- 理解する メタ言語の概念と命題論理への応用。
- 把握する 命題論理言語の構文規則。
- 知る 命題変数の概念と表現の構築への活用。
- 理解する 命題論理言語における接続詞と否定結合の使用。
- 習得する 表現の読解を容易にするための括弧と再配置の使用。
- 知る 命題論理の表現の発声方法。
- 要約する 命題論理の言語を数学と論理における基本ツールとして捉える。
- 考察する あらゆるものを再構築できる「基盤の基盤となる言語」を見出す可能性について。
- 応用する 学習した概念を用いて命題論理の表現を構築する。
- 活用する 命題論理の言語を用いて数学的・論理的問題を理解し、解決する。
目次
命題論理の言語:アルファベットと記号列
まずは1つの記号から始めよう
次に2つ目の記号を追加しよう
命題論理の言語:構文
構文チェックの例
表記規則
メタ変数と接続詞 \downarrow
否定結合の使用例
再配置と括弧
派生接続詞
命題論理表現の発声
命題論理の言語に関する要約と考察
すべてを理解するためのマトリックスの背後のマトリックス
命題論理の言語:アルファベットと記号列
まずは1つの記号から始めよう
命題論理の言語を構築するために、最も単純なアルファベット、すなわち1つの記号しか持たないものから研究を始めましょう。その記号の形が何であれ問題ではなく、重要なのは記号がただ一つであるという点です。このアルファベットで記述する場合、記号列同士を区別する唯一の手段は、その記号が何回繰り返されているかという点だけです。したがって、長さが最大で N の記号列が書けるとすると、書ける記号列は N 通りしかありません。このように、このアルファベットは非常に制限されており、それ以上語れることはあまりありません。
次に2つ目の記号を追加しよう
アルファベットに2つ目の記号を追加すると、表現の幅が前のアルファベットよりもはるかに豊かになります。記号の並び方を区別できるようになります。たとえば、0 と 1 が記号であるとすると、01 と 10 を区別できます。両方とも同じ記号を含みますが、順番が異なります。最長で N =1,2,3,\cdots の記号列を書けるとすると、1 文字の列は 2^1=2 通り、2 文字の列は 2^2=4 通り、3 文字の列は 2^3=8 通りといった具合に、一般的には 2^N 通りの長さ N の異なる列が存在します。
演習問題: 長さが 1 から N の間にある、すべての異なる記号列を紙に書き出してください。合計でいくつの列が書けるでしょうか?
解答:
S_N を、長さ 1, 2, 3, …… N のすべての記号列の合計数とすると、以下のようになります:
\displaystyle S_N=2^1 + 2^2 + \cdots +2^{N-1} + 2^N
上の式に2をかけると:
\displaystyle 2 S_N=2^2 + 2^3 + \cdots + 2^N + 2^{N+1}
よって:
\displaystyle S_N=2 S_N - S_N = 2^N-1
したがって、紙に書かれる記号列の総数は 2^N-1 となります。
命題論理の言語:構文
2つの記号があれば、記号列の長さや並び順で区別できることがわかりました。 これは重要なことであり、構文を定義する基盤となります。構文とは、記号列を「表現」と「非表現」に分類するルールの集合です。\mathcal{L}_2 を記号 0 と 1 で構成できるすべての記号列の集合とすると、その構文は \mathcal{SL}_2\subset\mathcal{L}_2 という部分集合として定義されます。
集合 \mathcal{SL}_2 は次の再帰的な規則により定義されます:
- 00, 11 \in \mathcal{SL}_2
- もし \alpha, \beta \in \mathcal{SL}_2 ならば、01\alpha\beta \in \mathcal{SL}_2。
この2つの規則を用いることで、言語の表現を構築し、ある記号列がその言語の表現であるかどうかを確認できます。言語とは、構文が結びついたアルファベットです。ここで定義した言語を 「2記号の基本言語」、または \mathcal{B}_2 と呼びます。
構文チェックの例
これらの概念をより分かりやすくするために、以下の例を確認してみましょう:
例: 0000 と 1111 が \mathcal{SL}_2 に含まれていることから、0100 00 01 0011 01 110000 や 0111111111 も \mathcal{SL}_2 に属しており、よって \mathcal{B}_2 の表現であることがわかります。これは、前述の規則を適用することで示すことができます。
例の終わり \blacksquare
演習問題:前の例では、2つの基本表現から新たな表現を構築する方法を見てきました。この作業自体はそれほど難しくありません。しかし、逆にある記号列が表現であるかどうかを証明する作業は、少し難易度が上がるかもしれません。
以下の記号列が \mathcal{B}_2 の表現であるかどうかを、構文規則を用いて判断してください:
{}012100
101100
{}0100010000
0101000011
{}01010000010000
01010010000100101000011
解答:
解答を見る前に、まずは自分で挑戦してみてください。その後で結果を比較してみましょう。すでに挑戦済みであれば、次に進みましょう 👍
012100.
この記号列には 2 という記号が含まれていますが、これは \mathcal{L}_2 に含まれていません。したがって、この列は \mathcal{SL}_2 に含まれず、\mathcal{B}_2 の表現ではありません。
101100.
この列は 10 で始まっています。構文規則から、長さが2を超えるすべての記号列は 01 で始まらなければならないことがわかります。したがって、これは \mathcal{B}_2 の表現ではありません。
0100010000
この列は 01 で始まっているため、最初の条件はクリアしています。したがって、これが \mathcal{L}_2 の表現であるためには、青色で示された部分が一意に2つの表現に分解できなければなりません。
0100010000
もし構文規則に従っていても、分解が一意でない場合、その構文は曖昧であり修正が必要です。
青色の部分を分析すると、以下のような分解の可能性があります:
00010000 00010000 00010000 00010000 00010000 00010000 00010000 この部分では、もし金色の部分が 0000 や 1111 でなければ、対応する青色の部分は 01 で始まる必要があることに注意する必要があります。そうでなければ、その全体の記号列は表現にはなりません。したがって、次のような候補を除外できます:
0{}0010000❌ 00010000✅ 000{}10000❌ 00010000❌ 00010000❌ 00010000❌ 00010000❌ このため、唯一この分析を通過した分離は 00010000 であり、金色の部分が表現であり、青色の部分が構文に一貫して従って一意に分解されることが確認できます。したがって、記号列 0100010000 は一意かつ構文に従った分解を持ち、0100010000 という形を持つため、\mathcal{B}_2 の表現です。
0101000011
この記号列に対して、次のような色分けによる分離が可能です:
010100001111
構文規則により、長さが2を超える記号列が表現であるためには、01 で始まり、続く部分は2つの表現からなる必要があります。ここではそれぞれ青と金で示しました。この分離は一意であり、青または金の部分の長さを変えると、どちらか一方が表現でなくなるため、分離の妥当性が失われます。
01010000010000
右から左に確認していくと、次のような分離が得られます:
\underbrace{01\underbrace{01\overbrace{00}\overbrace{00}}_{{expresión}}\underbrace{01\overbrace{00}\overbrace{00}}_{{expresión}}}_{{expresión}}
01010010000100101000011
鋭い観察眼を持つ人なら、この記号列の長さが23であることに気付くでしょう。\mathcal{L}_2 の構文規則では、偶数長の記号列を接続して表現を構成するため、奇数長の表現は構築不可能です。したがって、すべての \mathcal{SL}_2 の記号列は偶数長でなければならず、01010010000100101000011 は \mathcal{B}_2 の表現ではありません。
演習の終わり \blacksquare

表記上の取り決め
0と1で作業をすることは、人間の認知にとっては混乱を引き起こす可能性があります。そのため、誤りを犯しやすくなります。人間の認知にとってより親しみやすい形にするために、表記上の取り決めやメタ記号を使用することができます。
メタ変数と接続詞 \downarrow
メタ記号とは、対象言語の記号列を表すために使われる記号のことです。 たとえば、\mathcal{L}_2 の構文 \mathcal{SL}_2 を定義したときに、\alpha と \beta という記号を使って \mathcal{B}_2 の表現を示しました。これらの記号は \mathcal{B}_2 のメタ変数 と呼ばれ、言語のすべての表現で置き換えられるとき、構文規則に従って別の言語表現を生成します。これは \mathcal{SL}_2 の第2規則によって次のように示されます:
もし \alpha,\beta \in \mathcal{SL}_2 ならば、01\alpha\beta \in\mathcal{SL}_2
この理由から、これらのメタ変数は \mathcal{B}_2 のメタ表現 と呼ばれます。
今後の記述を簡素化するために、メタ記号 \downarrow を 01 の記号列の代わりに使うことにします。このメタ記号は 接続詞 として扱われ、意味的な理由により 否定結合(ネゲーション・コンジャンクション) と呼ばれます。
これにより、構文 \mathcal{SL}_2 を以下の再帰規則に従ってメタ言語的に表現できます:
\mathcal{B}_2 のすべてのメタ変数は \mathcal{B}_2 のメタ表現である。
もし \alpha および \beta が \mathcal{B}_2 のメタ変数であるなら、\downarrow\alpha\beta は \mathcal{B}_2 のメタ表現である。
これらの規則により、メタ変数がすべて表現に置き換えられ、接続詞が 0 と 1 で表される形式に従って表現されるとき、\mathcal{B}_2 の表現が得られるようなメタ表現を書くことができます。このようなメタ表現のそれぞれは、\mathcal{B}_2 の無限の表現族、すなわちその構造に一致するすべての \mathcal{B}_2 の表現を表します。これこそが、形式言語(フォーマルランゲージ)を持つという意味です。
否定結合の使用例
例: メタ表現 \downarrow\alpha\downarrow\beta\gamma から、以下のような置換を通じて表現が得られます:
置換 \alpha := 00, \beta := 011100, \gamma := 010011 を行うと、
得られる表現は:
010001011100010011
置換 \alpha := 011100, \beta := 0111011100, \gamma := 0111010011 を行うと、
生成される表現は:
010111000101110111000111010011
メタ表現 \downarrow\alpha\downarrow\beta\gamma は、この形式を満たすあらゆる表現よりも理解しやすく、かつ、そのメタ変数を任意の表現に置き換えることで得られる全ての表現を表します。
例の終わり \blacksquare
あるメタ変数を置き換える場合、その変数が現れるすべての箇所で置き換えを行います。
例: 次のメタ表現を考えてみましょう:\downarrow\downarrow\alpha\beta\downarrow\alpha\gamma
- もし \alpha:=11 と置き換えると、次のようになります:
\downarrow\downarrow 11\beta\downarrow 11\gamma
- さらに \beta:=011100 と置き換えると、結果は:
\downarrow\downarrow 11011100\downarrow 11\gamma
- 続いて \gamma:=011111 と置き換えると、以下のようになります:
\downarrow\downarrow 11011100\downarrow 11011111
- 最後に \downarrow:=01 と置き換えると、次の表現が得られます:
0101110111000111011111
例の終わり \blacksquare
再配置と括弧
この表現がメタ表現であることを確認するのは特に難しいわけではありませんが、メタ記号の数や接続詞 \downarrow の適用範囲に常に注意を払う必要があります。メタ表現の長さが増えるにつれて、この作業は急激に難しくなります。そのため、こうしたものをもっと簡単に検証できる形で表現できないかという問いは妥当であり、実際にそのような方法は存在します。それが、括弧と再配置を用いた表記法です。この方法は、私たちが自然に物事をグループ化する形式により適した表現です。この点を明確にするために、次のメタ表現を確認しましょう:
\downarrow\alpha\downarrow\downarrow\alpha\beta\alpha
これはメタ表現であることを確認するのはそれほど難しくはありませんが、記号の数を数える必要があり、その途中で数を見失うリスクがあります。このリスクはメタ表現の長さが増えるほど高まります。では、同じ内容をもっと読みやすく表現する方法はあるのでしょうか? 実は、そのような方法が存在し、自然なグルーピングに従った構造で表現できます。そのために、括弧と再配置を導入する次の表記上の取り決めを行います:
\downarrow\alpha\beta:=(\alpha\downarrow\beta)
例: メタ表現 \downarrow\alpha\downarrow\downarrow\beta\gamma\delta を考えましょう。括弧と再配置を導入すると、次のように変形されます:
| \downarrow\alpha\downarrow\downarrow\beta\gamma\delta | := | \downarrow\alpha\downarrow(\beta\downarrow \gamma)\delta |
| \downarrow\alpha\downarrow(\beta\downarrow \gamma)\delta | := | \downarrow\alpha((\beta\downarrow \gamma)\downarrow\delta) |
| \downarrow\alpha((\beta\downarrow \gamma)\downarrow\delta) | := | (\alpha \downarrow((\beta\downarrow \gamma)\downarrow\delta)) ✅ |
この最後のメタ表現は、元のものよりもはるかに読みやすく、検証もしやすくなっています。各括弧ブロックは、中央に否定結合があり、両側にメタ表現があるという構造を持つ、明確なメタ表現になっています。
例の終わり \blacksquare
派生接続詞
論理学およびその他の数学分野において、接続詞の特定の組み合わせが頻繁に使用されます。そのため、人間にとってより読み書きしやすいように、以下の記法によって派生接続詞(導出接続詞)が導入されます:
| 否定: | \neg \alpha | := | (\alpha\downarrow\alpha) |
| 包含的論理和: | (\alpha \vee \beta) | := | \neg(\alpha\downarrow\beta) |
| 論理積: | (\alpha \wedge \beta) | := | \neg(\neg\alpha\vee \neg\beta) |
| 含意: | (\alpha \rightarrow \beta) | := | (\neg\alpha\vee \beta) |
| 同値: | (\alpha \leftrightarrow \beta) | := | ((\alpha\rightarrow \beta)\wedge(\beta \rightarrow \alpha)) |
| 排他的論理和: | (\alpha \veebar \beta) | := | \neg(\alpha\leftrightarrow \beta) |
この2記号の基本言語の上に構築されたこのメタ言語こそが、命題論理の0階言語と呼ばれるものです。この言語を通して、命題論理のすべての表現が正確かつ曖昧さのない形で表されます。
命題論理表現の発声
論理を扱う上で必須というわけではありませんが、私たちのコミュニケーションは書かれた記号だけでなく、自然言語で物事を声に出して伝える傾向もあります。そこで、命題論理の言語における各表現には、それに対応する発声(読み方)が存在し、論理的な意味と調和するように工夫されています。以下にその発声の例を示します:
| (\alpha \downarrow \beta) | 「\alpha でも \beta でもない」 |
| \neg \alpha | \alpha の否定 |
| (\alpha \vee \beta) | \alpha または \beta |
| (\alpha \wedge \beta) | \alpha かつ \beta |
| (\alpha \rightarrow \beta) | \alpha は \beta を含意する |
| (\alpha \leftrightarrow \beta) | \alpha ならば、かつ、のみならば、\beta |
| (\alpha \veebar \beta) | \alpha か \beta のどちらか一方(ただし両方ではない) |
命題論理言語の総括と考察
この最後の部分をもって、命題論理言語の構築が完了します。これは、2記号の基本言語において妥当な表現を導くためのメタ言語として要約することができます。命題論理の言語は形式言語であり、基本言語における表現の構造(すなわち形式)を定め、各表現が基本言語の無限の表現族の形式を定義することになります。すでに述べたように、形式言語の構文は非常に厳格ですが、その代わりに極めて正確かつ明確であり、曖昧さが存在しません。
すべてを理解するためのマトリックスの背後のマトリックス
最後にひとつだけ。命題論理と数学は、その多くが命題論理に依存しており、命題論理自体は 0 と 1 からなる基本言語の上に構築されています。では、私たちはこれによって論理や数学の背後にある「マトリックス」にたどり着いたのでしょうか?その可能性はあります。しかし同時に、基本言語のさらに背後にある「より基本的な言語」を考えることもできます。その言語を用いれば、あらゆるものを再構築できるかもしれません。ただし、そのような言語を見つけるためには、「順序」や「量」といった、最初の基本言語の構築に使われた概念よりも、さらに根源的な概念を見出す必要があります。
基本のさらに基本となる言語を見出すことは、「物事を理解するとはどういうことか」という、最も根本的な問いについての省察を意味します。より深く掘り下げ、根底にまでたどり着ければ、「すべてを理解するためのマトリックスの背後のマトリックス」を見たと言えるかもしれません。そしてこの基盤化のプロセスは無限に続けることも可能であり、各段階ごとに理解の深さが新たな層として加わっていくのです。
命題論理言語の総括と考察
この最後の部分をもって、命題論理言語の構築が完了します。これは、2つの記号からなる基本言語において妥当な表現を導くことを可能にするメタ言語としてまとめられます。命題論理言語は形式言語であり、基本言語内の表現の構造(つまり形式)を定義し、その各表現は、基本言語内で無限に広がる表現族の形式を定めるものです。前述したように、形式言語の構文は極めて厳格ですが、その分、明確で正確であり、曖昧さが存在しません。
すべてを理解するためのマトリックスの背後のマトリックス
最後にひとつ。命題論理、そして数学そのものは、命題論理に大きく依存しており、その命題論理は0と1で構成される基本言語の上に築かれています。では、私たちはこの仕組みを通して、論理と数学の背後にある「マトリックス」に到達したのでしょうか?そうかもしれません。
けれども、さらにその基本言語の「基盤」となる別の言語を考えることも可能です。そのような言語からは、他のすべてを再構築できるかもしれません。しかし、そのような「言語の基盤となる言語」を見つけるには、「順序」や「数量」といった、最初の基本言語を構築するために使われた概念よりも、さらに根本的な概念を発見する必要があります。
この「基盤の基盤」を見つけることは、「物事を理解するとは何か」という、より根源的な問いへの省察を必要とします。もしあなたがこの問いを深く掘り下げ、その核心に到達できたとしたら、それは「すべてを理解するためのマトリックスの背後のマトリックス」を見たと言えるかもしれません。そしてこの基盤化のプロセスは、無限に続けることもでき、そのたびに知識の深さに新たな層が加わっていくのです。
