迭代未饱和的核心

Iterating over unsat cores

我在 Z3 中使用 (get-unsat-core) 来提取一组不可满足的约束的 unsat-core。然而,一些约束可能有不止一个不饱和核。在这种情况下,有什么方法可以迭代 unsat-cores 吗?

是的,但它并不完全直截了当。 Mark Liffiton 及其合作者的 MARCO 算法及其变体是提取多核的良好选择。 Z3 分布带有一个 Python 简化 MARCO 算法的例子。 http://theory.stanford.edu/~nikolaj/mod.html#/sec-cores-correction-sets-satisfying-assignments

中还描述了其他变体