From 9806d230f3286aa89496f13fa749e76c46748875 Mon Sep 17 00:00:00 2001
From: Manos Koukoutos <emmanouil.koukoutos@epfl.ch>
Date: Fri, 19 Jun 2015 17:39:29 +0200
Subject: [PATCH] No forall in cvc4-cex

---
 .../leon/solvers/smtlib/SMTLIBCVC4CounterExampleSolver.scala  | 1 +
 .../scala/leon/solvers/smtlib/SMTLIBCVC4ProofSolver.scala     | 2 ++
 .../leon/solvers/smtlib/SMTLIBCVC4QuantifiedSolver.scala      | 4 +++-
 3 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/src/main/scala/leon/solvers/smtlib/SMTLIBCVC4CounterExampleSolver.scala b/src/main/scala/leon/solvers/smtlib/SMTLIBCVC4CounterExampleSolver.scala
index 361806c2d..19bf27741 100644
--- a/src/main/scala/leon/solvers/smtlib/SMTLIBCVC4CounterExampleSolver.scala
+++ b/src/main/scala/leon/solvers/smtlib/SMTLIBCVC4CounterExampleSolver.scala
@@ -20,4 +20,5 @@ class SMTLIBCVC4CounterExampleSolver(context: LeonContext, program: Program) ext
     ) ++ userDefinedOps(ctx)
   }
 
+  val allowQuantifiedAssersions: Boolean = false
 }
diff --git a/src/main/scala/leon/solvers/smtlib/SMTLIBCVC4ProofSolver.scala b/src/main/scala/leon/solvers/smtlib/SMTLIBCVC4ProofSolver.scala
index fc4d8a1eb..e02c0dfc9 100644
--- a/src/main/scala/leon/solvers/smtlib/SMTLIBCVC4ProofSolver.scala
+++ b/src/main/scala/leon/solvers/smtlib/SMTLIBCVC4ProofSolver.scala
@@ -54,4 +54,6 @@ class SMTLIBCVC4ProofSolver(context: LeonContext, program: Program) extends SMTL
         other
     }
   }
+
+  protected val allowQuantifiedAssersions: Boolean = true
 }
diff --git a/src/main/scala/leon/solvers/smtlib/SMTLIBCVC4QuantifiedSolver.scala b/src/main/scala/leon/solvers/smtlib/SMTLIBCVC4QuantifiedSolver.scala
index 9a949a6d7..70903557b 100644
--- a/src/main/scala/leon/solvers/smtlib/SMTLIBCVC4QuantifiedSolver.scala
+++ b/src/main/scala/leon/solvers/smtlib/SMTLIBCVC4QuantifiedSolver.scala
@@ -29,6 +29,8 @@ abstract class SMTLIBCVC4QuantifiedSolver(context: LeonContext, program: Program
 
   private val typedFunDefExplorationLimit = 10000
 
+  protected val allowQuantifiedAssersions: Boolean
+
   override def declareFunction(tfd: TypedFunDef): SSymbol = {
     val (funs, exploredAll) = typedTransitiveCallees(Set(tfd), Some(typedFunDefExplorationLimit))
     if (!exploredAll) {
@@ -94,7 +96,7 @@ abstract class SMTLIBCVC4QuantifiedSolver(context: LeonContext, program: Program
     if (smtFunDecls.nonEmpty) {
       sendCommand(DefineFunsRec(smtFunDecls, smtBodies))
       // Assert contracts for defined functions
-      for {
+      if (allowQuantifiedAssersions) for {
         // If we encounter a function that does not refer to the current function,
         // it is sound to assume its contracts for all inputs
         tfd <- withParams if !refersToCurrent(tfd.fd)
-- 
GitLab