(motive : Lean.Expr → Sort u_1) →
  (fn : Lean.Expr) →
    ((v : Lean.Literal) → motive (Lean.Expr.lit v)) →
      ((deBruijnIndex : ℕ) → motive (Lean.Expr.bvar deBruijnIndex)) →
        ((binderName : Lean.Name) →
            (d b : Lean.Expr) → (binderInfo : Lean.BinderInfo) → motive (Lean.Expr.forallE binderName d b binderInfo)) →
          ((declName : Lean.Name) → (us : List Lean.Level) → motive (Lean.Expr.const declName us)) →
            ((fvarId : Lean.FVarId) → motive (Lean.Expr.fvar fvarId)) → ((x : Lean.Expr) → motive x) → motive fn