Skip to content

定义Definition

自由变量与约束变量

Free and bound variables

按量词作用域区分公式中由赋值决定的变量出现和被量化绑定的变量出现。

形式陈述 ​

在一阶公式的语法树中,变量的一次出现若位于相应量词 ∀x 或 ∃x 的作用域内,则该出现被该量词约束;否则自由。自由变量集合递归满足

FV(∀xφ)=FV(φ)∖{x},

其余联结词取相应并集。公式可同时含同一变量名的自由出现与受约束出现。只改变受约束变量名称且避免捕获的 α-重命名不改变语义;句子恰是自由变量集合为空的公式。

直觉

要判断自由还是约束,检查的是变量的每一次出现,而不是给整个字母贴标签。沿语法树从该出现向外走,遇到的最近一个同名量词负责绑定它;若没有这样的量词,它就是对外开放的参数。

自由变量集合给出真值可能依赖的参数范围,并不保证每个参数都实际影响结果。例如 x=x 含自由变量 x,却在通常带等号的一阶语义中对任何赋值都真。正确结论是:两个赋值只要在所有自由变量上相同,就一定给出相同真值。

例子与边界

按作用域逐层检查 ​

在 P(x)∧∀xQ(x,y) 中,第一处 x 自由,右侧 x 受全称量词约束,y 自由。因此整个公式的自由变量集合为 {x,y}。如果只看“公式里已经有 ∀x”就删掉全部 x,会错误地丢掉左侧参数。

嵌套公式 ∀x(P(x)∧∃xQ(x)) 中,P(x) 的出现由外层量词绑定,Q(x) 的出现由内层绑定。为消除阅读歧义,可以改写成 ∀x(P(x)∧∃zQ(z));两个量词原本就允许取不同元素。

捕获会真正改变含义 ​

在整数上,∀x(x<y) 把 y 留作参数。若要用项 x+1 替换自由的 y,直接写成 ∀x(x<x+1) 会把代入项里的 x 错误绑定,所得句子为真。安全做法先把原量词改名,再代入,得到 ∀z(z<x+1);它仍依赖外部 x,且对任何整数赋值都假。

两者一个恒真、一个恒假,说明避免变量捕获不是书写偏好,而是保持原参数含义的必要条件。先选一个未被使用的新变量,便能在这里安全进行 α-重命名。

同样,∀xR(x,y) 在再加外层 ∃y 后成为句子;增加量词改变了断言的参数接口,不能与仅改约束变量名字混同。

推论与应用

变量赋值提供外部参数;没有自由变量的句子,其真假与初始赋值无关。替换引理则说明无捕获的语法代入如何对应语义上的赋值更新。

全称引入规则必须检查变量是否自由出现在未撤销的假设中。程序语言的局部变量和λ 演算也面对相同问题,但具体绑定器可能不同;更一般的出现与作用域关系见变量绑定。

参考资料
  • Open Logic Project contributors, The Open Logic Text, 2026-07-12 修订版,Free Variables and Sentences。
  • Herbert B. Enderton, A Mathematical Introduction to Logic, 2nd ed., Academic Press, 2001,§2.1,作用域与自由代入。
关系图谱3 个相邻概念 · 1 类关系

拖动节点调整位置。

显示关系

显示:依赖

  1. 前置三跳
  2. 前置二跳
  3. 前置一跳
  4. 当前条目
  5. 后续一跳
  6. 后续二跳
  7. 后续三跳
文字版关系按与当前条目的最短距离分组