(motive : Lean.Expr → Sort u_1) →
  (x : Lean.Expr) →
    ((n : Lean.Name) →
        (us : List Lean.Level) → (arg e' : Lean.Expr) → motive (((Lean.Expr.const n us).app arg).app e')) →
      ((binderName : Lean.Name) →
          (binderType : Lean.Expr) →
            (binderInfo : Lean.BinderInfo) →
              (e' : Lean.Expr) → motive ((Lean.Expr.lam binderName binderType (Lean.Expr.bvar 0) binderInfo).app e')) →
        ((declName : Lean.Name) →
            (type v : Lean.Expr) →
              (nondep : Bool) → motive (Lean.Expr.letE declName type v (Lean.Expr.bvar 0) nondep)) →
          ((x : Lean.Expr) → motive x) → motive x