From d395bae9434e6c7a650a5ec1f1d3882119cc35b1 Mon Sep 17 00:00:00 2001 From: Manos Koukoutos <emmanouil.koukoutos@epfl.ch> Date: Tue, 23 Jun 2015 16:51:58 +0200 Subject: [PATCH] Simlify check/getModel in ProofSolver In case of PortfolioSolver, the Exception should be handled correctly through Future magic --- .../solvers/combinators/PortfolioSolver.scala | 4 +--- .../solvers/smtlib/SMTLIBCVC4ProofSolver.scala | 18 ++---------------- .../leon/verification/AnalysisPhase.scala | 2 -- 3 files changed, 3 insertions(+), 21 deletions(-) diff --git a/src/main/scala/leon/solvers/combinators/PortfolioSolver.scala b/src/main/scala/leon/solvers/combinators/PortfolioSolver.scala index 6cc38396d..5bb6d9471 100644 --- a/src/main/scala/leon/solvers/combinators/PortfolioSolver.scala +++ b/src/main/scala/leon/solvers/combinators/PortfolioSolver.scala @@ -61,9 +61,7 @@ class PortfolioSolver[S <: Solver with Interruptible](val context: LeonContext, None } - // Block until all solvers finished - Await.result(Future.fold(fs)(0){ (i, r) => i+1 }, 10.days) - + fs map { Await.ready(_, 10.days) } res } diff --git a/src/main/scala/leon/solvers/smtlib/SMTLIBCVC4ProofSolver.scala b/src/main/scala/leon/solvers/smtlib/SMTLIBCVC4ProofSolver.scala index e02c0dfc9..3684d61bf 100644 --- a/src/main/scala/leon/solvers/smtlib/SMTLIBCVC4ProofSolver.scala +++ b/src/main/scala/leon/solvers/smtlib/SMTLIBCVC4ProofSolver.scala @@ -37,22 +37,8 @@ class SMTLIBCVC4ProofSolver(context: LeonContext, program: Program) extends SMTL // This solver does not support model extraction override def getModel: Map[Identifier, Expr] = { - reporter.warning(s"Solver $name does not support model extraction.") - Map() - } - - // FIXME: mk: This is kind of hiding the problem under the carpet. - // We could just return an empty counterexample, but this breaks PortfolioSolver - override def check: Option[Boolean] = { - super.check match { - case Some(true) => - reporter.warning(s"Solver $name found a counterexample, " + - "but masking it as unknown because counterexamples are not supported." - ) - None - case other => - other - } + // We don't send the error through reporter because it may be caught by PortfolioSolver + throw LeonFatalError(Some(s"Solver $name does not support model extraction.")) } protected val allowQuantifiedAssersions: Boolean = true diff --git a/src/main/scala/leon/verification/AnalysisPhase.scala b/src/main/scala/leon/verification/AnalysisPhase.scala index 2975fef19..92ae2308d 100644 --- a/src/main/scala/leon/verification/AnalysisPhase.scala +++ b/src/main/scala/leon/verification/AnalysisPhase.scala @@ -9,8 +9,6 @@ import purescala.ExprOps._ import scala.concurrent.duration._ import solvers._ -import solvers.combinators.PortfolioSolver -import solvers.smtlib.SMTLIBCVC4QuantifiedSolver object AnalysisPhase extends LeonPhase[Program,VerificationReport] { val name = "Analysis" -- GitLab