File: .lake/packages/lean4/src/lean/Lean/Compiler/CSimpAttr.lean

full_name: Lean.Compiler.CSimp.Entry
code: structure Entry where
  fromDeclName : Name
  toDeclName   : Name
  thmName      : Name
  deriving Inhabited
goal: Type

full_name: Lean.Compiler.CSimp.Entry.thmName
code: structure Entry where
  fromDeclName : Name
  toDeclName   : Name
  thmName      : Name
  deriving Inhabited
goal: Lean.Name

full_name: Lean.Compiler.CSimp.Entry.fromDeclName
code: structure Entry where
  fromDeclName : Name
  toDeclName   : Name
  thmName      : Name
  deriving Inhabited
goal: Lean.Name

full_name: Lean.Compiler.CSimp.Entry.toDeclName
code: structure Entry where
  fromDeclName : Name
  toDeclName   : Name
  thmName      : Name
  deriving Inhabited
goal: Lean.Name

full_name: Lean.Compiler.CSimp.instInhabitedEntry
code: structure Entry where
  fromDeclName : Name
  toDeclName   : Name
  thmName      : Name
  deriving Inhabited
goal: Inhabited Lean.Compiler.CSimp.Entry

full_name: Lean.Compiler.CSimp.instInhabitedState
code: structure State where
  map : SMap Name Name := {}
  thmNames : SSet Name := {}
  deriving Inhabited
goal: Inhabited Lean.Compiler.CSimp.State

full_name: Lean.Compiler.CSimp.State
code: structure State where
  map : SMap Name Name := {}
  thmNames : SSet Name := {}
  deriving Inhabited
goal: Type

full_name: Lean.Compiler.CSimp.State.map
code: structure State where
  map : SMap Name Name := {}
  thmNames : SSet Name := {}
  deriving Inhabited
goal: Lean.SMap Lean.Name Lean.Name

full_name: Lean.Compiler.CSimp.State.thmNames
code: structure State where
  map : SMap Name Name := {}
  thmNames : SSet Name := {}
  deriving Inhabited
goal: Lean.SSet Lean.Name

full_name: Lean.Compiler.CSimp.State.switch
code: def State.switch : State → State
  
goal: Lean.Compiler.CSimp.State → Lean.Compiler.CSimp.State

full_name: Lean.Compiler.CSimp.ext
code: builtin_initialize ext : SimpleScopedEnvExtension Entry State ←
  registerSimpleScopedEnvExtension {
    initial        := {}
    addEntry       := fun { map, thmNames } { fromDeclName, toDeclName, thmName } => { map := map.insert fromDeclName toDeclName, thmNames := thmNames.insert thmName }
    finalizeImport := fun s => s.switch
  }
goal: Lean.SimpleScopedEnvExtension Lean.Compiler.CSimp.Entry Lean.Compiler.CSimp.State

full_name: Lean.Compiler.CSimp.initFn._@..lake.packages.lean4.src.lean.Lean.Compiler.CSimpAttr._hyg.138
code: builtin_initialize ext : SimpleScopedEnvExtension Entry State ←
  registerSimpleScopedEnvExtension {
    initial        := {}
    addEntry       := fun { map, thmNames } { fromDeclName, toDeclName, thmName } => { map := map.insert fromDeclName toDeclName, thmNames := thmNames.insert thmName }
    finalizeImport := fun s => s.switch
  }
goal: IO (Lean.SimpleScopedEnvExtension Lean.Compiler.CSimp.Entry Lean.Compiler.CSimp.State)

full_name: _private.«.lake».packages.lean4.src.lean.Lean.Compiler.CSimpAttr.0.Lean.Compiler.CSimp.isConstantReplacement?
code: private def isConstantReplacement? (declName : Name) : CoreM (Option Entry) 
goal: Lean.CoreM (Option Lean.Compiler.CSimp.Entry)

full_name: Lean.Compiler.CSimp.add
code: def add (declName : Name) (kind : AttributeKind) : CoreM Unit 
goal: Lean.CoreM Unit

full_name: Lean.Compiler.CSimp.initFn._@..lake.packages.lean4.src.lean.Lean.Compiler.CSimpAttr._hyg.474
code: builtin_initialize
  registerBuiltinAttribute {
    name  := `csimp
    descr := "simplification theorem for the compiler"
    add   := fun declName stx attrKind => do
      Attribute.Builtin.ensureNoArgs stx
      discard <| add declName attrKind
  }
goal: IO Unit

full_name: Lean.Compiler.CSimp.replaceConstants
code: @[export lean_csimp_replace_constants]
def replaceConstants (env : Environment) (e : Expr) : Expr 
goal: Lean.Expr

full_name: Lean.Compiler.hasCSimpAttribute
code: def hasCSimpAttribute (env : Environment) (declName : Name) : Bool 
goal: Bool