(motive : Lean.Expr → Sort u_1) →
  (e : Lean.Expr) →
    ((typeName : Lean.Name) → (idx : ℕ) → (struct : Lean.Expr) → motive (Lean.Expr.proj typeName idx struct)) →
      ((x : Lean.Expr) → motive x) → motive e