diff --git a/src/main/scala/leon/purescala/TreeOps.scala b/src/main/scala/leon/purescala/TreeOps.scala
index 14b9ae01800d790b8d08e6daf597ad350dce6790..5c66156db583fc59b8c20cb1e31cc1d29d097334 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 5beb889454220a7e393caba000c3428fe199d36f..9261a423e54dad5fc997c9d2be8b9d8123d372b9 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 !