Skip to content

一阶统一

First-order unification · Syntactic unification

寻找使若干一阶项在替换后相等的最一般替换。

条目类型
算法

形式陈述

给定一阶项方程集合 E={siti},一阶替换 θ 是从变量到有限一阶项的有限映射,并按项树结构递归延拓:变量查映射,常量保持不变,函数项逐个替换其子项。一阶项内部没有绑定构造,因此这里不发生变量捕获。若对每个方程都有 θ(si)=θ(ti),则 θ 是统一子;它是最一般统一子(MGU),若任一其他统一子 σ 都可写为 σ=δθ

标准统一算法反复执行分解、删除、变量消去与冲突检查:f(s1,,sn)=f(t1,,tn) 分解为分量方程;x=t 可把 x 替换为 t,但要求 x 不出现在 t 中;函数符号或元数不同则失败。该 occurs check 防止构造无限一阶项。若问题可统一,算法返回的解在变量改名意义下唯一最一般。

直觉

统一不是给每个变量随便猜一个值,而是在保留尽可能多自由度的前提下让两棵项树结构一致。根函数符号必须相同,随后问题递归下降到对应子树;变量则像洞,可以被一棵不含自身的项填入。MGU 只记录被方程强迫的等式,任何更具体解都由继续实例化它得到。occurs check 是有限项世界的边界:允许 x=f(x) 会要求一棵包含自身作为真子树的无限结构。

一阶统一的分解与 occurs check
例子与边界

方程 f(x,a)f(b,y) 分解为 xbay,得到 MGU {xb,ya}。方程 f(x,x)f(a,b)ab 时失败,因为同一变量被迫同时等于两个不同常量。

xf(x) 的 occurs check 失败;若省略检查,某些实现会得到有环的 rational tree,但那已不是标准有限一阶项的统一。带绑定器的语法才必须采用无捕获替换,不能直接套用这里的结构替换。带交换律、结合律或高阶变量的统一也不再是这里的简单问题,复杂度与可判定性会显著改变。

推论与应用

一阶统一是Hindley–Milner 类型推断的约束求解核心:类型构造器扮演函数符号,类型变量扮演一阶变量。Algorithm W在应用处统一函数类型与实参类型,并把得到的替换传播到环境。

逻辑编程、项重写、定理证明和模式匹配也依赖统一;算法正确性需要同时证明返回替换确为统一子、最一般,并在不可统一时可靠失败。

参考资料
关系图谱3 个相邻概念 · 2 类关系

拖动节点调整位置。

显示关系

显示:依赖

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

被这些条目使用