通过 z3 python api 和直接从可执行文件调用 smtlib2 求解器时输出的差异?

Difference in output when smtlib2 solver is invoked through z3 python api and directly from executable?

我正在使用 z3 python api。当我使用 z3 python api 求解约束时,求解器会无限运行并且不会抛出任何错误。但是,当以 smtlib2 格式转储相同的约束,然后通过 z3 可执行文件求解时,它几乎会立即给出 sat 或 unsat。 smtlib2 转储非常大(大约 1000 行)。尽管对于少量约束,z3 api 工作正常。 z3 python api 中是否存在用于处理大量约束的错误?

这可能会发生,例如,当两种方法之间的配置不同时(即使是轻微的),或者当问题不完全相同时(例如不同的约束顺序)。一些策略也是非确定性的(例如,他们在预处理中使用计时器)并且可执行文件恰好有点 faster/slower。要诊断究竟是什么导致了差异,我们需要查看您的一些问题,或者至少需要一些诊断输出,例如,在命令行上添加 -v:10 并将全局 "verbosity" 选项设置为 10 .