(motive : Lean.IR.Decl → Sort u_1) →
  (decl : Lean.IR.Decl) →
    ((f : Lean.IR.FunId) →
        (ps : Array Lean.IR.Param) →
          (type : Lean.IR.IRType) →
            (body : Lean.IR.FnBody) → (info : Lean.IR.DeclInfo) → motive (Lean.IR.Decl.fdecl f ps type body info)) →
      ((f : Lean.IR.FunId) →
          (ps : Array Lean.IR.Param) →
            (type : Lean.IR.IRType) → motive (Lean.IR.Decl.extern f ps type { entries := [Lean.ExternEntry.opaque] })) →
        ((f : Lean.IR.FunId) →
            (ps : Array Lean.IR.Param) →
              (type : Lean.IR.IRType) →
                (extData : Lean.ExternAttrData) → motive (Lean.IR.Decl.extern f ps type extData)) →
          motive decl