From 41a774f7c98aa0fb0a03a2580f1a2b811c9c7124 Mon Sep 17 00:00:00 2001
From: Etienne Kneuss <ekneuss@gmail.com>
Date: Mon, 29 Jun 2015 17:22:04 +0200
Subject: [PATCH] Recursive focusing now relies on correct tests

---
 src/main/scala/leon/repair/rules/Focus.scala | 6 +++---
 src/main/scala/leon/synthesis/TestBank.scala | 1 -
 2 files changed, 3 insertions(+), 4 deletions(-)

diff --git a/src/main/scala/leon/repair/rules/Focus.scala b/src/main/scala/leon/repair/rules/Focus.scala
index d1ddf7037..102ab004c 100644
--- a/src/main/scala/leon/repair/rules/Focus.scala
+++ b/src/main/scala/leon/repair/rules/Focus.scala
@@ -42,10 +42,10 @@ case object Focus extends Rule("Focus") {
     //  - returns Some(true) if for all tests e evaluates to true
     //  - returns Some(false) if for all tests e evaluates to false
     //  - returns None otherwise
-    def forAllTests(tests: Seq[Example])(e: Expr, env: Map[Identifier, Expr], evaluator: Evaluator): Option[Boolean] = {
+    def forAllTestsOf(p: Problem)(e: Expr, env: Map[Identifier, Expr], evaluator: Evaluator): Option[Boolean] = {
       var soFar: Option[Boolean] = None
 
-      tests.foreach { ex =>
+      p.tb.invalids.foreach { ex =>
         evaluator.eval(e, (p.as zip ex.ins).toMap ++ env) match {
           case EvaluationResults.Successful(BooleanLiteral(b)) => 
             soFar match {
@@ -74,7 +74,7 @@ case object Focus extends Rule("Focus") {
     }
 
     def focus(p: Problem): Traversable[RuleInstantiation] = {
-      val faTests = forAllTests(p.tb.invalids) _
+      val faTests = forAllTestsOf(p) _
 
       val TopLevelAnds(clauses) = p.ws
 
diff --git a/src/main/scala/leon/synthesis/TestBank.scala b/src/main/scala/leon/synthesis/TestBank.scala
index 94dc664b1..b4067cb2e 100644
--- a/src/main/scala/leon/synthesis/TestBank.scala
+++ b/src/main/scala/leon/synthesis/TestBank.scala
@@ -136,7 +136,6 @@ case class TestBank(valids: Seq[Example], invalids: Seq[Example]) {
       "No tests."
     }
   }
-
 }
 
 object TestBank {
-- 
GitLab