相关:CNF 简化(事实上,我认为该问题的提交者可能一直在追求我想要的东西)
存在许多用于简化(或求解前“预处理”)DIMACS 格式 CNF 公式的工具,并且大多数 SAT 求解器都包含一些工具。然而,我所知道的一切都将一个平凡可满足的公式简化为一个具有零个或一个变量的平凡可满足的 CNF,即它们只试图保持公式的可满足性。我至少尝试过 SatELite 和 cryptominisat 的预处理模式。
然而,对于构建一个大问题的 CNF,在我看来,一次简化一个明确定义的问题子集会非常有用,然后可能会在最终的 CNF 中重复很多次,并添加额外的这些子公式中的一些变量之间的约束。
那么,是否存在任何工具,或者普通 SAT 求解器(或其他求解器,如 Z3,我用来生成我想最小化的 CNF)以某种方式巧妙地使用,以简化 CNF 公式,同时保留所有解决方案wrt一组给定的变量?