(motive : Lean.Elab.MacroStack → Sort u_1) →
  (macroStack : Lean.Elab.MacroStack) →
    (Unit → motive []) →
      ((stack : Lean.Elab.MacroStack) →
          (top : Lean.Elab.MacroStackElem) →
            (tail : List Lean.Elab.MacroStackElem) →
              (h : stack = top :: tail) → motive (namedPattern stack (top :: tail) h)) →
        motive macroStack