diff --git a/src/main/scala/leon/purescala/ScalaPrinter.scala b/src/main/scala/leon/purescala/ScalaPrinter.scala
index e8e5bb9f703a5a39435416f1946653dd186addd6..f957848c9b9a16d0a91881524702c71cc4ec9898 100644
--- a/src/main/scala/leon/purescala/ScalaPrinter.scala
+++ b/src/main/scala/leon/purescala/ScalaPrinter.scala
@@ -99,8 +99,6 @@ object ScalaPrinter {
     case And(exprs) => ppNary(sb, exprs, "(", " && ", ")", lvl)            // \land
     case Or(exprs) => ppNary(sb, exprs, "(", " || ", ")", lvl)             // \lor
     case Not(Equals(l, r)) => ppBinary(sb, l, r, " != ", lvl)    // \neq
-    case Iff(l,r) => sys.error("Not Scala Code")
-    case Implies(l,r) => sys.error("Not Scala Code")
     case UMinus(expr) => ppUnary(sb, expr, "-(", ")", lvl)
     case Equals(l,r) => ppBinary(sb, l, r, " == ", lvl)
     case IntLiteral(v) => sb.append(v)
@@ -108,8 +106,12 @@ object ScalaPrinter {
     case StringLiteral(s) => sb.append("\"" + s + "\"")
     case UnitLiteral => sb.append("()")
 
-    case t@Tuple(exprs) => ppNary(sb, exprs, "(", ", ", ")", lvl)
-    case s@TupleSelect(t, i) => {
+    /* These two aren't really supported in Scala, but we know how to encode them. */
+    case Implies(l,r) => pp(Or(Not(l), r), sb, lvl)
+    case Iff(l,r) => ppBinary(sb, l, r, " == ", lvl)
+
+    case Tuple(exprs) => ppNary(sb, exprs, "(", ", ", ")", lvl)
+    case TupleSelect(t, i) => {
       pp(t, sb, lvl)
       sb.append("._" + i)
     }
@@ -188,21 +190,21 @@ object ScalaPrinter {
       pp(a, sb, lvl)
       sb.append(".clone")
     }
-    case fill@ArrayFill(size, v) => {
+    case ArrayFill(size, v) => {
       sb.append("Array.fill(")
       pp(size, sb, lvl)
       sb.append(")(")
       pp(v, sb, lvl)
       sb.append(")")
     }
-    case am@ArrayMake(v) => sys.error("Not Scala Code")
-    case sel@ArraySelect(ar, i) => {
+    case ArrayMake(v) => sys.error("Not Scala Code")
+    case ArraySelect(ar, i) => {
       pp(ar, sb, lvl)
       sb.append("(")
       pp(i, sb, lvl)
       sb.append(")")
     }
-    case up@ArrayUpdated(ar, i, v) => {
+    case ArrayUpdated(ar, i, v) => {
       pp(ar, sb, lvl)
       sb.append(".updated(")
       pp(i, sb, lvl)