From 29ec0e594dacc6e5f739a1054a359cd78dc39a32 Mon Sep 17 00:00:00 2001
From: Etienne Kneuss <etienne.kneuss@epfl.ch>
Date: Mon, 2 Mar 2015 17:34:36 +0100
Subject: [PATCH] Fix evaluation of lambda applications

---
 src/main/scala/leon/evaluators/DefaultEvaluator.scala  |  2 +-
 src/main/scala/leon/evaluators/DualEvaluator.scala     |  2 +-
 .../scala/leon/evaluators/RecursiveEvaluator.scala     | 10 +++++-----
 src/main/scala/leon/evaluators/TracingEvaluator.scala  |  2 +-
 src/main/scala/leon/repair/RepairNDEvaluator.scala     |  4 ++--
 .../scala/leon/repair/RepairTrackingEvaluator.scala    |  4 ++--
 6 files changed, 12 insertions(+), 12 deletions(-)

diff --git a/src/main/scala/leon/evaluators/DefaultEvaluator.scala b/src/main/scala/leon/evaluators/DefaultEvaluator.scala
index d92c65399..bf27ce8bd 100644
--- a/src/main/scala/leon/evaluators/DefaultEvaluator.scala
+++ b/src/main/scala/leon/evaluators/DefaultEvaluator.scala
@@ -15,6 +15,6 @@ class DefaultEvaluator(ctx: LeonContext, prog: Program) extends RecursiveEvaluat
   def initGC = new GlobalContext()
 
   case class DefaultRecContext(mappings: Map[Identifier, Expr]) extends RecContext {
-    def withVars(news: Map[Identifier, Expr]) = copy(news)
+    def newVars(news: Map[Identifier, Expr]) = copy(news)
   }
 }
diff --git a/src/main/scala/leon/evaluators/DualEvaluator.scala b/src/main/scala/leon/evaluators/DualEvaluator.scala
index 7903f8c5e..b350aafc5 100644
--- a/src/main/scala/leon/evaluators/DualEvaluator.scala
+++ b/src/main/scala/leon/evaluators/DualEvaluator.scala
@@ -26,7 +26,7 @@ class DualEvaluator(ctx: LeonContext, prog: Program, params: CodeGenParams) exte
   val isCompiled = prog.definedFunctions.toSet
 
   case class DefaultRecContext(mappings: Map[Identifier, Expr], needJVMRef: Boolean = false) extends RecContext {
-    def withVars(news: Map[Identifier, Expr]) = copy(news)
+    def newVars(news: Map[Identifier, Expr]) = copy(news)
   }
 
   case class RawObject(o: AnyRef, tpe: TypeTree) extends Expr {
diff --git a/src/main/scala/leon/evaluators/RecursiveEvaluator.scala b/src/main/scala/leon/evaluators/RecursiveEvaluator.scala
index a741602dd..b62d2ffc5 100644
--- a/src/main/scala/leon/evaluators/RecursiveEvaluator.scala
+++ b/src/main/scala/leon/evaluators/RecursiveEvaluator.scala
@@ -32,14 +32,14 @@ abstract class RecursiveEvaluator(ctx: LeonContext, prog: Program, maxSteps: Int
   trait RecContext {
     def mappings: Map[Identifier, Expr]
 
-    def withVars(news: Map[Identifier, Expr]): RC;
+    def newVars(news: Map[Identifier, Expr]): RC;
 
     def withNewVar(id: Identifier, v: Expr): RC = {
-      withVars(mappings + (id -> v))
+      newVars(mappings + (id -> v))
     }
 
     def withNewVars(news: Map[Identifier, Expr]): RC = {
-      withVars(mappings ++ news)
+      newVars(mappings ++ news)
     }
   }
 
@@ -89,7 +89,7 @@ abstract class RecursiveEvaluator(ctx: LeonContext, prog: Program, maxSteps: Int
         case Lambda(params, body) =>
           val newArgs = args.map(e)
           val mapping = (params.map(_.id) zip newArgs).toMap
-          e(body)(rctx.withVars(mapping), gctx)
+          e(body)(rctx.withNewVars(mapping), gctx)
         case f =>
           throw EvalError("Cannot apply non-lambda function " + f)
       }
@@ -149,7 +149,7 @@ abstract class RecursiveEvaluator(ctx: LeonContext, prog: Program, maxSteps: Int
       val evArgs = args.map(a => e(a))
 
       // build a mapping for the function...
-      val frame = rctx.withVars((tfd.params.map(_.id) zip evArgs).toMap)
+      val frame = rctx.newVars((tfd.params.map(_.id) zip evArgs).toMap)
       
       if(tfd.hasPrecondition) {
         e(tfd.precondition.get)(frame, gctx) match {
diff --git a/src/main/scala/leon/evaluators/TracingEvaluator.scala b/src/main/scala/leon/evaluators/TracingEvaluator.scala
index c95b5f716..8321a9c5c 100644
--- a/src/main/scala/leon/evaluators/TracingEvaluator.scala
+++ b/src/main/scala/leon/evaluators/TracingEvaluator.scala
@@ -21,7 +21,7 @@ class TracingEvaluator(ctx: LeonContext, prog: Program, maxSteps: Int = 1000) ex
   class TracingGlobalContext(var values: List[(Tree, Expr)]) extends GlobalContext
 
   case class TracingRecContext(mappings: Map[Identifier, Expr], tracingFrames: Int) extends RecContext {
-    def withVars(news: Map[Identifier, Expr]) = copy(mappings = news)
+    def newVars(news: Map[Identifier, Expr]) = copy(mappings = news)
   }
 
   override def e(expr: Expr)(implicit rctx: RC, gctx: GC): Expr = {
diff --git a/src/main/scala/leon/repair/RepairNDEvaluator.scala b/src/main/scala/leon/repair/RepairNDEvaluator.scala
index 054e20aa3..4dd78d134 100644
--- a/src/main/scala/leon/repair/RepairNDEvaluator.scala
+++ b/src/main/scala/leon/repair/RepairNDEvaluator.scala
@@ -26,7 +26,7 @@ class RepairNDEvaluator(ctx: LeonContext, prog: Program, fd : FunDef, cond: Expr
       val evArgs = args.map(a => e(a))
 
       // build a mapping for the function...
-      val frame = rctx.withVars((tfd.params.map(_.id) zip evArgs).toMap)
+      val frame = rctx.newVars((tfd.params.map(_.id) zip evArgs).toMap)
       
       if(tfd.hasPrecondition) {
         e(tfd.precondition.get)(frame, gctx) match {
@@ -76,4 +76,4 @@ class RepairNDEvaluator(ctx: LeonContext, prog: Program, fd : FunDef, cond: Expr
   
   
   
-}
\ No newline at end of file
+}
diff --git a/src/main/scala/leon/repair/RepairTrackingEvaluator.scala b/src/main/scala/leon/repair/RepairTrackingEvaluator.scala
index 5b8791f47..791b7ec01 100644
--- a/src/main/scala/leon/repair/RepairTrackingEvaluator.scala
+++ b/src/main/scala/leon/repair/RepairTrackingEvaluator.scala
@@ -45,7 +45,7 @@ class RepairTrackingEvaluator(ctx: LeonContext, prog: Program) extends Recursive
   def fiStatus = fiStatus_.toMap.withDefaultValue(false)
   
   case class CollectingRecContext(mappings: Map[Identifier, Expr], lastFI : Option[FI]) extends RecContext {
-    def withVars(news: Map[Identifier, Expr]) = copy(news, lastFI)
+    def newVars(news: Map[Identifier, Expr]) = copy(news, lastFI)
     def withLastFI(fi : FI) = copy(lastFI = Some(fi))
   }
   
@@ -59,7 +59,7 @@ class RepairTrackingEvaluator(ctx: LeonContext, prog: Program) extends Recursive
       val evArgs = args.map(a => e(a))
       
       // build a mapping for the function...
-      val frameBlamingCaller = rctx.withVars((tfd.params.map(_.id) zip evArgs).toMap)
+      val frameBlamingCaller = rctx.newVars((tfd.params.map(_.id) zip evArgs).toMap)
       
       if(tfd.hasPrecondition) {
         e(tfd.precondition.get)(frameBlamingCaller, gctx) match {
-- 
GitLab