From c0b4ac13b4dc3b78e223e2e4aeff6fe87958320a Mon Sep 17 00:00:00 2001
From: Etienne Kneuss <ekneuss@gmail.com>
Date: Mon, 29 Jun 2015 14:29:53 +0200
Subject: [PATCH] Fix Asserts in VCs in fairz3

---
 src/main/scala/leon/solvers/templates/TemplateGenerator.scala | 2 +-
 src/main/scala/leon/solvers/z3/AbstractZ3Solver.scala         | 3 +++
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/main/scala/leon/solvers/templates/TemplateGenerator.scala b/src/main/scala/leon/solvers/templates/TemplateGenerator.scala
index 61693206b..fd3af5c50 100644
--- a/src/main/scala/leon/solvers/templates/TemplateGenerator.scala
+++ b/src/main/scala/leon/solvers/templates/TemplateGenerator.scala
@@ -171,7 +171,7 @@ class TemplateGenerator[T](val encoder: TemplateEncoder[T],
           rec(pathVar, body)
 
         case e @ Ensuring(_, _) =>
-          rec(pathVar, e.toAssert) 
+          rec(pathVar, e.toAssert)
 
         case l @ Let(i, e : Lambda, b) =>
           val re = rec(pathVar, e) // guaranteed variable!
diff --git a/src/main/scala/leon/solvers/z3/AbstractZ3Solver.scala b/src/main/scala/leon/solvers/z3/AbstractZ3Solver.scala
index 3959e2265..321f1234a 100644
--- a/src/main/scala/leon/solvers/z3/AbstractZ3Solver.scala
+++ b/src/main/scala/leon/solvers/z3/AbstractZ3Solver.scala
@@ -361,6 +361,9 @@ trait AbstractZ3Solver
       }
 
       case Waypoint(_, e, _) => rec(e)
+      case a @ Assert(cond, err, body) =>
+        rec(IfExpr(cond, body, Error(a.getType, err.getOrElse("Assertion failed")).setPos(a.getPos)).setPos(a.getPos))
+
       case e @ Error(tpe, _) => {
         val newAST = z3.mkFreshConst("errorValue", typeToSort(tpe))
         // Might introduce dupplicates (e), but no worries here
-- 
GitLab