diff --git a/src/main/scala/leon/purescala/Constructors.scala b/src/main/scala/leon/purescala/Constructors.scala
index 2f7092fce91106394a7ccd0c4cc61a78df218a94..9ec719e256a25a786421acbfa359a7eb7ca11799 100644
--- a/src/main/scala/leon/purescala/Constructors.scala
+++ b/src/main/scala/leon/purescala/Constructors.scala
@@ -23,7 +23,7 @@ object Constructors {
     case Nil =>
       body
     case x :: Nil =>
-      if (value.getType == x.getType || !value.getType.isInstanceOf[TupleType]) {
+      if (isSubtypeOf(value.getType, x.getType) || !value.getType.isInstanceOf[TupleType]) {
         // This is for cases where we build it like: letTuple(List(x), tupleWrap(List(z)))
         Let(x, value, body)
       } else {