述語に現れる変数を、どのように扱えば文の真偽が定まるのでしょうか。本記事では、変数を含む文を対象として、自由変数と量化子に束縛された変数を区別します。さらに、束縛変数の改名が主張を変えないための条件と、自由変数を値として固定する場合と量化する場合の違いを確かめます。
1 自由変数と束縛変数
定義 1.1 (述語・自由変数・束縛変数). 各変数の対象範囲を指定する。変数を含み、その変数に対象範囲の値を代入すると真偽が定まる文を述語という。述語に現れる変数のうち、量化子のスコープに入っていないものを自由変数といい、値を指定することで真偽を定める。量化子またはのスコープ内で、その量化子の対象となる変数を束縛変数という。自由変数がすべて値を指定されるか量化子に束縛され、自由変数が残っていない文を閉じた命題という。
のは自由変数であり、のように具体的な値を入れることができます。のは量化子のスコープにある束縛変数であり、量化の対象を走るための名前です。
2 束縛変数は名前を替えても主張が変わらない
定理 2.1 (束縛変数の改名). 対象範囲をとし、量化子のスコープに現れる他の自由変数の値を固定する。束縛変数の名前を、置換前のスコープに自由に現れず、かつ重なる別の量化子の束縛変数とも衝突しない新しい変数に、その量化子のスコープ内で一貫して付け替えるとする。このとき、束縛変数を付け替える前後で述語の意味は変わらない。特に、とは同じ意味を表し、とも同じ意味を表す。
証明.と、量化子のスコープに現れる他の自由変数の値を固定し、定理の衝突しない変数をとる。が真であることは、各について、束縛変数がを走る場合にが真であることを意味する。をに一貫して付け替えても、は同じを走り、衝突によって他の変数の値や束縛は変わらない。したがって、各におけるの真偽は改名の前後で一致し、二つの全称命題は同じ意味を表す。存在命題についても、条件を満たすの存在は改名の前後で変わらないので、二つの存在命題は同じ意味を表す。▨
束縛変数の改名は、の添字をに改名してと書くことや、の積分変数を別の文字に改名することに対応します。総和の添字と積分変数は、束縛変数を理解するための類比であり、量化子と同一の記号ではありません。
一方、自由変数の名前だけを替えると、どの値を固定しているかが変わるため、一般に別の述語になります。とのが別の対象を指す場合に、二つの述語を同じものとして扱うことはできません。
3 自由変数を固定するか、量化するか
同じ述語から出発しても、自由変数をどう扱うかによって、得られる主張が変わります。
例 3.1 (代入・量化・変数の衝突).を実数を対象範囲とする「」とする。、を代入するととなり、真の閉じた命題を得る。
ではだけが束縛され、は自由変数として残る。したがって、この式はの述語であり、まだ閉じた命題ではない。実数を任意に固定しても、とすればは偽であるので、この述語はすべての実数に対して偽となる。
は自由変数をもたない閉じた命題である。任意の実数に対してをとるとであるので、この命題は真である。
のは束縛変数であり、は自由変数である。自由変数を束縛変数と同じに書き換えると、となる。元の述語は各実数に対してをとれば真であるが、書き換えた命題は偽である。したがって、束縛変数の改名には衝突しない名前を用いる必要がある。
全称命題を証明するときは、任意のを一つとり、議論の間はを固定します。この操作は証明内で対象を局所的に固定することであり、式の量化子が変数を束縛することとは区別します。以外の追加条件を仮定せずにを導くことができれば、の任意性から、すべてのについてと結論することができます。反対に、議論の途中でに追加条件を課すと、その条件を満たす対象についてしかを示していないため、全称命題を結論することはできません。
4 束縛変数はその場限りの名前である
束縛変数の名前は、そのスコープの内側でだけ通用します。したがって、外側で使っている文字と束縛変数の名前が重なると、変数の衝突が生じます。束縛変数を改名するときは、定理 2.1の衝突しないという条件を確かめます。プログラムでも、変数名が有効なスコープを区別し、内側の変数が外側の変数を覆い隠さないようにします。これは論理式のスコープを理解する類比であり、プログラムの変数と論理式の変数を同一視するものではありません。数式処理系も、束縛変数のスコープと変数の衝突を区別して式を扱います。