【发布时间】:2018-06-19 17:33:38
【问题描述】:
我正在使用 z3 python api。我想一方面使用 Z3 的未满足核心功能,另一方面能够针对某些标准进行优化。
因此,如果我确实想使用 unsat 核心,我会执行以下操作:
self.solver = z3.Solver()
self._solver.assert_and_track(constraint1, error_message1)
self._solver.assert_and_track(constraint2, error_message2)
...
self._solver.check()
if len(self._solver.unsat_core()) > 0
print (self._solver.unsat_core())
效果很好。 但我还希望能够使用 z3.Optimize() 中的最大化()和最小化()函数。虽然这个求解器实例似乎不提供 unsat 核心。可以一起用吗?
我还在网上看到,除了使用 assert_and_track() 函数之外,还可以使用隐含来跟踪未饱和核心:隐含(p1,约束 1)。这里有什么区别?
【问题讨论】: