File: .lake/packages/lean4/src/lean/Init/ShareCommon.lean

full_name: ShareCommon.Object
code: abbrev Object : Type 
goal: Type

full_name: ShareCommon.Object.ptrEq
code: unsafe def Object.ptrEq (a b : Object) : Bool 
goal: Bool

full_name: ShareCommon.Object.ptrHash
code: unsafe abbrev Object.ptrHash (a : Object) : UInt64 
goal: UInt64

full_name: ShareCommon.StateFactoryImpl.setFind?
code: structure StateFactoryImpl where
  (Map Set : Type)
  mkState : Unit → Map × Set
  mapFind? (m : Map) (k : Object) : Option Object
  mapInsert (m : Map) (k v : Object) : Map
  setFind? (m : Set) (k : Object) : Option Object
  setInsert (m : Set) (o : Object) : Set
goal: Option ShareCommon.Object

full_name: ShareCommon.StateFactoryImpl.mapFind?
code: structure StateFactoryImpl where
  (Map Set : Type)
  mkState : Unit → Map × Set
  mapFind? (m : Map) (k : Object) : Option Object
  mapInsert (m : Map) (k v : Object) : Map
  setFind? (m : Set) (k : Object) : Option Object
  setInsert (m : Set) (o : Object) : Set
goal: Option ShareCommon.Object

full_name: ShareCommon.StateFactoryImpl.mkState
code: structure StateFactoryImpl where
  (Map Set : Type)
  mkState : Unit → Map × Set
  mapFind? (m : Map) (k : Object) : Option Object
  mapInsert (m : Map) (k v : Object) : Map
  setFind? (m : Set) (k : Object) : Option Object
  setInsert (m : Set) (o : Object) : Set
goal: Unit → self.Map × self.Set

full_name: ShareCommon.StateFactoryImpl.mapInsert
code: structure StateFactoryImpl where
  (Map Set : Type)
  mkState : Unit → Map × Set
  mapFind? (m : Map) (k : Object) : Option Object
  mapInsert (m : Map) (k v : Object) : Map
  setFind? (m : Set) (k : Object) : Option Object
  setInsert (m : Set) (o : Object) : Set
goal: self.Map

full_name: ShareCommon.StateFactoryImpl
code: structure StateFactoryImpl where
  (Map Set : Type)
  mkState : Unit → Map × Set
  mapFind? (m : Map) (k : Object) : Option Object
  mapInsert (m : Map) (k v : Object) : Map
  setFind? (m : Set) (k : Object) : Option Object
  setInsert (m : Set) (o : Object) : Set
goal: Type 1

full_name: ShareCommon.StateFactoryImpl.Set
code: structure StateFactoryImpl where
  (Map Set : Type)
  mkState : Unit → Map × Set
  mapFind? (m : Map) (k : Object) : Option Object
  mapInsert (m : Map) (k v : Object) : Map
  setFind? (m : Set) (k : Object) : Option Object
  setInsert (m : Set) (o : Object) : Set
goal: Type

full_name: ShareCommon.StateFactoryImpl.Map
code: structure StateFactoryImpl where
  (Map Set : Type)
  mkState : Unit → Map × Set
  mapFind? (m : Map) (k : Object) : Option Object
  mapInsert (m : Map) (k v : Object) : Map
  setFind? (m : Set) (k : Object) : Option Object
  setInsert (m : Set) (o : Object) : Set
goal: Type

full_name: ShareCommon.StateFactoryImpl.setInsert
code: structure StateFactoryImpl where
  (Map Set : Type)
  mkState : Unit → Map × Set
  mapFind? (m : Map) (k : Object) : Option Object
  mapInsert (m : Map) (k v : Object) : Map
  setFind? (m : Set) (k : Object) : Option Object
  setInsert (m : Set) (o : Object) : Set
goal: self.Set

full_name: ShareCommon.StateFactoryPointed
code: opaque StateFactoryPointed : NonemptyType
goal: NonemptyType

full_name: ShareCommon.StateFactory
code: abbrev StateFactory : Type 
goal: Type

full_name: ShareCommon.instNonemptyStateFactory
code: instance : Nonempty StateFactory 
goal: Nonempty ShareCommon.StateFactory

full_name: ShareCommon.Object.eq
code: @[extern "lean_sharecommon_eq"]
unsafe opaque Object.eq (a b : @& Object) : Bool
goal: Bool

full_name: ShareCommon.Object.hash
code: @[extern "lean_sharecommon_hash"]
unsafe opaque Object.hash (a : @& Object) : UInt64
goal: UInt64

full_name: ShareCommon.StateFactoryBuilder.setFind?
code: structure StateFactoryBuilder where
  Map (α _β : Type) [BEq α] [Hashable α] : Type
  mkMap {α β : Type} [BEq α] [Hashable α] (capacity : Nat) : Map α β
  mapFind? {α β : Type} [BEq α] [Hashable α] : Map α β → α → Option β
  mapInsert {α β : Type} [BEq α] [Hashable α] : Map α β → α → β → Map α β
  Set (α : Type) [BEq α] [Hashable α] : Type
  mkSet {α : Type} [BEq α] [Hashable α] (capacity : Nat) : Set α
  setFind? {α : Type} [BEq α] [Hashable α] : Set α → α → Option α
  setInsert {α : Type} [BEq α] [Hashable α] : Set α → α → Set α
goal: self.Set α → α → Option α

full_name: ShareCommon.StateFactoryBuilder.mapInsert
code: structure StateFactoryBuilder where
  Map (α _β : Type) [BEq α] [Hashable α] : Type
  mkMap {α β : Type} [BEq α] [Hashable α] (capacity : Nat) : Map α β
  mapFind? {α β : Type} [BEq α] [Hashable α] : Map α β → α → Option β
  mapInsert {α β : Type} [BEq α] [Hashable α] : Map α β → α → β → Map α β
  Set (α : Type) [BEq α] [Hashable α] : Type
  mkSet {α : Type} [BEq α] [Hashable α] (capacity : Nat) : Set α
  setFind? {α : Type} [BEq α] [Hashable α] : Set α → α → Option α
  setInsert {α : Type} [BEq α] [Hashable α] : Set α → α → Set α
goal: self.Map α β → α → β → self.Map α β

full_name: ShareCommon.StateFactoryBuilder.Map
code: structure StateFactoryBuilder where
  Map (α _β : Type) [BEq α] [Hashable α] : Type
  mkMap {α β : Type} [BEq α] [Hashable α] (capacity : Nat) : Map α β
  mapFind? {α β : Type} [BEq α] [Hashable α] : Map α β → α → Option β
  mapInsert {α β : Type} [BEq α] [Hashable α] : Map α β → α → β → Map α β
  Set (α : Type) [BEq α] [Hashable α] : Type
  mkSet {α : Type} [BEq α] [Hashable α] (capacity : Nat) : Set α
  setFind? {α : Type} [BEq α] [Hashable α] : Set α → α → Option α
  setInsert {α : Type} [BEq α] [Hashable α] : Set α → α → Set α
goal: Type

full_name: ShareCommon.StateFactoryBuilder.Set
code: structure StateFactoryBuilder where
  Map (α _β : Type) [BEq α] [Hashable α] : Type
  mkMap {α β : Type} [BEq α] [Hashable α] (capacity : Nat) : Map α β
  mapFind? {α β : Type} [BEq α] [Hashable α] : Map α β → α → Option β
  mapInsert {α β : Type} [BEq α] [Hashable α] : Map α β → α → β → Map α β
  Set (α : Type) [BEq α] [Hashable α] : Type
  mkSet {α : Type} [BEq α] [Hashable α] (capacity : Nat) : Set α
  setFind? {α : Type} [BEq α] [Hashable α] : Set α → α → Option α
  setInsert {α : Type} [BEq α] [Hashable α] : Set α → α → Set α
goal: Type

full_name: ShareCommon.StateFactoryBuilder.mapFind?
code: structure StateFactoryBuilder where
  Map (α _β : Type) [BEq α] [Hashable α] : Type
  mkMap {α β : Type} [BEq α] [Hashable α] (capacity : Nat) : Map α β
  mapFind? {α β : Type} [BEq α] [Hashable α] : Map α β → α → Option β
  mapInsert {α β : Type} [BEq α] [Hashable α] : Map α β → α → β → Map α β
  Set (α : Type) [BEq α] [Hashable α] : Type
  mkSet {α : Type} [BEq α] [Hashable α] (capacity : Nat) : Set α
  setFind? {α : Type} [BEq α] [Hashable α] : Set α → α → Option α
  setInsert {α : Type} [BEq α] [Hashable α] : Set α → α → Set α
goal: self.Map α β → α → Option β

full_name: ShareCommon.StateFactoryBuilder.setInsert
code: structure StateFactoryBuilder where
  Map (α _β : Type) [BEq α] [Hashable α] : Type
  mkMap {α β : Type} [BEq α] [Hashable α] (capacity : Nat) : Map α β
  mapFind? {α β : Type} [BEq α] [Hashable α] : Map α β → α → Option β
  mapInsert {α β : Type} [BEq α] [Hashable α] : Map α β → α → β → Map α β
  Set (α : Type) [BEq α] [Hashable α] : Type
  mkSet {α : Type} [BEq α] [Hashable α] (capacity : Nat) : Set α
  setFind? {α : Type} [BEq α] [Hashable α] : Set α → α → Option α
  setInsert {α : Type} [BEq α] [Hashable α] : Set α → α → Set α
goal: self.Set α → α → self.Set α

full_name: ShareCommon.StateFactoryBuilder.mkMap
code: structure StateFactoryBuilder where
  Map (α _β : Type) [BEq α] [Hashable α] : Type
  mkMap {α β : Type} [BEq α] [Hashable α] (capacity : Nat) : Map α β
  mapFind? {α β : Type} [BEq α] [Hashable α] : Map α β → α → Option β
  mapInsert {α β : Type} [BEq α] [Hashable α] : Map α β → α → β → Map α β
  Set (α : Type) [BEq α] [Hashable α] : Type
  mkSet {α : Type} [BEq α] [Hashable α] (capacity : Nat) : Set α
  setFind? {α : Type} [BEq α] [Hashable α] : Set α → α → Option α
  setInsert {α : Type} [BEq α] [Hashable α] : Set α → α → Set α
goal: self.Map α β

full_name: ShareCommon.StateFactoryBuilder.mkSet
code: structure StateFactoryBuilder where
  Map (α _β : Type) [BEq α] [Hashable α] : Type
  mkMap {α β : Type} [BEq α] [Hashable α] (capacity : Nat) : Map α β
  mapFind? {α β : Type} [BEq α] [Hashable α] : Map α β → α → Option β
  mapInsert {α β : Type} [BEq α] [Hashable α] : Map α β → α → β → Map α β
  Set (α : Type) [BEq α] [Hashable α] : Type
  mkSet {α : Type} [BEq α] [Hashable α] (capacity : Nat) : Set α
  setFind? {α : Type} [BEq α] [Hashable α] : Set α → α → Option α
  setInsert {α : Type} [BEq α] [Hashable α] : Set α → α → Set α
goal: self.Set α

full_name: ShareCommon.StateFactoryBuilder
code: structure StateFactoryBuilder where
  Map (α _β : Type) [BEq α] [Hashable α] : Type
  mkMap {α β : Type} [BEq α] [Hashable α] (capacity : Nat) : Map α β
  mapFind? {α β : Type} [BEq α] [Hashable α] : Map α β → α → Option β
  mapInsert {α β : Type} [BEq α] [Hashable α] : Map α β → α → β → Map α β
  Set (α : Type) [BEq α] [Hashable α] : Type
  mkSet {α : Type} [BEq α] [Hashable α] (capacity : Nat) : Set α
  setFind? {α : Type} [BEq α] [Hashable α] : Set α → α → Option α
  setInsert {α : Type} [BEq α] [Hashable α] : Set α → α → Set α
goal: Type 1

full_name: ShareCommon.StateFactory.mkImpl
code: unsafe def StateFactory.mkImpl : StateFactoryBuilder → StateFactory
  
goal: ShareCommon.StateFactoryBuilder → ShareCommon.StateFactory

full_name: ShareCommon.StateFactory.mk
code: @[implemented_by StateFactory.mkImpl]
opaque StateFactory.mk : StateFactoryBuilder → StateFactory
goal: ShareCommon.StateFactoryBuilder → ShareCommon.StateFactory

full_name: ShareCommon.StateFactory.get
code: unsafe def StateFactory.get : StateFactory → StateFactoryImpl 
goal: ShareCommon.StateFactory → ShareCommon.StateFactoryImpl

full_name: ShareCommon.StatePointed
code: /-- Internally `State` is implemented as a pair `ObjectMap` and `ObjectSet` -/
opaque StatePointed (σ : StateFactory) : NonemptyType
goal: NonemptyType

full_name: ShareCommon.State
code: abbrev State (σ : StateFactory) : Type u 
goal: Type u

full_name: ShareCommon.instNonemptyState
code: instance : Nonempty (State σ) 
goal: Nonempty (ShareCommon.State σ)

full_name: ShareCommon.mkStateImpl
code: unsafe def mkStateImpl (σ : StateFactory) : State σ 
goal: ShareCommon.State σ

full_name: ShareCommon.State.mk
code: @[implemented_by mkStateImpl] opaque State.mk (σ : StateFactory) : State σ
goal: ShareCommon.State σ

full_name: ShareCommon.instInhabitedState
code: instance : Inhabited (State σ) 
goal: Inhabited (ShareCommon.State σ)

full_name: ShareCommon.State.shareCommon
code: @[extern "lean_state_sharecommon"]
def State.shareCommon {σ : @& StateFactory} (s : State σ) (a : α) : α × State σ 
goal: α × ShareCommon.State σ

full_name: MonadShareCommon.withShareCommon
code: class MonadShareCommon (m : Type u → Type v) where
  withShareCommon {α : Type u} : α → m α
goal: α → m α

full_name: MonadShareCommon
code: class MonadShareCommon (m : Type u → Type v) where
  withShareCommon {α : Type u} : α → m α
goal: Type (max (u + 1) v)

full_name: withShareCommon
code: abbrev withShareCommon 
goal: α → m α

full_name: shareCommonM
code: abbrev shareCommonM [MonadShareCommon m] (a : α) : m α 
goal: m α

full_name: ShareCommonT
code: abbrev ShareCommonT (σ) (m : Type u → Type v) 
goal: Type (max u v)

full_name: ShareCommonM
code: abbrev ShareCommonM (σ) 
goal: Type u_1

full_name: ShareCommonT.withShareCommon
code: @[specialize] def ShareCommonT.withShareCommon [Monad m] (a : α) : ShareCommonT σ m α 
goal: ShareCommonT σ m α

full_name: ShareCommonT.monadShareCommon
code: instance ShareCommonT.monadShareCommon [Monad m] : MonadShareCommon (ShareCommonT σ m) 
goal: MonadShareCommon (ShareCommonT σ m)

full_name: ShareCommonT.run
code: @[inline] def ShareCommonT.run [Monad m] (x : ShareCommonT σ m α) : m α 
goal: m α

full_name: ShareCommonM.run
code: @[inline] def ShareCommonM.run (x : ShareCommonM σ α) : α 
goal: α