From 7e8f60bf6e5c6e893924196d1c2bfad5ad49e96e Mon Sep 17 00:00:00 2001
From: Manos Koukoutos <emmanouil.koukoutos@epfl.ch>
Date: Fri, 18 Mar 2016 17:19:16 +0100
Subject: [PATCH] Refactor checkVC stopping parameter, use it in Synthesizer

---
 src/main/scala/leon/repair/Repairman.scala               | 2 +-
 src/main/scala/leon/synthesis/Synthesizer.scala          | 3 ++-
 src/main/scala/leon/verification/VerificationPhase.scala | 6 +++---
 3 files changed, 6 insertions(+), 5 deletions(-)

diff --git a/src/main/scala/leon/repair/Repairman.scala b/src/main/scala/leon/repair/Repairman.scala
index d941f1c0e..919a8c458 100644
--- a/src/main/scala/leon/repair/Repairman.scala
+++ b/src/main/scala/leon/repair/Repairman.scala
@@ -208,7 +208,7 @@ class Repairman(ctx0: LeonContext, initProgram: Program, fd: FunDef, verifTimeou
       val report = VerificationPhase.checkVCs(
         vctx,
         vcs,
-        stopAfter = Some({ (vc, vr) => vr.isInvalid })
+        stopWhen = _.isInvalid
       )
 
       val vrs = report.vrs
diff --git a/src/main/scala/leon/synthesis/Synthesizer.scala b/src/main/scala/leon/synthesis/Synthesizer.scala
index 50f2da1af..467ed7376 100644
--- a/src/main/scala/leon/synthesis/Synthesizer.scala
+++ b/src/main/scala/leon/synthesis/Synthesizer.scala
@@ -3,6 +3,7 @@
 package leon
 package synthesis
 
+import leon.purescala.Expressions.Choose
 import purescala.Definitions._
 import purescala.ExprOps._
 import purescala.DefOps._
@@ -145,7 +146,7 @@ class Synthesizer(val context : LeonContext,
     try {
       val vctx = VerificationContext(context, npr, solverf, context.reporter)
       val vcs = generateVCs(vctx, fds)
-      val vcreport = checkVCs(vctx, vcs)
+      val vcreport = checkVCs(vctx, vcs, stopWhen = _.isInvalid)
 
       if (vcreport.totalValid == vcreport.totalConditions) {
         (sol, Some(true))
diff --git a/src/main/scala/leon/verification/VerificationPhase.scala b/src/main/scala/leon/verification/VerificationPhase.scala
index e9a9fe601..39ed875a0 100644
--- a/src/main/scala/leon/verification/VerificationPhase.scala
+++ b/src/main/scala/leon/verification/VerificationPhase.scala
@@ -95,7 +95,7 @@ object VerificationPhase extends SimpleLeonPhase[Program,VerificationReport] {
   def checkVCs(
     vctx: VerificationContext,
     vcs: Seq[VC],
-    stopAfter: Option[(VC, VCResult) => Boolean] = None
+    stopWhen: VCResult => Boolean = _ => false
   ): VerificationReport = {
     val interruptManager = vctx.context.interruptManager
 
@@ -107,14 +107,14 @@ object VerificationPhase extends SimpleLeonPhase[Program,VerificationReport] {
       for (vc <- vcs.par if !stop) yield {
         val r = checkVC(vctx, vc)
         if (interruptManager.isInterrupted) interruptManager.recoverInterrupt()
-        stop = stopAfter.exists(_(vc, r))
+        stop = stopWhen(r)
         vc -> Some(r)
       }
     } else {
       for (vc <- vcs.toSeq.sortWith((a,b) => a.fd.getPos < b.fd.getPos) if !interruptManager.isInterrupted && !stop) yield {
         val r = checkVC(vctx, vc)
         if (interruptManager.isInterrupted) interruptManager.recoverInterrupt()
-        stop = stopAfter.exists(_(vc, r))
+        stop = stopWhen(r)
         vc -> Some(r)
       }
     }
-- 
GitLab