形式陈述 ​
Tseitin 转换接收命题公式或按 DAG 表示的布尔电路
编码为
而
若原变量集合为
因此
直觉
直接用分配律把嵌套公式展开成 CNF,可能反复复制同一子公式。Tseitin 转换改用“给中间结果命名”:每个辅助变量像电路导线,局部子句只检查这根导线是否忠实反映相邻门。全局正确性来自所有局部定义同时成立,而不是来自把原公式的全部析取组合展开。
新变量解释了保证为何是投影式的。原赋值只描述外部输入,求解器还要为内部导线选择值;定义子句把这些值钉死在真实门值上。因而一个 CNF 模型投影到
例子与边界
令
取
当
边界在于并非所有称作“Tseitin-like”的优化都保留上述唯一扩张。Plaisted–Greenbaum 极性编码会在只需某一蕴含方向时省略子句;其正确性依赖根极性和模型投影证明,不能把全双向模板的结论逐字移植。若共享子表达式本来由 DAG 表示,必须只为共享节点建一个变量;先把 DAG 展开成树再编码,可能在进入转换前已经丢失线性规模优势。
推论与应用
Tseitin 编码把电路、程序路径条件和验证条件交给CNF-SAT,同时保留从模型回读原输入的路径。硬件等价检查常编码“两个输出不同”的 miter 并断言其输出;若 CNF 可满足,投影模型给出具体反例输入,若不可满足,才说明在被编码的输入域内没有差异。
局部定义还影响传播强度。两个都保持投影可满足性的编码,可能让单位传播在同一部分赋值下推出不同数量的中间信号;较短 CNF 不必更快,传播更强的模板也不必总能抵消额外子句。编码比较应分别报告规模、可解码性和 propagation completeness,不能把求解器运行时间倒推为逻辑保证。
参考资料
- Grigori S. Tseitin, “On the Complexity of Derivation in Propositional Calculus,” in Automation of Reasoning 2, Springer, 1983, pp. 466–483; Russian original, 1968。
- David A. Plaisted and Steven Greenbaum, “A Structure-Preserving Clause Form Translation,” Journal of Symbolic Computation 2(3), 1986, pp. 293–304。
- Daniel Kroening and Ofer Strichman, Decision Procedures: An Algorithmic Point of View, 2nd ed., Springer, 2016, §2.3。