diff --git a/src/main/scala/inox/ast/DSL.scala b/src/main/scala/inox/ast/DSL.scala
index ce936c5800df410fd70840e96ab6a84ac23ed451..fc33d002746a144a447bceb0ed526cf0558e86fe 100644
--- a/src/main/scala/inox/ast/DSL.scala
+++ b/src/main/scala/inox/ast/DSL.scala
@@ -156,7 +156,7 @@ trait DSL {
     * @param v The value bound to the let-variable
     * @param body The context which will be filled with the let-variable
     */
-  def let(vd: ValDef, v: Expr)(body: Expr => Expr)(implicit simpLvl: SimplificationLevel) = {
+  def let(vd: ValDef, v: Expr)(body: Variable => Expr)(implicit simpLvl: SimplificationLevel) = {
     simp(
       Let(vd, v, body(vd.toVariable)),
       symbols.let(vd, v, body(vd.toVariable))
@@ -164,20 +164,22 @@ trait DSL {
   }
 
   // Lambdas
-  def \(vd: ValDef)(body: Expr => Expr) = {
+  def \(vd: ValDef)(body: Variable => Expr) = {
     Lambda(Seq(vd), body(vd.toVariable))
   }
 
-  def \(vd1: ValDef, vd2: ValDef)(body: (Expr, Expr) => Expr) = {
+  def \(vd1: ValDef, vd2: ValDef)
+       (body: (Variable, Variable) => Expr) = {
     Lambda(Seq(vd1, vd2), body(vd1.toVariable, vd2.toVariable))
   }
 
-  def \(vd1: ValDef, vd2: ValDef, vd3: ValDef)(body: (Expr, Expr, Expr) => Expr) = {
+  def \(vd1: ValDef, vd2: ValDef, vd3: ValDef)
+       (body: (Variable, Variable, Variable) => Expr) = {
     Lambda(Seq(vd1, vd2, vd3), body(vd1.toVariable, vd2.toVariable, vd3.toVariable))
   }
 
   def \(vd1: ValDef, vd2: ValDef, vd3: ValDef, vd4: ValDef)
-       (body: (Expr, Expr, Expr, Expr) => Expr) = {
+       (body: (Variable, Variable, Variable, Variable) => Expr) = {
     Lambda(
       Seq(vd1, vd2, vd3, vd4),
       body(vd1.toVariable, vd2.toVariable, vd3.toVariable, vd4.toVariable)
@@ -211,19 +213,19 @@ trait DSL {
       val Seq() = pat.binders
       MatchCase(pat, guard, rhs)
     }
-    def ==>(rhs: Expr => Expr) = {
+    def ==>(rhs: Variable => Expr) = {
       val Seq(b1) = pat.binders
       MatchCase(pat, guard, rhs(b1.toVariable))
     }
-    def ==>(rhs: (Expr, Expr) => Expr) = {
+    def ==>(rhs: (Variable, Variable) => Expr) = {
       val Seq(b1, b2) = pat.binders
       MatchCase(pat, guard, rhs(b1.toVariable, b2.toVariable))
     }
-    def ==>(rhs: (Expr, Expr, Expr) => Expr) = {
+    def ==>(rhs: (Variable, Variable, Variable) => Expr) = {
       val Seq(b1, b2, b3) = pat.binders
       MatchCase(pat, guard, rhs(b1.toVariable, b2.toVariable, b3.toVariable))
     }
-    def ==>(rhs: (Expr, Expr, Expr, Expr) => Expr) = {
+    def ==>(rhs: (Variable, Variable, Variable, Variable) => Expr) = {
       val Seq(b1, b2, b3, b4) = pat.binders
       MatchCase(pat, guard,
         rhs(b1.toVariable, b2.toVariable, b3.toVariable, b4.toVariable))
@@ -339,7 +341,7 @@ trait DSL {
     */
   def mkFunDef(id: Identifier)
               (tParamNames: String*)
-              (builder: Seq[TypeParameter] => (Seq[ValDef], Type, Seq[Expr] => Expr)) = {
+              (builder: Seq[TypeParameter] => (Seq[ValDef], Type, Seq[Variable] => Expr)) = {
     val tParams = tParamNames map TypeParameter.fresh
     val tParamDefs = tParams map TypeParameterDef
     val (params, retType, bodyBuilder) = builder(tParams)