“沿用同余闭包的核心义务:若两个节点算子相同、对应孩子类已相同,它们的结果类也必须相同。这里与固定地面项判定的差别是,规则会不断添加此前未出现的右侧项,待维护的节点集合随搜索增长。”
形式陈述
等式与未解释函数理论 EUF 的地面输入由等式
这里的有限项集合须包含输入项的全部子项;同余条件只要求比较其中实际出现的函数应用,不必生成
算法先把所有子项建成 term DAG;常元视作零元函数。输入等式触发类合并。对函数应用项维护 signature
其中
直觉
普通等式闭包只做自反、对称和传递;函数同余还要求“相等参数可代入同一函数”。若先知道
函数是 uninterpreted,表示求解器不能使用单调性、线性或可逆性。它只保留所有函数都必须满足的确定性与同余性。这种克制使算法适用于程序中的抽象库调用,也明确标出它无法证明的领域性质。
例子与边界
考虑
前两个等式先得到类
同余规则合并
边界也可在反方向看清。
并查集适合维护不断合并的等价类,但它本身不知道 term DAG 和函数 signature。把 DSU 的
推论与应用
判定的“没有冲突就可满足”也需要理由。可把最终等价类作为模型元素,对已出现的应用规定
在 SMT 中,当前 trail 新增等式会增量触发合并;新增 disequality 若落在同一类中就产生 theory conflict。若 Boolean 层已登记原子
EUF 常用于把复杂函数暂时抽象为纯函数符号。若验证目标依赖库函数的单调性、内存副作用或异常行为,必须另加公理或更精确模型;否则 SAT 模型可能选择任意符合同余性的函数。Nelson–Oppen 组合可让 EUF 与算术 theory solver 通过共享等式协作,但组合正确性还需要签名互不相交和稳定无限等额外条件。
若任务改为寻找更便宜的纯表达式,等式饱和继续沿规则加入新的右侧项,并在批量合并后重建同余。它保留同一类中的多个候选形状,交给有限树费用提取选择代表;这与本页固定地面项集上的可满足性判定是不同输出。规则的领域语义仍需另外证明,预算停止也不等于规则闭包完成。
参考资料
- Greg Nelson and Derek C. Oppen, “Fast Decision Procedures Based on Congruence Closure,” Journal of the ACM 27(2), 1980, pp. 356–364。
- Peter J. Downey, Ravi Sethi, and Robert E. Tarjan, “Variations on the Common Subexpression Problem,” Journal of the ACM 27(4), 1980, pp. 758–771。
- Daniel Kroening and Ofer Strichman, Decision Procedures: An Algorithmic Point of View, 2nd ed., Springer, 2016, Chapter 4。