(motive : Lean.Expr → Sort u_1) →
  (e : Lean.Expr) →
    ((fn arg : Lean.Expr) → motive (fn.app arg)) →
      ((binderName : Lean.Name) →
          (d b : Lean.Expr) → (binderInfo : Lean.BinderInfo) → motive (Lean.Expr.forallE binderName d b binderInfo)) →
        ((x : Lean.Expr) → motive x) → motive e