我使用的是z3 python api。我希望一方面使用Z3的非side核心功能,另一方面能够针对某些标准进行优化。
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()中的maximize()和minimize()函数。可以一起使用吗?
这里的区别是什么?
发布于 2018-06-19 18:41:49
Z3不支持同时生成优化和非饱和内核。这是大约两个月前的相关门票:https://github.com/Z3Prover/z3/issues/1577
请注意,这并不是因为它不能实现:只是他们还没有实现它。在那里注册您的请求可能会激励他们添加支持!
关于你用隐含的方式跟踪未饱和内核的问题:我认为这基本上就是assert_and_track
所做的。你可以在这里看到它的源代码:https://github.com/Z3Prover/z3/blob/d2c937a989ea360e9cba06583eccaa257c75870f/src/api/python/z3/z3.py#L6418-L6446是不是因为某种原因它不能为你工作?
https://stackoverflow.com/questions/50934008
复制相似问题