From aaac8c2f59090a880074be10b94840d6addff428 Mon Sep 17 00:00:00 2001
From: Philippe Suter <philippe.suter@gmail.com>
Date: Wed, 31 Oct 2012 19:13:10 +0100
Subject: [PATCH] handling LetTuple in simplifyPaths

---
 src/main/scala/leon/purescala/TreeOps.scala | 5 +++++
 src/main/scala/leon/purescala/Trees.scala   | 3 +--
 2 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/main/scala/leon/purescala/TreeOps.scala b/src/main/scala/leon/purescala/TreeOps.scala
index 14b9ae018..5c66156db 100644
--- a/src/main/scala/leon/purescala/TreeOps.scala
+++ b/src/main/scala/leon/purescala/TreeOps.scala
@@ -1245,6 +1245,11 @@ object TreeOps {
         val se = rec(e, path)
         Let(i, se, rec(b, Equals(Variable(i), se) +: path))
 
+      case LetTuple(is, e, b) =>
+        // Similar to the Let case
+        val se = rec(e, path)
+        LetTuple(is, se, rec(b, Equals(Tuple(is.map(Variable(_))), se) +: path)) 
+
       case IfExpr(cond, then, elze) =>
         val rc = rec(cond, path)
         rc match {
diff --git a/src/main/scala/leon/purescala/Trees.scala b/src/main/scala/leon/purescala/Trees.scala
index 5beb88945..9261a423e 100644
--- a/src/main/scala/leon/purescala/Trees.scala
+++ b/src/main/scala/leon/purescala/Trees.scala
@@ -83,10 +83,9 @@ object Trees {
 
   case class Tuple(exprs: Seq[Expr]) extends Expr {
     val subTpes = exprs.map(_.getType).map(bestRealType)
-    if(!subTpes.exists(_ == Untyped)) {
+    if(subTpes.forall(_ != Untyped)) {
       setType(TupleType(subTpes))
     }
-
   }
 
   // This must be 1-indexed !
-- 
GitLab