我正在使用 Z3 来解决由变量的布尔约束Vi
以及以下形式的约束组成的系统:
L < If(V0, T0, F0) + If(V1, T1, F1) + ... + If(Vn, Tn, Fn) <= H
其中L
, H
,Ti
和Fi
是整数常量。
尽管所有变量都是布尔变量,但我发现 QF_LIA 求解器比通用求解器要快一些,所以我使用的是前者。我的假设是 Z3 通过引入新变量和子句以显而易见的方式实现加法器来处理上述约束。但是,我自己进行转换(使用 MiniSat+)并将结果传递给 SAT 求解器需要的时间比 Z3 长一个数量级。因此,我想知道 Z3 使用什么策略来解决上述类型的系统 - 它是不是使用加法器进行转换?