File: .lake/packages/lean4/src/lean/Lean/Elab/Deriving/Basic.lean

full_name: Lean.Elab.Term.MkInstResult.instVal
code: /-- Result for `mkInst?` -/
structure MkInstResult where
  instVal   : Expr
  instType  : Expr
  outParams : Array Expr := #[]
goal: Lean.Expr

full_name: Lean.Elab.Term.MkInstResult.outParams
code: /-- Result for `mkInst?` -/
structure MkInstResult where
  instVal   : Expr
  instType  : Expr
  outParams : Array Expr := #[]
goal: Array Lean.Expr

full_name: Lean.Elab.Term.MkInstResult
code: /-- Result for `mkInst?` -/
structure MkInstResult where
  instVal   : Expr
  instType  : Expr
  outParams : Array Expr := #[]
goal: Type

full_name: Lean.Elab.Term.MkInstResult.instType
code: /-- Result for `mkInst?` -/
structure MkInstResult where
  instVal   : Expr
  instType  : Expr
  outParams : Array Expr := #[]
goal: Lean.Expr

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Elab.Deriving.Basic.0.Lean.Elab.Term.mkInst?
code: /--
  Construct an instance for `className out₁ ... outₙ type`.
  The method support classes with a prefix of `outParam`s (e.g. `MonadReader`). -/
private partial def mkInst? (className : Name) (type : Expr) : MetaM (Option MkInstResult) 
goal: Lean.MetaM (Option Lean.Elab.Term.MkInstResult)

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Elab.Deriving.Basic.0.Lean.Elab.Term.mkInst?.go?
code: /--
  Construct an instance for `className out₁ ... outₙ type`.
  The method support classes with a prefix of `outParam`s (e.g. `MonadReader`). -/
private partial def mkInst? (className : Name) (type : Expr) : MetaM (Option MkInstResult) 
goal: Lean.MetaM (Option Lean.Elab.Term.MkInstResult)

full_name: Lean.Elab.Term.processDefDeriving
code: def processDefDeriving (className : Name) (declName : Name) : TermElabM Bool 
goal: Lean.Elab.TermElabM Bool

full_name: Lean.Elab.DerivingHandler
code: def DerivingHandler 
goal: Type

full_name: Lean.Elab.DerivingHandlerNoArgs
code: def DerivingHandlerNoArgs 
goal: Type

full_name: Lean.Elab.initFn._@..lake.packages.lean4.src.lean.Lean.Elab.Deriving.Basic._hyg.632
code: builtin_initialize derivingHandlersRef : IO.Ref (NameMap (List DerivingHandler)) ← IO.mkRef {}
goal: IO (IO.Ref (Lean.NameMap (List Lean.Elab.DerivingHandler)))

full_name: Lean.Elab.derivingHandlersRef
code: builtin_initialize derivingHandlersRef : IO.Ref (NameMap (List DerivingHandler)) ← IO.mkRef {}
goal: IO.Ref (Lean.NameMap (List Lean.Elab.DerivingHandler))

full_name: Lean.Elab.registerDerivingHandlerWithArgs
code: /-- A `DerivingHandler` is called on the fully qualified names of all types it is running for
as well as the syntax of a `with` argument, if present.

For example, `deriving instance Foo with fooArgs for Bar, Baz` invokes
``fooHandler #[`Bar, `Baz] `(fooArgs)``. -/
def registerDerivingHandlerWithArgs (className : Name) (handler : DerivingHandler) : IO Unit 
goal: IO Unit

full_name: Lean.Elab.registerDerivingHandler
code: /-- Like `registerBuiltinDerivingHandlerWithArgs` but ignoring any `with` argument. -/
def registerDerivingHandler (className : Name) (handler : DerivingHandlerNoArgs) : IO Unit 
goal: IO Unit

full_name: Lean.Elab.defaultHandler
code: def defaultHandler (className : Name) (typeNames : Array Name) : CommandElabM Unit 
goal: Lean.Elab.Command.CommandElabM Unit

full_name: Lean.Elab.applyDerivingHandlers
code: def applyDerivingHandlers (className : Name) (typeNames : Array Name) (args? : Option (TSyntax ``Parser.Term.structInst)) : CommandElabM Unit 
goal: Lean.Elab.Command.CommandElabM Unit

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Elab.Deriving.Basic.0.Lean.Elab.tryApplyDefHandler
code: private def tryApplyDefHandler (className : Name) (declName : Name) : CommandElabM Bool 
goal: Lean.Elab.Command.CommandElabM Bool

full_name: Lean.Elab.elabDeriving
code: @[builtin_command_elab «deriving»] def elabDeriving : CommandElab
  
goal: Lean.Elab.Command.CommandElab

full_name: Lean.Elab.DerivingClassView.ref
code: structure DerivingClassView where
  ref : Syntax
  className : Name
  args? : Option (TSyntax ``Parser.Term.structInst)
goal: Lean.Syntax

full_name: Lean.Elab.DerivingClassView.args?
code: structure DerivingClassView where
  ref : Syntax
  className : Name
  args? : Option (TSyntax ``Parser.Term.structInst)
goal: Option (Lean.TSyntax `Lean.Parser.Term.structInst)

full_name: Lean.Elab.DerivingClassView
code: structure DerivingClassView where
  ref : Syntax
  className : Name
  args? : Option (TSyntax ``Parser.Term.structInst)
goal: Type

full_name: Lean.Elab.DerivingClassView.className
code: structure DerivingClassView where
  ref : Syntax
  className : Name
  args? : Option (TSyntax ``Parser.Term.structInst)
goal: Lean.Name

full_name: Lean.Elab.getOptDerivingClasses
code: def getOptDerivingClasses (optDeriving : Syntax) : CoreM (Array DerivingClassView) 
goal: Lean.CoreM (Array Lean.Elab.DerivingClassView)

full_name: Lean.Elab.DerivingClassView.applyHandlers
code: def DerivingClassView.applyHandlers (view : DerivingClassView) (declNames : Array Name) : CommandElabM Unit 
goal: Lean.Elab.Command.CommandElabM Unit

full_name: Lean.Elab.initFn._@..lake.packages.lean4.src.lean.Lean.Elab.Deriving.Basic._hyg.2516
code: builtin_initialize
  registerTraceClass `Elab.Deriving
goal: IO Unit