数学とプログラミングとくだらないこと

プログラミングの事とか数学のこととかを書いていきます。

一階命題論理の統語論

統語論って何って話は、自分なりの理解を統語論と意味論ってなんなのかってのを以前書いた。(間違ってるかもしれんが仕方ない。) 今日はこの統語論について読んだ内容を書いて行こうと思う。

論理式に使われる記号

証明に表れる命題は、記号論理学では論理式に置き換えられる。 普通は、命題を、否定、連言、選言、含意、同値という形式の命題の組み合わせで表すが、これらの命題は、以下のように記号を使って論理式に書き換えられる。(以下、φψは命題)

  1. 否定(φではない): ¬φ
  2. 連言(φかつψ): φψ
  3. 選言(φまたはψ): φψ
  4. 含意(φならばψ): φψ
  5. 同値(φのとき、またそのときのみψ): φψ

ここに、真と偽を直接記述できる論理式を表すために、記号として以下のような零項真理関数というものをあつかう。

  1. 真: true()
  2. 偽: false()

命題の中には、それ以上分けられない(たぶん「それ以上分解したら文という形をなさない」という意味)命題が存在する。これを原子命題と呼ぶ。論理式の中に直接文を書くのは紛らわしいので、原子命題は命題記号というものに置き換えられる。

一階命題論理で使う記号は以上である。つまり、一階命題論理では命題記号とture()、false()、¬、∧、∨、→、↔という記号を使って、命題を論理式に書き換える。

一階命題論理はどう書くのか

では、この記号をどう使うのか、というはなし。 どうかけば論理式になるのかというと、 以下のような定義になるらしい

  1. 命題記号は論理式である
  2. ρがn項真理関数であり、(φ1,...,φn)が命題記号のn個組なら、 ρ(φ1,...,φn)は論理式である
  3. これ以外は論理式ではない

true()、false()は零項真理関数であり、¬は一項真理関数、∧、∨、→、↔は二項論理関数と定義されている。 また、∧、∨、→、↔は、∧(φ, ψ)というような書き方をせずにφψと書いているが、こういった書き方を中置記法と言って、2項真理関数は大抵こういった書き方をする。

真理関数の間には、優先順位があって、次のとおりである。

  1. ¬
  2. ∧, ∨

また、→は右結合といって、右側から順にくくって行く。つまり、P→Q→Rという論理式は、P→(Q→R)と同じである。

おわり

以上で論理式が書けるはず。 ところで、任意のn項真理関数がここに出てきた論理式で全部書けちゃう話は意味論ができるまでできないのかな?