(motive : Lean.Expr → Sort u_1) →
  (f : Lean.Expr) →
    ((n : ℕ) → motive (Lean.Expr.lit (Lean.Literal.natVal n))) →
      ((fName : Lean.Name) → (us : List Lean.Level) → motive (Lean.Expr.const fName us)) →
        ((x : Lean.Expr) → motive x) → motive f