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 !