diff --git a/src/main/scala/leon/synthesis/rules/EquivalentInputs.scala b/src/main/scala/leon/synthesis/rules/EquivalentInputs.scala
index e4562426c14f31765778f6d2177a5b4dc199106d..609b98f502e4947a598348fd97acc2f939682260 100644
--- a/src/main/scala/leon/synthesis/rules/EquivalentInputs.scala
+++ b/src/main/scala/leon/synthesis/rules/EquivalentInputs.scala
@@ -15,6 +15,8 @@ import purescala.Types.CaseClassType
 case object EquivalentInputs extends NormalizingRule("EquivalentInputs") {
   def instantiateOn(implicit hctx: SearchContext, p: Problem): Traversable[RuleInstantiation] = {
 
+    val simplifier = Simplifiers.bestEffort(hctx, hctx.program)(_:Expr)
+
     var subst = Map.empty[Identifier, Expr]
     var reverseSubst = Map.empty[Identifier, Expr]
 
@@ -54,7 +56,7 @@ case object EquivalentInputs extends NormalizingRule("EquivalentInputs") {
       obsolete ++= equivalences.map(_._1)
       free ++= unbound
 
-      def replace(e: Expr) = replaceFromIDs(equivalences.toMap, e)
+      def replace(e: Expr) = simplifier(replaceFromIDs(equivalences.toMap, e))
       subst = subst.mapValues(replace) ++ equivalences
 
       val reverse = equivalences.toMap.flatMap { case (id, CaseClass(cct, fields)) =>
@@ -85,13 +87,13 @@ case object EquivalentInputs extends NormalizingRule("EquivalentInputs") {
         })
       }
 
-      val simplifier = Simplifiers.bestEffort(hctx, hctx.program)(_:Expr, newPC)
+      val simplifierWithNewPC = Simplifiers.bestEffort(hctx, hctx.program)(_:Expr, newPC)
 
       val sub = p.copy(
         as = newAs,
         ws = replaceFromIDs(subst, p.ws),
         pc = newPC,
-        phi = simplifier(replaceFromIDs(subst, p.phi)),
+        phi = simplifierWithNewPC(replaceFromIDs(subst, p.phi)),
         eb = newBank
       )