From 44fad5669b6fcd89348aa5af74086c72eed3fcbf Mon Sep 17 00:00:00 2001
From: Etienne Kneuss <ekneuss@gmail.com>
Date: Thu, 15 Nov 2012 19:38:47 +0100
Subject: [PATCH] Flip answer when needed

---
 src/main/scala/leon/solvers/z3/FairZ3Solver.scala | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/main/scala/leon/solvers/z3/FairZ3Solver.scala b/src/main/scala/leon/solvers/z3/FairZ3Solver.scala
index c2b236bce..b9090d50f 100644
--- a/src/main/scala/leon/solvers/z3/FairZ3Solver.scala
+++ b/src/main/scala/leon/solvers/z3/FairZ3Solver.scala
@@ -139,7 +139,7 @@ class FairZ3Solver(reporter: Reporter) extends Solver(reporter) with AbstractZ3S
     })
   }
 
-  def solve(vc: Expr) = decide(vc, true)
+  override def solve(vc: Expr) = decide(vc, true)
 
   override def solveSAT(vc : Expr) : (Option[Boolean],Map[Identifier,Expr]) = {
     restartZ3
@@ -458,8 +458,13 @@ class FairZ3Solver(reporter: Reporter) extends Solver(reporter) with AbstractZ3S
     if(forceStop) {
       (None, Map.empty, Set.empty)
     } else {
-      assert(foundDefinitiveAnswer)
-      (definitiveAnswer, definitiveModel, definitiveCore)
+      val realAnswer = if(forValidity) {
+        definitiveAnswer
+      } else {
+        definitiveAnswer.map(!_)
+      }
+
+      (realAnswer, definitiveModel, definitiveCore)
     }
   }
 
-- 
GitLab