§A3.12述語と自由変数・束縛変数

最終更新

述語に現れる変数を、どのように扱えば文の真偽が定まるのでしょうか。本記事では、変数を含む文P(x)P(x)を対象として、自由変数と量化子に束縛された変数を区別します。さらに、束縛変数の改名が主張を変えないための条件と、自由変数を値として固定する場合と量化する場合の違いを確かめます。

1 自由変数と束縛変数

定義 1.1 (述語・自由変数・束縛変数). 各変数の対象範囲を指定する。変数を含み、その変数に対象範囲の値を代入すると真偽が定まる文を述語という。述語に現れる変数のうち、量化子のスコープに入っていないものを自由変数といい、値を指定することで真偽を定める。量化子∀\forallまたは∃\existsのスコープ内で、その量化子の対象となる変数を束縛変数という。自由変数がすべて値を指定されるか量化子に束縛され、自由変数が残っていない文を閉じた命題という。

P(x)P(x)のxxは自由変数であり、P(4)P(4)のように具体的な値を入れることができます。∀x P(x)\forall x\,P(x)のxxは量化子∀\forallのスコープにある束縛変数であり、量化の対象を走るための名前です。

2 束縛変数は名前を替えても主張が変わらない

定理 2.1 (束縛変数の改名). 対象範囲をXXとし、量化子のスコープに現れる他の自由変数の値を固定する。束縛変数xxの名前を、置換前のスコープに自由に現れず、かつ重なる別の量化子の束縛変数とも衝突しない新しい変数yyに、その量化子のスコープ内で一貫して付け替えるとする。このとき、束縛変数を付け替える前後で述語の意味は変わらない。特に、∀x∈X P(x)\forall x\in X\,P(x)と∀y∈X P(y)\forall y\in X\,P(y)は同じ意味を表し、∃x∈X P(x)\exists x\in X\,P(x)と∃y∈X P(y)\exists y\in X\,P(y)も同じ意味を表す。

証明.XXと、量化子のスコープに現れる他の自由変数の値を固定し、定理の衝突しない変数yyをとる。∀x∈X P(x)\forall x\in X\,P(x)が真であることは、各a∈Xa\in Xについて、束縛変数xxがaaを走る場合にP(x)P(x)が真であることを意味する。xxをyyに一貫して付け替えても、yyは同じa∈Xa\in Xを走り、衝突によって他の変数の値や束縛は変わらない。したがって、各a∈Xa\in XにおけるPPの真偽は改名の前後で一致し、二つの全称命題は同じ意味を表す。存在命題についても、条件を満たすa∈Xa\in Xの存在は改名の前後で変わらないので、二つの存在命題は同じ意味を表す。▨

束縛変数の改名は、∑k=1nak\displaystyle\sum_{k=1}^n a_kの添字kkをjjに改名して∑j=1naj\displaystyle\sum_{j=1}^n a_jと書くことや、∫01f(x) dx\displaystyle\int_0^1 f(x)\,dxの積分変数xxを別の文字に改名することに対応します。総和の添字と積分変数は、束縛変数を理解するための類比であり、量化子と同一の記号ではありません。

一方、自由変数の名前だけを替えると、どの値を固定しているかが変わるため、一般に別の述語になります。P(x)P(x)とP(y)P(y)のx,yx,yが別の対象を指す場合に、二つの述語を同じものとして扱うことはできません。

3 自由変数を固定するか、量化するか

同じ述語から出発しても、自由変数をどう扱うかによって、得られる主張が変わります。

例 3.1 (代入・量化・変数の衝突).P(x,y)P(x,y)を実数を対象範囲とする「x<yx<y」とする。x=3x=3、y=5y=5を代入すると3<53<5となり、真の閉じた命題を得る。

∀x∈R (x<y)\forall x\in\mathbb R\,(x<y)ではxxだけが束縛され、yyは自由変数として残る。したがって、この式はyyの述語であり、まだ閉じた命題ではない。実数yyを任意に固定しても、x=y+1x=y+1とすればx<yx<yは偽であるので、この述語はすべての実数yyに対して偽となる。

∀x∈R ∃y∈R (x<y)\forall x\in\mathbb R\,\exists y\in\mathbb R\,(x<y)は自由変数をもたない閉じた命題である。任意の実数xxに対してy=x+1y=x+1をとるとx<yx<yであるので、この命題は真である。

∃x∈R (x>y)\exists x\in\mathbb R\,(x>y)のxxは束縛変数であり、yyは自由変数である。自由変数yyを束縛変数と同じxxに書き換えると、∃x∈R (x>x)\exists x\in\mathbb R\,(x>x)となる。元の述語は各実数yyに対してx=y+1x=y+1をとれば真であるが、書き換えた命題は偽である。したがって、束縛変数の改名には衝突しない名前を用いる必要がある。

全称命題∀x∈X Q(x)\forall x\in X\,Q(x)を証明するときは、任意のa∈Xa\in Xを一つとり、議論の間はaaを固定します。この操作は証明内で対象を局所的に固定することであり、式の量化子が変数を束縛することとは区別します。a∈Xa\in X以外の追加条件を仮定せずにQ(a)Q(a)を導くことができれば、aaの任意性から、すべてのx∈Xx\in XについてQ(x)Q(x)と結論することができます。反対に、議論の途中でaaに追加条件を課すと、その条件を満たす対象についてしかQ(a)Q(a)を示していないため、全称命題を結論することはできません。

4 束縛変数はその場限りの名前である

束縛変数の名前は、そのスコープの内側でだけ通用します。したがって、外側で使っている文字と束縛変数の名前が重なると、変数の衝突が生じます。束縛変数を改名するときは、定理 2.1の衝突しないという条件を確かめます。プログラムでも、変数名が有効なスコープを区別し、内側の変数が外側の変数を覆い隠さないようにします。これは論理式のスコープを理解する類比であり、プログラムの変数と論理式の変数を同一視するものではありません。数式処理系も、束縛変数のスコープと変数の衝突を区別して式を扱います。

例題

条件と何を求めるかを確認してから、式と答えの対応を見比べてください。

次の式について、(1) 自由変数と束縛変数をすべて挙げ、(2) この式が命題(自由変数のない閉じた文)か述語(条件)かを判定し、(3) 束縛変数を改名した同値な式を1つ書け。

次の式の自由変数と束縛変数を挙げ、命題か述語かを判定し、束縛変数を改名した同値な式を1つ書け。

解法の型量化子(∀\forall∃\exists)・Σ\Sigma の添字・∫\int の積分変数に縛られている変数が束縛変数、それ以外が自由変数。自由変数が1つでも残れば命題ではなく述語。束縛変数は改名しても意味が変わらない

  1. 例題 1

    (∀x P(x))⇒P(y)\bigl(\forall x \ P(x)\bigr) \Rightarrow P(y)
  2. 例題 2

    ∀ε>0 ∃δ>0 ∀x (∣x−a∣<δ⇒∣f(x)−f(a)∣<ε)\forall \varepsilon > 0 \ \exists \delta > 0 \ \forall x \ \bigl(|x - a| < \delta \Rightarrow |f(x) - f(a)| < \varepsilon\bigr)
  3. 例題 3

    ∀x (P(x)∧Q(y)) ∨ ∃y R(y)\forall x \ \bigl(P(x) \land Q(y)\bigr) \ \lor \ \exists y \ R(y)
  4. 例題 4

    ∀x (P(x)⇒Q(x))\forall x \ \bigl(P(x) \Rightarrow Q(x)\bigr)
  5. 例題 5

    ∫01f(x,t) dx=0\int_0^1 f(x, t) \, dx = 0
  6. 例題 6

    (∀x ∃y (y>x)) ∧ (z∈A)\bigl(\forall x \ \exists y \ (y > x)\bigr) \ \land \ (z \in A)
  7. 例題 7

    ∀x ∃y (x+y=z)\forall x \ \exists y \ (x + y = z)
  8. 例題 8

    ∀x (x>0⇒∃y (y2=x))\forall x \ \bigl(x > 0 \Rightarrow \exists y \ (y^2 = x)\bigr)
  9. 例題 9

    ∑k=1nk=n(n+1)2\sum_{k=1}^{n} k = \dfrac{n(n+1)}{2}
  10. 例題 10

    ∀x ∃x P(x)\forall x \ \exists x \ P(x)

演習

問題を解いてから「解答・解説」を開けます。

次の式について、(1) 自由変数と束縛変数をすべて挙げ、(2) この式が命題(自由変数のない閉じた文)か述語(条件)かを判定し、(3) 束縛変数を改名した同値な式を1つ書け。

演習を読み込み中…

前提記事