File: .lake/packages/lean4/src/lean/Init/Control/State.lean

full_name: StateT
code: def StateT (σ : Type u) (m : Type u → Type v) (α : Type u) : Type (max u v) 
goal: Type (max u v)

full_name: StateT.run
code: @[always_inline, inline]
def StateT.run {σ : Type u} {m : Type u → Type v} {α : Type u} (x : StateT σ m α) (s : σ) : m (α × σ) 
goal: m (α × σ)

full_name: StateT.run'
code: @[always_inline, inline]
def StateT.run' {σ : Type u} {m : Type u → Type v} [Functor m] {α : Type u} (x : StateT σ m α) (s : σ) : m α 
goal: m α

full_name: StateM
code: @[reducible]
def StateM (σ α : Type u) : Type u 
goal: Type u

full_name: instSubsingletonStateM
code: instance {σ α} [Subsingleton σ] [Subsingleton α] : Subsingleton (StateM σ α) 
goal: Subsingleton (StateM σ α)

full_name: StateT.pure
code: @[always_inline, inline]
protected def pure (a : α) : StateT σ m α 
goal: StateT σ m α

full_name: StateT.bind
code: @[always_inline, inline]
protected def bind (x : StateT σ m α) (f : α → StateT σ m β) : StateT σ m β 
goal: StateT σ m β

full_name: StateT.map
code: @[always_inline, inline]
protected def map (f : α → β) (x : StateT σ m α) : StateT σ m β 
goal: StateT σ m β

full_name: StateT.instMonad
code: @[always_inline]
instance : Monad (StateT σ m) 
goal: Monad (StateT σ m)

full_name: StateT.orElse
code: @[always_inline, inline]
protected def orElse [Alternative m] {α : Type u} (x₁ : StateT σ m α) (x₂ : Unit → StateT σ m α) : StateT σ m α 
goal: StateT σ m α

full_name: StateT.failure
code: @[always_inline, inline]
protected def failure [Alternative m] {α : Type u} : StateT σ m α 
goal: StateT σ m α

full_name: StateT.instAlternative
code: instance [Alternative m] : Alternative (StateT σ m) 
goal: Alternative (StateT σ m)

full_name: StateT.get
code: @[always_inline, inline]
protected def get : StateT σ m σ 
goal: StateT σ m σ

full_name: StateT.set
code: @[always_inline, inline]
protected def set : σ → StateT σ m PUnit 
goal: σ → StateT σ m PUnit

full_name: StateT.modifyGet
code: @[always_inline, inline]
protected def modifyGet (f : σ → α × σ) : StateT σ m α 
goal: StateT σ m α

full_name: StateT.lift
code: @[always_inline, inline]
protected def lift {α : Type u} (t : m α) : StateT σ m α 
goal: StateT σ m α

full_name: StateT.instMonadLift
code: instance : MonadLift m (StateT σ m) 
goal: MonadLift m (StateT σ m)

full_name: StateT.instMonadFunctor
code: @[always_inline]
instance (σ m) : MonadFunctor m (StateT σ m) 
goal: MonadFunctor m (StateT σ m)

full_name: StateT.instMonadExceptOf
code: @[always_inline]
instance (ε) [MonadExceptOf ε m] : MonadExceptOf ε (StateT σ m) 
goal: MonadExceptOf ε (StateT σ m)

full_name: ForM.forIn
code: /-- Adapter to create a ForIn instance from a ForM instance -/
@[always_inline, inline]
def ForM.forIn [Monad m] [ForM (StateT β (ExceptT β m)) ρ α]
    (x : ρ) (b : β) (f : α → β → m (ForInStep β)) : m β 
goal: m β

full_name: instMonadStateOfStateTOfMonad
code: instance [Monad m] : MonadStateOf σ (StateT σ m) 
goal: MonadStateOf σ (StateT σ m)

full_name: StateT.monadControl
code: @[always_inline]
instance StateT.monadControl (σ : Type u) (m : Type u → Type v) [Monad m] : MonadControl m (StateT σ m) 
goal: MonadControl m (StateT σ m)

full_name: StateT.tryFinally
code: @[always_inline]
instance StateT.tryFinally {m : Type u → Type v} {σ : Type u} [MonadFinally m] [Monad m] : MonadFinally (StateT σ m) 
goal: MonadFinally (StateT σ m)