「一階述語論理」の版間の差分

削除された内容 追加された内容
編集の要約なし
編集の要約なし
7行目:
:ソクラテスは人間である。
:したがってソクラテスは死ぬ。
一階述語論理では、このような「すべての…について」という表現や、また「ある…について」といった表現を扱えるように、'''全称量化記号''' (universal quantifier) と呼ばれる記号 ∀ と'''存在量化記号''' (existential quantifier) と呼ばれる記号 ∃ が新たに導入される。これらを用いると「すべての ''x'' について φ である」という命題は ∀''x''φ 、「ある ''x'' に対して φ である」は ∃''x''φ と表される。「すべての ''x'' について」といったときの ''x'' が動きうる値の範囲を'''議論領域'''あるいは'''領域''' (universe, domain) と呼ぶ。一般に、一階述語論理の論理式は議論領域と呼ばる空でない集合と各ぞれの'''非論理記号'''(述語記号・関数記号・定数記号)の''解釈''に意味を与えることによって真偽を決定することができる。一階述語論理を改良することによって、議論領域を種 (sort) ごとに分割し、それぞれの領域上を動く種別の変数を導入することもできる(詳細は「[[多種論理]]」を参照)。
 
二階述語論理(およびそれ以上の高階述語論理)では、述語および関数に対する量化を導入する。例えば、同一性 (equality) は二階述語論理において、''x'' '''=''' ''y'' =<sub>''def''</sub> &forall;''P''(''P''(''x'') &harr; ''P''(''y'')) と定義できる。述語や関数に対する量化は一階述語論理では許されない。
 
一階述語論理は、数学のほぼ全領域を形式化するのに十分な表現力を持っている。実際、現代の標準的な集合論の公理系 [[公理的集合論|ZFC]] は一階述語論理を用いて形式化されており、現代の数学の大部分はZFCでそのように形式化するされた ZFC の中で行うことができる。すなわち、数学の命題は一階述語論理の論理式によって記述することができ、そのように論理式で記述された数学の定理には ZFC の公理からの'''形式的証明'''が存在する。このことが一階述語論理が重要視される理由の一つである。この他に[[ペアノの公理|ペアノ算術]]のように単独で形式化される理論もある(ただし、それらは集合論内で形式化することもできる)。
 
<!-- == 一階述語論理の定義 ==
述語論理は以下の要素から構成される。
* 形成規則([[整論理式]]を形成するための[[再帰的定義]])
24行目:
 
述語論理の表現方法はひとつに限定されない。ここで用いる公理や推論規則は必ずしも規範的な例ではなく、同一の論理を別の形式で表現することも可能である(その場合、与えられた公理から同じ定理が導出される)。
-->
== 一階の言語 ==
一階述語論理の言語('''一階の言語''')は次のものからなる:
:'''論理記号''' (logical symbol)
:# '''変数'''(あるいは'''個体変数''')と呼ばれる記号の集合: ''V'' = { ''x''<sub>1</sub> , ''x''<sub>2</sub> , ... }
:# '''結合記号''': &not; , &and; , &or; , &rarr; , &harr;
:# '''量化記号''': &forall; , &exist;
:# '''括弧''': '''(''' , ''')'''
:# '''等号''': '''=''' (含まなくてもよい。)
:'''非論理記号''' (nonlogical symbol)
:# '''述語記号'''と呼ばれる記号の集合(空集合でも無限集合でもよい)。各述語記号には'''アリティ'''と呼ばれる正の整数が一つ対応しているものとする<ref>「[[引数|アリティ]]」という用語は通常、[[二項関係|関係]]や[[写像|関数]]がとる変数の個数を表す言葉として用いられるが、ここでの意味はそれとは異なることに注意しなければならない。述語記号や関数記号は単なる'''記号'''であって関係や関数ではなく、アリティというのはそれらの記号が持っているある正の整数という意味にすぎない。</ref>。
:# '''関数記号'''と呼ばれる記号の集合(空集合でも無限集合でもよい)。各述語記号にもアリティが備わっているとする。
:# '''定数記号'''と呼ばれる記号の集合(空集合でも無限集合でもよい)。
 
等号はアリティ 2 の特別な述語記号として扱われる。一階の言語は、それが等号を持つかどうか、非論理記号に何を持っているかを決めることによって定まる。例えば集合論においては、等号を持ち、非論理記号としてはアリティ 2 の述語記号 &isin; だけをもつ一階の言語('''集合論の言語''')が使われる。以下に一階の言語について、いくつかの注意を述べる。
== 語彙 ==
* 等号 '''=''' はアリティ 2 の特別な述語記号として扱われる。どの一階の言語にも等号を含めて少なくとも一つは述語記号が含まれていなけらばならないものとする。
# '''個体定項'''の集合。一般に次のような小文字 ''a'', ''b'', ''c'', ... で表される。
* アリティ ''n'' の述語(関数)記号を、''n'' 変数述語(関数)記号と呼ぶこともある。
# '''個体変項'''の無限集合。一般に次のような小文字 ''x'', ''y'', ''z'', ... で表される。
* いくつかの結合記号や量化記号は言語にもともと含まれている記号ではなく、省略記法として定義によって導入される場合がある。例えば、&harr; は言語に含まれず、 (&phi; &harr; &psi;) は (&phi; &rarr; &psi;) &and; (&psi; &rarr; &phi;) を表すものとして定義される場合もある。上の論理記号すべてを用いて表現される命題は、例えば &not;、&and;、&forall; だけを用いても十分に表現できることが知られている。
# '''関数記号'''の集合。各々1以上の[[アリティ]](引数の数)を持つ。一般に次のような小文字 ''f'', ''g'', ''h'', ... で表される。
* 文献によっては、&rarr; の代わりに &sup; を用い、&forall; の代わりに &Pi; を用いている場合がある。
# '''述語記号'''の集合。各々1以上のアリティを持つ。一般に次のような大文字 ''P'', ''Q'', ''R'', ... で表される。
* 同一性関係を一階述語論理の一部とみなす場合もある。その場合、等号は必ず言語に含まれることになる。常に等号が含まることを仮定した一階述語論理'''等号付き一階述語論理'''と呼ぶ。
# 論理演算記号: &not;([[否定]])、&and;([[論理積]])、&or;([[論理和]])、&rarr;([[論理包含演算|含意]])、&harr;([[同値]])
* 定数記号はアリティ 0 の関数記号と呼ばれることもある。
# 量化子記号: &forall;([[全称記号]])、&exist;([[存在記号]])
* 上の定義では述語は少なくとも 1 以上のアリティを持つとされているが、アリティ 0 の述語も考えることができ、それらは「真」や「偽」を意味するものと考えることができる。しかし「真」は &forall;''x''(''x'' '''=''' ''x'') などと別の方法で表せるので、アリティ 0 の述語を導入することに大きな意味はない。
# 左右の括弧: (, )
* 括弧の使い方の流儀は様々である。ある人は &forall;''x'' を '''('''&forall;''x''''')''' と書く。括弧の代わりにコロンや終止符を使う場合もある。もちろんその場合には、言語にコロンや終止符を含めておく必要がある。非常に珍しい表記法として括弧を全く使わずに[[ポーランド記法]]を使用する場合がある。これは、&and; や &or; を先頭に書いて引数 &phi; &and; &psi; &and; &phi; &psi; のよう続けるである。ポーランド記法はコンパクトで美し数学的に取り扱のだやすいという利点があるが、可読性が低いためにほんど使われなう欠点がある
# 等号 = は、場合によっては語彙に含まれる(常に含まれるわけではない)。
 
== 項と論理式 ==
細かいバリエーションとして、以下のようなものがある。
一階述語論理の'''項''' (term) は次のように帰納的に定義される:
* いくつかの記号は原始要素ではなく、省略記法とみなされる場合がある。例えば、(''P'' &harr; ''Q'') は (''P'' &rarr; ''Q'') &and; (''Q'' &rarr; ''P'') を略記したものとみなすこともできる(つまり同じ意味である)。最低限必要な記号は三種類(NOR や NAND を定義するなら二種類)であり、例えば &not;、&and;、&forall; で十分である。
# 変数と定数記号はすべて項である。
* 古い本などでは、&phi; &rarr; &psi; を &phi; &sup; &psi; と表記し、&forall;''x''&phi; を &Pi;''x''&phi; と表記している場合がある。
# ''t''<sub>1</sub> , ..., ''t''<sub>''n''</sub> が項であるとき[[''f'' がアリティ]] ''n'' &ge; 1 の関数 ''f'' を用いて作記号なれる式 ば、''f''('' t''<sub>1</sub>, ..., ''t''<sub>''n''</sub>) は項である。このとき、<ref>読みやすさを優先させて ''f t''<sub>1</sub>, ..., ''t''<sub>''n''</sub> それぞれ自由変項が、代わりに ''f'' '''('''''t''<sub>1</sub>, ..., ''t''<sub>''n''</sub>''')''' を用いる流儀も存在する。そ自由変項とな場合は言語にカンマ "," を含めておく必要があ。</ref>
* 同一性関係を一階述語論理の一部とみなす場合もある。その場合、等号も含まれることになる。これを「'''等号付き一階述語論理'''」と呼ぶ。
# 上記の 1. と 2. によって項とされるものだけが項である。
* 個体定項はアリティ0の関数と同一視できる。そのため、個体定項を無くして、関数が任意(0を含む)のアリティを持てるように定式化することもできる。しかし、一般に関数が必ず1以上のアリティを持つとした方が便利である。
項というのは直観的には議論領域に属するある対象をあらわす"名詞"の役割をもった記号列である。
* 上の定義では、述語は少なくとも1以上のアリティを持つとされている。アリティ0の述語も考えることができ、それらは「真」や「偽」を意味するものと考えることができる。しかし「真」は &forall;''x''(''x'' = ''x'') などと別の方法で表せるので、アリティ0の述語を導入することに大きな意味はない。
* 括弧の使い方の流儀は様々である。ある人は &forall;''x'' を (&forall;''x'') と書く。括弧の代わりにコロンや終止符を使う場合もある。非常に珍しい表記法として括弧を全く使わずに[[ポーランド記法]]を使用する場合がある。これは、&and; や &or; を先頭に書いて引数を後に続ける書き方である。ポーランド記法はコンパクトで美しいのだが、可読性が低いためにほとんど使われない。
* 技術的には、アリティ2の関数が順序対を表している場合(あるいはアリティ2の述語が順序対の射影関係を表現している場合)、アリティ3以上の関数や述語を省くことができる。もちろん、その順序対や射影は自然な公理を満足するものでなければならない。
 
例: '''群論の言語'''は等号を持つ一階の言語で、非論理記号として 2 変数関数記号 '''·''' と定数記号 '''0''' を持つ。定義より、
個体定項の集合、関数の集合、述語の集合は一般に'''言語'''を構成するが、変項や論理演算子や量化子は論理そのものに属する。例えば[[群論]]の言語では、ひとつの個体定項(単位元)、アリティ1のひとつの関数(逆元関数)、アリティ2のひとつの関数(積関数)、アリティ2の関係(同一性関係)から構成される(ただし、等号付き一階述語論理で定式化する場合には、同一性関係は省略できる)。
: ''x''<sub>1</sub> , ''x''<sub>5</sub> , '''0''' , '''·''' ''x''<sub>1</sub>'''0'''
はすべて項である。通常、'''·''' , x + (y + −z) と書かれる。
* +(''x'', ''y'') = 0, &le; +(''x'' +(''y'' &minus;(''z''))) +(''x'', ''y'') は'''原子論理式'''であり、通常 ''x'' + ''y'' = 0, ''x'' + ''y'' &minus; ''z'' &le; ''x'' + ''y'' と書かれる。
* (&forall;''x''∀x &exist;''y''∃y &le; +(''x'' ''y'') ''z'' &and; &exist;''x''∃x +(''x'', ''y'') = 0) は'''論理式'''であり、通常 (&forall;''x''∀x &exist;''y''∃y ''x'' + ''y'' &le; ''z'') &and; (&exist;''x''∃x ''x'' + ''y'' = 0) と書かれる。
 
== 形成規則 ==
'''形成規則'''は項、論理式、およびそれらに含まれる[[自由変項]]を以下のように定義する。
 
整論理式 (well-formed formula, wff) あるいは'''論理式''' (term) の集合次の規則からように帰納的に定義される
# 個体定項は(自由変項を持たない)項である。
# 個体変項は項である(その唯一の自由変項は自分自身である)。
# ''t''<sub>1</sub> , ..., ''t''<sub>''n''</sub> が項であるとき、[[アリティ]] ''n'' &ge; 1 の関数 ''f'' を用いて作られる式 ''f''(''t''<sub>1</sub>, ..., ''t''<sub>''n''</sub>) は項である。このとき、''t''<sub>1</sub>, ..., ''t''<sub>''n''</sub> それぞれの自由変項が、''f''(''t''<sub>1</sub>, ..., ''t''<sub>''n''</sub>) の自由変項となる。
# '''閉包節: '''上記以外は項ではない。
 
整論理式 (well-formed formula, 通常 wff と略され、単に「論理式」とも呼ばれる) の集合は、次の規則によって帰納的に定義される。
# '''単純な述語と複雑な述語:''' ''a''<sub>''i''</sub> が項であり、''P'' をアリティ ''n'' &ge; 1 の述語記号とするとき、''Pa''<sub>1</sub> , ..., ''a''<sub>''n''</sub> は整論理式である。''a''<sub>''i''</sub> のいずれかが自由変項を持つなら、それが ''Pa''<sub>1</sub> , ..., ''a''<sub>''n''</sub> の自由変項となる。等号が論理の一部となっている場合、(''a''<sub>1</sub> = ''a''<sub>2</sub>) は整論理式である。これらはいずれも[[原子論理式]]と呼ばれる。
# '''帰納節 I: ''' &phi; が整論理式なら &not;&phi; も整論理式である。
66 ⟶ 73行目:
'''代入: ''' ''t'' を項、 &phi;(''x'') を(''x''を自由変項として含む)論理式とする。このとき &phi;(''t'') は、&phi;(''x'') 中の ''x'' の自由な出現すべてを ''t'' で置き換えたものと定義される。'''ただしここで、''t'' に含まれるいかなる自由変項も、この置き換えによって束縛されてしまうことがないようにしなければならない'''。もし ''t'' の自由変項が束縛されるなら、''x'' を ''t'' で置換する前に &phi; 内の[[束縛変項]]名を ''t'' 内の自由変項名以外のものに変更しなければならない。この条件が必要となる理由を説明するために、以下のような場合を考えてみよう。論理式 &phi;(''x'') の中身が &forall;''y'' ''y'' &le; ''x''(これは「''x'' は最大値」を意味する)だとする。''t'' が ''y'' を自由変項として持たない項であれば、&phi;(''t'') はまさに ''t'' が最大値であると主張していることになる。しかし、もし ''t'' が ''y'' である場合、&phi;(''t'') は &forall;''y'' ''y'' &le; ''y'' となり、主張することが変わってしまう。この問題は、自由変項 ''x'' に ''y'' を代入したときに、&phi;(''x'') の中で ''t'' の自由変項 ''y'' が束縛されてしまうために発生する。そこで、事前に束縛変項 ''y'' を他の名前、例えば ''z'' に変えて、&forall;''z'' ''z'' &le; ''y'' とすることで問題を回避する。これを忘れるとひどい間違いを犯すことになる。
 
== 自由変数 ==
'''例: ''' アーベル群の言語は個体定項 0, 単項関数 &minus;, 二項関数 +, 二項述語 &le; から構成される。ここで、
 
* 0, ''x'', ''y'' は'''原子項'''である。
 
* +(''x'', ''y''), +(''x'' + (''y'' &minus;(''z''))) は'''項'''であり、通常 ''x'' + ''y'', ''x'' + (''y'' + &minus;''z'') と書かれる。
== 論理式の真偽 ==
* +(''x'', ''y'') = 0, &le; +(''x'' +(''y'' &minus;(''z''))) +(''x'', ''y'') は'''原子論理式'''であり、通常 ''x'' + ''y'' = 0, ''x'' + ''y'' &minus; ''z'' &le; ''x'' + ''y'' と書かれる。
 
* (&forall;''x'' &exist;''y'' &le; +(''x'' ''y'') ''z'' &and; &exist;''x'' +(''x'', ''y'') = 0) は'''論理式'''であり、通常 (&forall;''x'' &exist;''y'' ''x'' + ''y'' &le; ''z'') &and; (&exist;''x'' ''x'' + ''y'' = 0) と書かれる。
 
== 形成規則式的証明 ==
 
 
== 同一性 ==
124 ⟶ 134行目:
証明可能性については様々な異なる(しかし互いに等価な)定義の方法がある。上述の定義は[[ダフィット・ヒルベルト|ヒルベルト]]流計算の典型例であり、これは異なる公理を多数用意して推論規則を少なくするスタイルをとっている。[[ゲルハルト・ゲンツェン|ゲンツェン]]流の[[シークエント計算|述語計算]]では逆に、公理を少なくして推論規則を豊富に用意している。
 
==
== 一階述語論理のメタ論理的定理 ==
 
== 一階述語論理のメタ論理的に関する定理 ==
以下、重要なメタ論理的定理を列挙する。
# 命題計算とは異なり、一階述語論理は(高々[[アリティ]]2の述語が一つでも含まれていると)決定不能である。つまり、任意の論理式 ''P'' について、''P'' が恒真であるか否かを決定する一般的なアルゴリズムは存在しない([[チューリングマシンの停止問題]]を参照せよ)。この結果は[[アロンゾ・チャーチ]]と[[アラン・チューリング]]がそれぞれ独立に導き出した。
144 ⟶ 156行目:
 
一階述語論理のいくぶんエキゾチックな等価物には、次のものがある。順序対構成をもつ一階述語論理は、特別な関係として順序対の射影を持つ[[関係代数 (数学)|関係代数]](これは[[アルフレト・タルスキ|タルスキ]]と Givant によって構築された)と精確に等価である。
 
== 語彙 ==
{{Reflist}}
 
== 関連項目 ==