自由変数と束縛変数
(自由変数 から転送)
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/08/01 10:09 UTC 版)
数学や形式言語に関連する分野(数理論理学と計算機科学)において、自由変数(または自由変項、英: free variable)は数式や論理式で置換が行われる場所を指示する記法である。この考え方はプレースホルダーやワイルドカードにも関連する。
変数x は、例えば次のように書くと 束縛変数(または束縛変項、英: bound variable)になる。
- 全ての について が成り立つ。
あるいは
- となるような が存在する。
これらの命題では、x の代わりに別の文字を使っても論理的には全く変化しない。しかし、複雑な命題で同じ文字を別の意味で再利用すると混乱が生じる。すなわち、自由変数が束縛されると、ある意味ではその後の数式の構成をサポートする作業に関与しなくなる。
プログラミングにおいては、自由変数とは関数の中で参照される局所変数や引数以外の変数を意味する。
例
自由変数と束縛変数を正確に定義する前に、定義をより明確にする例を以下に示す。
次の式
において、 は自由変数、 は束縛変数である。結果として、この式は の値によって変化するが には依存しない。
次の式
において、 は自由変数、 は束縛変数である。同様にこの式の値は の値によって変化するが、 には依存しない。
次の式
において、 は自由変数、 は束縛変数である。同様にこの式の値は の値によって変化するが、 には依存しない。
次の論理式
において、 は自由変項、 と は束縛変項である。この論理式の真理値は の値によって変化するが、 と には依存しない。
束縛作用素(演算子)
以下は変数束縛作用素(演算子)である。それぞれ、変数 を束縛する。
形式的解説
変数束縛機構は数学、論理学、計算機科学など様々な分野で使われるが、いずれの場合もそれらは式と変数についてのその分野における全く統語的な属性である。ここでは式を木で表し、その葉ノードに変数、定数、定項などが対応し、葉でないノードに論理演算子が対応するように構成すると考える。変数束縛演算子は論理演算子であり、ほとんど全ての形式言語に存在する。実際、束縛ができない言語は非常に表現能力が低く、使いにくい。束縛演算子 は2つの引数をとる。一つは変数 、もう一つは式 であり、これによって新たな式 が生成される。束縛演算子の意味は、その言語の意味論で提供されるもので、ここでは考慮しない。
変数束縛は三つのものと関連する。一つめは変数 、二つめは式内でその変数が現れる場所 、三つめは で形成される木の葉でないノード である。ここでは、変数は葉ノードにあると定義したので、束縛はノード の下で起きる。
数学における例として、次の関数定義式を考える。
ここで、 は式である。 には の全部または一部が含まれることがあり、他の変数も含まれることがある。この場合、関数定義が変数 を束縛していると言える。
ラムダ計算では、 というラムダ式で、 は においては束縛変数、 においては自由変数である。 にさらにラムダ式 が含まれる場合、 はこの中で再束縛される。このような入れ子の内側の の束縛は外側の束縛を覆い隠す。 における の出現は新たな の自由な出現である。
プログラムのトップレベルで束縛された変数は、技術的にはそれが束縛された項の中では自由変数であるが、固定アドレスにコンパイルされるため、特別な扱われ方をすることが多い。同様に計算可能関数に束縛された識別子も技術的にはその本体内では自由変数だが、特別に扱われる。
自由変数を全く含まない項あるいは式を閉項(英: closed term)または閉論理式(英: closed formula)または閉式と呼ぶ。
参考文献
本項目の一部はGFDLでリリースされているFOLDOCの記述に基づいているが、大部分はその後の編集によるものである。
関連項目
外部リンク
- 束縛変数と自由変数 師玉康成
自由変数
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/03/25 04:10 UTC 版)
自然数論の言語における論理式 ( S 0 + S 0 ) = S S 0 {\displaystyle (S0+S0)=SS0} の各記号を通常の意味で解釈すれば「 1 + 1 = 2 {\displaystyle 1+1=2} 」となり、これは真である論理式である。 ¬ [ ( S 0 + S 0 ) = S S 0 ] {\displaystyle \lnot [(S0+S0)=SS0]} は「 1 + 1 ≠ 2 {\displaystyle 1+1\neq 2} 」となるので通常の解釈で偽なる論理式である。また、変数の動く範囲(議論領域)は自然数全体の集合だとすれば、論理式 [ ∀ x 1 ( 0 = S x 1 ) ] {\displaystyle [\forall x_{1}(0=Sx_{1})]} は「すべての自然数 n {\displaystyle n} について 0 = n + 1 {\displaystyle 0=n+1} 」という意味になり、これは真である論理式であることが分かる。一方、論理式 ( 0 + x 5 ) = S 0 {\displaystyle (0+x_{5})=S0} の意味を考えてみると、「 0 + x 5 = 1 {\displaystyle 0+x_{5}=1} 」となるがこれは真であるか偽であるかを判断することができない。なぜなら、 x 5 {\displaystyle x_{5}} という変数が何を表しているかが決まっていないからである。このようなとき、 x 5 {\displaystyle x_{5}} は論理式 ( 0 + x 5 ) = S 0 {\displaystyle (0+x_{5})=S0} における自由変数 (free variable) であると言われる。正式には、各論理式 ϕ {\displaystyle \phi } に対して、" ϕ {\displaystyle \phi } における自由変数全体の集合" f r ( ϕ ) {\displaystyle fr(\phi )} を次のように再帰的に定義する: ϕ {\displaystyle \phi } が原子論理式ならば、 f r ( ϕ ) {\displaystyle fr(\phi )} は記号列 φ に現れるすべての変数からなる集合である。 f r [ ( ¬ ϕ ) ] = f r ( ϕ ) {\displaystyle fr[(\lnot \phi )]=fr(\phi )} 。 f r [ ( ϕ ∧ ψ ) ] = f r [ ( ϕ ∨ ψ ) ] = f r [ ( ϕ ⇒ ψ ) ] = f r [ ( ϕ ⇔ ψ ) ] = f r ( ϕ ) ∪ f r ( ψ ) {\displaystyle fr[(\phi \land \psi )]=fr[(\phi \lor \psi )]=fr[(\phi \Rightarrow \psi )]=fr[(\phi \Leftrightarrow \psi )]=fr(\phi )\cup fr(\psi )} 。 f r ( ∀ x ϕ ) = f r ( ∃ x ϕ ) = f r ( ϕ ) − { x } {\displaystyle fr(\forall x\phi )=fr(\exists x\phi )=fr(\phi )-\{x\}} 。 論理式 ϕ {\displaystyle \phi } が自由変数を一切持たないとき、つまり f r ( ϕ ) = ∅ {\displaystyle fr(\phi )=\varnothing } のとき、 ϕ {\displaystyle \phi } は閉論理式 (closed formula) あるいは文 (sentence) と呼ぶ。直観的には、文とは記号に解釈を与えて意味を考えたときに正しいか正しくないかが決まるような論理式である。 ( S 0 + S 0 ) = S S 0 {\displaystyle (S0+S0)=SS0} や ∀ x 1 0 = S x 1 {\displaystyle \forall x_{1}0=Sx_{1}} は文であるが、 f r [ ( 0 + x 5 ) = S 0 ] = { x 5 } {\displaystyle fr[(0+x_{5})=S0]=\{x_{5}\}} より ( 0 + x 5 ) = S 0 {\displaystyle (0+x_{5})=S0} は文でない。
※この「自由変数」の解説は、「一階述語論理」の解説の一部です。
「自由変数」を含む「一階述語論理」の記事については、「一階述語論理」の概要を参照ください。
- 自由変数のページへのリンク