(motive : Lean.Expr → Sort u_1) →
  (x : Lean.Expr) →
    ((f arg : Lean.Expr) → motive (f.app arg)) →
      ((data : Lean.MData) → (a : Lean.Expr) → motive (Lean.Expr.mdata data a)) →
        ((e : Lean.Expr) → motive e) → motive x