3
0
Fork 0
mirror of https://github.com/Z3Prover/z3 synced 2025-04-12 12:08:18 +00:00

fix explain map to use negations

Signed-off-by: Nikolaj Bjorner <nbjorner@microsoft.com>
This commit is contained in:
Nikolaj Bjorner 2016-06-27 15:22:13 -07:00
parent f786ab15fb
commit 014c693fa5

View file

@ -104,8 +104,8 @@ class MSSSolver:
def resolve_core(self, core): def resolve_core(self, core):
new_core = set([]) new_core = set([])
for x in core: for x in core:
if x in self.mcs_map: if x in self.mcs_explain:
new_core |= self.mcs_map[x] new_core |= self.mcs_explain[x]
else: else:
new_core.add(x) new_core.add(x)
return new_core return new_core
@ -115,7 +115,7 @@ class MSSSolver:
self.mss = [] self.mss = []
self.mcs = [] self.mcs = []
self.nmcs = [] self.nmcs = []
self.mcs_map = {} self.mcs_explain = {}
self.unknown = self.soft_vars self.unknown = self.soft_vars
self.update_unknown() self.update_unknown()
cores = [] cores = []
@ -128,7 +128,7 @@ class MSSSolver:
elif is_sat == unsat: elif is_sat == unsat:
core = self.s.unsat_core() core = self.s.unsat_core()
core = self.resolve_core(core) core = self.resolve_core(core)
self.mcs_map[x] = {y for y in core if not eq(x,y)} self.mcs_explain[Not(x)] = {y for y in core if not eq(x,y)}
self.mcs.append(x) self.mcs.append(x)
self.nmcs.append(Not(x)) self.nmcs.append(Not(x))
cores += [core] cores += [core]