File: .lake/packages/lean4/src/lean/Lean/Meta/Tactic/Simp/SimpCongrTheorems.lean

full_name: Lean.Meta.SimpCongrTheorem.hypothesesPos
code: /--
  Data for user-defined theorems marked with the `congr` attribute.

  This type should be confused with `CongrTheorem` which represents different kinds of automatically
  generated congruence theorems. The `simp` tactic also uses some of them.
-/
structure SimpCongrTheorem where
  theoremName   : Name
  funName       : Name
  hypothesesPos : Array Nat
  priority      : Nat
deriving Inhabited, Repr
goal: Array Nat

full_name: Lean.Meta.SimpCongrTheorem
code: /--
  Data for user-defined theorems marked with the `congr` attribute.

  This type should be confused with `CongrTheorem` which represents different kinds of automatically
  generated congruence theorems. The `simp` tactic also uses some of them.
-/
structure SimpCongrTheorem where
  theoremName   : Name
  funName       : Name
  hypothesesPos : Array Nat
  priority      : Nat
deriving Inhabited, Repr
goal: Type

full_name: Lean.Meta.SimpCongrTheorem.theoremName
code: /--
  Data for user-defined theorems marked with the `congr` attribute.

  This type should be confused with `CongrTheorem` which represents different kinds of automatically
  generated congruence theorems. The `simp` tactic also uses some of them.
-/
structure SimpCongrTheorem where
  theoremName   : Name
  funName       : Name
  hypothesesPos : Array Nat
  priority      : Nat
deriving Inhabited, Repr
goal: Lean.Name

full_name: Lean.Meta.SimpCongrTheorem.funName
code: /--
  Data for user-defined theorems marked with the `congr` attribute.

  This type should be confused with `CongrTheorem` which represents different kinds of automatically
  generated congruence theorems. The `simp` tactic also uses some of them.
-/
structure SimpCongrTheorem where
  theoremName   : Name
  funName       : Name
  hypothesesPos : Array Nat
  priority      : Nat
deriving Inhabited, Repr
goal: Lean.Name

full_name: Lean.Meta.instInhabitedSimpCongrTheorem
code: /--
  Data for user-defined theorems marked with the `congr` attribute.

  This type should be confused with `CongrTheorem` which represents different kinds of automatically
  generated congruence theorems. The `simp` tactic also uses some of them.
-/
structure SimpCongrTheorem where
  theoremName   : Name
  funName       : Name
  hypothesesPos : Array Nat
  priority      : Nat
deriving Inhabited, Repr
goal: Inhabited Lean.Meta.SimpCongrTheorem

full_name: Lean.Meta.instReprSimpCongrTheorem
code: /--
  Data for user-defined theorems marked with the `congr` attribute.

  This type should be confused with `CongrTheorem` which represents different kinds of automatically
  generated congruence theorems. The `simp` tactic also uses some of them.
-/
structure SimpCongrTheorem where
  theoremName   : Name
  funName       : Name
  hypothesesPos : Array Nat
  priority      : Nat
deriving Inhabited, Repr
goal: Repr Lean.Meta.SimpCongrTheorem

full_name: Lean.Meta.SimpCongrTheorem.priority
code: /--
  Data for user-defined theorems marked with the `congr` attribute.

  This type should be confused with `CongrTheorem` which represents different kinds of automatically
  generated congruence theorems. The `simp` tactic also uses some of them.
-/
structure SimpCongrTheorem where
  theoremName   : Name
  funName       : Name
  hypothesesPos : Array Nat
  priority      : Nat
deriving Inhabited, Repr
goal: Nat

full_name: Lean.Meta.instInhabitedSimpCongrTheorems
code: structure SimpCongrTheorems where
  lemmas : SMap Name (List SimpCongrTheorem) := {}
  deriving Inhabited, Repr
goal: Inhabited Lean.Meta.SimpCongrTheorems

full_name: Lean.Meta.instReprSimpCongrTheorems
code: structure SimpCongrTheorems where
  lemmas : SMap Name (List SimpCongrTheorem) := {}
  deriving Inhabited, Repr
goal: Repr Lean.Meta.SimpCongrTheorems

full_name: Lean.Meta.SimpCongrTheorems
code: structure SimpCongrTheorems where
  lemmas : SMap Name (List SimpCongrTheorem) := {}
  deriving Inhabited, Repr
goal: Type

full_name: Lean.Meta.SimpCongrTheorems.lemmas
code: structure SimpCongrTheorems where
  lemmas : SMap Name (List SimpCongrTheorem) := {}
  deriving Inhabited, Repr
goal: Lean.SMap Lean.Name (List Lean.Meta.SimpCongrTheorem)

full_name: Lean.Meta.SimpCongrTheorems.get
code: def SimpCongrTheorems.get (d : SimpCongrTheorems) (declName : Name) : List SimpCongrTheorem 
goal: List Lean.Meta.SimpCongrTheorem

full_name: Lean.Meta.addSimpCongrTheoremEntry
code: def addSimpCongrTheoremEntry (d : SimpCongrTheorems) (e : SimpCongrTheorem) : SimpCongrTheorems 
goal: Lean.Meta.SimpCongrTheorems

full_name: Lean.Meta.addSimpCongrTheoremEntry.insert
code: def addSimpCongrTheoremEntry (d : SimpCongrTheorems) (e : SimpCongrTheorem) : SimpCongrTheorems 
goal: List Lean.Meta.SimpCongrTheorem → List Lean.Meta.SimpCongrTheorem

full_name: Lean.Meta.congrExtension
code: builtin_initialize congrExtension : SimpleScopedEnvExtension SimpCongrTheorem SimpCongrTheorems ←
  registerSimpleScopedEnvExtension {
    initial        := {}
    addEntry       := addSimpCongrTheoremEntry
    finalizeImport := fun s => { s with lemmas := s.lemmas.switch }
  }
goal: Lean.SimpleScopedEnvExtension Lean.Meta.SimpCongrTheorem Lean.Meta.SimpCongrTheorems

full_name: Lean.Meta.initFn._@..lake.packages.lean4.src.lean.Lean.Meta.Tactic.Simp.SimpCongrTheorems._hyg.363
code: builtin_initialize congrExtension : SimpleScopedEnvExtension SimpCongrTheorem SimpCongrTheorems ←
  registerSimpleScopedEnvExtension {
    initial        := {}
    addEntry       := addSimpCongrTheoremEntry
    finalizeImport := fun s => { s with lemmas := s.lemmas.switch }
  }
goal: IO (Lean.SimpleScopedEnvExtension Lean.Meta.SimpCongrTheorem Lean.Meta.SimpCongrTheorems)

full_name: Lean.Meta.mkSimpCongrTheorem
code: def mkSimpCongrTheorem (declName : Name) (prio : Nat) : MetaM SimpCongrTheorem 
goal: Lean.MetaM Lean.Meta.SimpCongrTheorem

full_name: Lean.Meta.mkSimpCongrTheorem.onlyMVarsAt
code: def mkSimpCongrTheorem (declName : Name) (prio : Nat) : MetaM SimpCongrTheorem 
goal: Bool

full_name: Lean.Meta.addSimpCongrTheorem
code: def addSimpCongrTheorem (declName : Name) (attrKind : AttributeKind) (prio : Nat) : MetaM Unit 
goal: Lean.MetaM Unit

full_name: Lean.Meta.initFn._@..lake.packages.lean4.src.lean.Lean.Meta.Tactic.Simp.SimpCongrTheorems._hyg.1872
code: builtin_initialize
  registerBuiltinAttribute {
    name  := `congr
    descr := "congruence theorem"
    add   := fun declName stx attrKind => do
      let prio ← getAttrParamOptPrio stx[1]
      discard <| addSimpCongrTheorem declName attrKind prio |>.run {} {}
  }
goal: IO Unit

full_name: Lean.Meta.getSimpCongrTheorems
code: def getSimpCongrTheorems : CoreM SimpCongrTheorems 
goal: Lean.CoreM Lean.Meta.SimpCongrTheorems