数学の作り方 How to make Mathematics

第4章 一階述語論理 — 構文

命題論理では言えないこと

命題論理は「ppqq が真か偽か」しか扱えません。でも数学の主張はもっと構造をもっています。 「すべての自然数 nn に対して n<n+1n<n+1」「x2=2x^2=2 となる実数 xx存在する」。 「すべて」「ある」、そして対象・関数・関係——これらは命題変数の真偽だけでは表現不可能です。

そこで論理を一段強くします。対象を指す変数と、それに掛ける量化子 \forall(すべて)・\exists(ある)、 対象の性質を表す述語、対象から対象への関数を導入する。これが一階述語論理です (“一階”とは、量化できるのが対象だけで、性質や集合には量化しないこと。それらまで量化するのが高階論理、第10章)。 この章では、この豊かになった言語の構文——記号の並べ方の規則——を、命題論理と同じ帰納的な精神で厳密に立てます。

一階述語論理 = 命題論理 + 対象変数・述語・関数・量化子 \forall\exists。まず「正しい式」を機械的に定める。

言語(シグネチャ)

まず、どんな記号を使うかを宣言します。論理そのものに属する記号(論理記号)と、扱う対象ごとに変わる 記号(非論理記号)を分けます。

定義 一階言語

論理記号:可算個の変数 x0,x1,x_0,x_1,\dots、結合子 ¬,\lnot,\to(他は略記)、量化子 \forall、 等号 ==、括弧。 非論理記号言語・シグネチャ L\mathcal L):定数記号の集合、各関数記号アリティ=引数の個数つき)、各述語記号(アリティつき)。

例えば群の言語は L={, 1, e}\mathcal L=\{\cdot,\ ^{-1},\ e\}(2項関数・1項関数・定数)、順序体なら {+,,<,0,1}\{+,\cdot,<,0,1\}言語を変えれば、語れる数学の分野が変わる。論理の骨組みは共通で、非論理記号だけを差し替えるのがポイントです。

項と論理式

命題論理と同じく、帰納的定義で「正しい式」を作ります。まず対象を指す式=項、次に真偽を主張する式=論理式。

定義

L\mathcal L 上のを次で定める:(1)各変数は項。(2)各定数記号は項。 (3)ff がアリティ nn の関数記号、t1,,tnt_1,\dots,t_n が項なら f(t1,,tn)f(t_1,\dots,t_n) は項。(4)以上だけが項。

定義 論理式

L\mathcal L 上の論理式を次で定める: (1)t1,t2t_1,t_2 が項なら t1=t2t_1=t_2 は論理式(原子論理式)。RR がアリティ nn の述語記号、t1,,tnt_1,\dots,t_n が項なら R(t1,,tn)R(t_1,\dots,t_n) は原子論理式。 (2)φ\varphi が論理式なら ¬φ\lnot\varphiφ,ψ\varphi,\psi が論理式なら (φψ)(\varphi\to\psi) も論理式。 (3)φ\varphi が論理式、xx が変数なら xφ\forall x\,\varphi は論理式(xφ:¬x¬φ\exists x\,\varphi:\equiv\lnot\forall x\,\lnot\varphi)。 (4)以上だけが論理式。

命題論理では原子式は命題変数でしたが、ここでは「項どうしの等式・述語の適用」が最小単位です。 そのぶん内部構造をもちます。そして量化子 x\forall x が加わったことで、新しい概念——変数が“縛られる”——が必要になります。

自由変数と束縛変数

xφ\forall x\,\varphi の中の xx は、もはや「特定の対象」ではなく「φ\varphi の中で走る番号」のようなもの。 この違いを正確に区別しないと、代入で破綻します。

定義 自由出現・束縛出現

論理式中の変数 xx の出現が、ある x\forall x のスコープ(x\forall x の直後の部分式)内にあるとき束縛、 そうでないとき自由という。φ\varphi の自由変数の集合を FV(φ)\mathrm{FV}(\varphi) と書き、 帰納的に定義できる(FV(xφ)=FV(φ){x}\mathrm{FV}(\forall x\,\varphi)=\mathrm{FV}(\varphi)\setminus\{x\} など)。 自由変数をもたない論理式を閉論理式)という。

例:x(x<y)\forall x\,(x<y) で、xx は束縛、yy は自由。この式の真偽は「yy に何を入れるか」に依存し、 xx には依存しません(xxx\forall x に食われている)。文(自由変数なし)だけが、それ自体で真偽を問える主張になります (xy(x<yy<xx=y)\forall x\forall y(x<y\lor y<x\lor x=y) のような閉じた式)。自由変数を含む式は、値を代入して初めて真偽が決まります。

代入と代入可能性

xφ\forall x\,\varphi が成り立つなら、xx に具体的な項 tt を入れた φ[x:=t]\varphi[x:=t] も成り立つ」——量化子の推論の要は代入です。 ところが、素朴に代入すると**変数の取り違え(capture)**という罠があります。

定義 代入

論理式 φ\varphi自由xx をすべて項 tt で置き換えた結果を φ[x:=t]\varphi[x:=t] と書く (束縛された xx は置き換えない)。項への代入も同様。

capture の罠

φ:y(x<y)\varphi:\equiv\exists y\,(x<y)(「xx より大きい yy がある」、xx は自由)を考える。xxyy を代入すると φ[x:=y]=y(y<y)\varphi[x:=y]=\exists y\,(y<y)。もとは「xx より大きいものが存在」という真になりうる主張だったのに、 代入した yy が量化子 y\exists y捕獲され、「自分より大きい自分が存在」という別の(偽の)主張に化けた。

この事故を防ぐ条件が代入可能性です。

定義 代入可能(t が x に対して自由)

tt が論理式 φ\varphixx に対して代入可能tt is free for xx)とは、 φ\varphi 中で xx が自由に出現する各箇所が、tt に現れるどの変数 yy についても y\forall y のスコープの外にあること (= tt の変数が捕獲されない)。

代入可能でないときは、束縛変数を新しい変数に名前替えα\alpha-変換:y(x<y)\exists y\,(x<y)z(x<z)\exists z\,(x<z) に)してから 代入すればよい。以後 φ[x:=t]\varphi[x:=t] と書くときは、ttxx に代入可能であると暗黙に仮定します。 この一手間が、次章の量化子規則の健全性(第6章)を支える縁の下の力持ちになります。

つまずきポイント

注意 よくある誤解

  • 束縛変数の名前に意味は無い。 xP(x)\forall x\,P(x)yP(y)\forall y\,P(y) は同じ意味(α\alpha-同値)。束縛変数は「走る添字」で、自由変数だけが外の世界と繋がる。
  • 文だけが真偽をもつ。 自由変数を含む論理式(開論理式)は、値を割り当てて初めて真偽が決まる(次章)。
  • 代入は capture に注意。 素朴な置き換えは意味を壊す。代入可能性を確認するか、α\alpha-変換してから代入する。この配慮を怠ると量化子の推論が不健全になる。

この章のまとめ

  • 一階述語論理は命題論理に対象変数・関数・述語・量化子 \forall\exists を加えたもの。**言語(シグネチャ)**を差し替えて各分野を語る。
  • 論理式を帰納的に定義。量化子により変数に自由/束縛の区別が生まれ、**文(閉論理式)**だけが単独で真偽を問える。
  • 代入 φ[x:=t]\varphi[x:=t] は capture を避けねばならず、代入可能性ttxx に対して自由)を課す。必要なら α\alpha-変換する。

次章は、この構文に意味を与えます。構造・付値・充足というタルスキの意味論で、「真である」を厳密に定義します。