File: .lake/packages/lean4/src/lean/Lean/Meta/UnificationHint.lean

full_name: Lean.Meta.UnificationHintKey
code: abbrev UnificationHintKey 
goal: Type

full_name: Lean.Meta.UnificationHintEntry
code: structure UnificationHintEntry where
  keys        : Array UnificationHintKey
  val         : Name
  deriving Inhabited
goal: Type

full_name: Lean.Meta.UnificationHintEntry.keys
code: structure UnificationHintEntry where
  keys        : Array UnificationHintKey
  val         : Name
  deriving Inhabited
goal: Array Lean.Meta.UnificationHintKey

full_name: Lean.Meta.instInhabitedUnificationHintEntry
code: structure UnificationHintEntry where
  keys        : Array UnificationHintKey
  val         : Name
  deriving Inhabited
goal: Inhabited Lean.Meta.UnificationHintEntry

full_name: Lean.Meta.UnificationHintEntry.val
code: structure UnificationHintEntry where
  keys        : Array UnificationHintKey
  val         : Name
  deriving Inhabited
goal: Lean.Name

full_name: Lean.Meta.UnificationHintTree
code: abbrev UnificationHintTree 
goal: Type

full_name: Lean.Meta.UnificationHints.discrTree
code: structure UnificationHints where
  discrTree : UnificationHintTree := DiscrTree.empty
  deriving Inhabited
goal: Lean.Meta.UnificationHintTree

full_name: Lean.Meta.UnificationHints
code: structure UnificationHints where
  discrTree : UnificationHintTree := DiscrTree.empty
  deriving Inhabited
goal: Type

full_name: Lean.Meta.instInhabitedUnificationHints
code: structure UnificationHints where
  discrTree : UnificationHintTree := DiscrTree.empty
  deriving Inhabited
goal: Inhabited Lean.Meta.UnificationHints

full_name: Lean.Meta.instToFormatUnificationHints
code: instance : ToFormat UnificationHints 
goal: Lean.ToFormat Lean.Meta.UnificationHints

full_name: Lean.Meta.UnificationHints.config
code: def UnificationHints.config : WhnfCoreConfig 
goal: Lean.Meta.WhnfCoreConfig

full_name: Lean.Meta.UnificationHints.add
code: def UnificationHints.add (hints : UnificationHints) (e : UnificationHintEntry) : UnificationHints 
goal: Lean.Meta.UnificationHints

full_name: Lean.Meta.initFn._@..lake.packages.lean4.src.lean.Lean.Meta.UnificationHint._hyg.109
code: builtin_initialize unificationHintExtension : SimpleScopedEnvExtension UnificationHintEntry UnificationHints ←
  registerSimpleScopedEnvExtension {
    addEntry := UnificationHints.add
    initial  := {}
  }
goal: IO (Lean.SimpleScopedEnvExtension Lean.Meta.UnificationHintEntry Lean.Meta.UnificationHints)

full_name: Lean.Meta.unificationHintExtension
code: builtin_initialize unificationHintExtension : SimpleScopedEnvExtension UnificationHintEntry UnificationHints ←
  registerSimpleScopedEnvExtension {
    addEntry := UnificationHints.add
    initial  := {}
  }
goal: Lean.SimpleScopedEnvExtension Lean.Meta.UnificationHintEntry Lean.Meta.UnificationHints

full_name: Lean.Meta.UnificationConstraint.lhs
code: structure UnificationConstraint where
  lhs : Expr
  rhs : Expr
goal: Lean.Expr

full_name: Lean.Meta.UnificationConstraint
code: structure UnificationConstraint where
  lhs : Expr
  rhs : Expr
goal: Type

full_name: Lean.Meta.UnificationConstraint.rhs
code: structure UnificationConstraint where
  lhs : Expr
  rhs : Expr
goal: Lean.Expr

full_name: Lean.Meta.UnificationHint.constraints
code: structure UnificationHint where
  pattern     : UnificationConstraint
  constraints : List UnificationConstraint
goal: List Lean.Meta.UnificationConstraint

full_name: Lean.Meta.UnificationHint.pattern
code: structure UnificationHint where
  pattern     : UnificationConstraint
  constraints : List UnificationConstraint
goal: Lean.Meta.UnificationConstraint

full_name: Lean.Meta.UnificationHint
code: structure UnificationHint where
  pattern     : UnificationConstraint
  constraints : List UnificationConstraint
goal: Type

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Meta.UnificationHint.0.Lean.Meta.decodeUnificationHint
code: private partial def decodeUnificationHint (e : Expr) : ExceptT MessageData Id UnificationHint 
goal: ExceptT Lean.MessageData Id Lean.Meta.UnificationHint

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Meta.UnificationHint.0.Lean.Meta.decodeUnificationHint.decode
code: private partial def decodeUnificationHint (e : Expr) : ExceptT MessageData Id UnificationHint 
goal: ExceptT Lean.MessageData Id Lean.Meta.UnificationHint

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Meta.UnificationHint.0.Lean.Meta.decodeUnificationHint.decodeConstraint
code: private partial def decodeUnificationHint (e : Expr) : ExceptT MessageData Id UnificationHint 
goal: ExceptT Lean.MessageData Id Lean.Meta.UnificationConstraint

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Meta.UnificationHint.0.Lean.Meta.validateHint
code: private partial def validateHint (hint : UnificationHint) : MetaM Unit 
goal: Lean.MetaM Unit

full_name: Lean.Meta.addUnificationHint
code: def addUnificationHint (declName : Name) (kind : AttributeKind) : MetaM Unit 
goal: Lean.MetaM Unit

full_name: Lean.Meta.initFn._@..lake.packages.lean4.src.lean.Lean.Meta.UnificationHint._hyg.805
code: builtin_initialize
  registerBuiltinAttribute {
    name  := `unification_hint
    descr := "unification hint"
    add   := fun declName stx kind => do
      Attribute.Builtin.ensureNoArgs stx
      discard <| addUnificationHint declName kind |>.run
  }
goal: IO Unit

full_name: Lean.Meta.tryUnificationHints
code: def tryUnificationHints (t s : Expr) : MetaM Bool 
goal: Lean.MetaM Bool

full_name: Lean.Meta.tryUnificationHints.tryCandidate
code: def tryUnificationHints (t s : Expr) : MetaM Bool 
goal: Lean.MetaM Bool

full_name: Lean.Meta.tryUnificationHints.isDefEqPattern
code: def tryUnificationHints (t s : Expr) : MetaM Bool 
goal: Lean.MetaM Bool

full_name: Lean.Meta.initFn._@..lake.packages.lean4.src.lean.Lean.Meta.UnificationHint._hyg.2265
code: builtin_initialize
  registerTraceClass `Meta.isDefEq.hint
goal: IO Unit