Algebras and Coalgebras¶
Monad algebras, comonad coalgebras, and their structural properties.
algebras
¶
Algebras and coalgebras for monads and comonads.
An algebra (A, α) for a monad (T, η, μ) consists of an object A and a morphism α: T(A) → A satisfying:
α ∘ η_A = id_A (unit law)
α ∘ μ_A = α ∘ T(α) (associativity)
Dually, a coalgebra (A, γ) for a comonad (W, ε, δ) consists of an object A and a morphism γ: A → W(A) satisfying:
ε_A ∘ γ = id_A (counit law)
δ_A ∘ γ = W(γ) ∘ γ (coassociativity)
The Eilenberg-Moore category of a monad T has T-algebras as objects and algebra homomorphisms as morphisms. The comparison functor K: Kl(T) → EM(T) relates the Kleisli and Eilenberg-Moore categories.
This module provides:
Algebra (abstract)
├── FreeAlgebra — free T-algebra μ_A: T(T(A)) → T(A)
└── ObservedAlgebra — algebra from a concrete structure map
Coalgebra (abstract)
├── CofreeCoalgebra — cofree W-coalgebra δ_A: W(A) → W(W(A))
└── ObservedCoalgebra — coalgebra from a concrete structure map
EilenbergMooreCategory — the category of algebras for a monad
Algebra
¶
Bases: ABC
Abstract algebra for a monad.
An algebra (A, α) for monad T consists of a carrier object A and a structure map α: T(A) → A.
| PARAMETER | DESCRIPTION |
|---|---|
monad
|
The monad T.
TYPE:
|
carrier
|
The carrier object A.
TYPE:
|
Source code in src/quivers/monadic/algebras.py
structure_map
abstractmethod
¶
structure_map() -> Morphism
The structure map α: T(A) → A.
| RETURNS | DESCRIPTION |
|---|---|
Morphism
|
The algebra structure map. |
verify_unit_law
¶
Verify α ∘ η_A = id_A.
| PARAMETER | DESCRIPTION |
|---|---|
atol
|
Absolute tolerance for comparison.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
bool
|
True if the unit law holds within tolerance. |
Source code in src/quivers/monadic/algebras.py
verify_associativity
¶
Verify α ∘ μ_A = α ∘ T(α).
| PARAMETER | DESCRIPTION |
|---|---|
atol
|
Absolute tolerance for comparison.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
bool
|
True if associativity holds within tolerance. |
Source code in src/quivers/monadic/algebras.py
FreeAlgebra
¶
Bases: Algebra
The free T-algebra on an object A.
The carrier is T(A) and the structure map is μ_A: T(T(A)) → T(A). This is the algebra that the comparison functor assigns to each object in the Kleisli category.
| PARAMETER | DESCRIPTION |
|---|---|
monad
|
The monad T.
TYPE:
|
obj
|
The base object A (the carrier will be T(A)).
TYPE:
|
Source code in src/quivers/monadic/algebras.py
ObservedAlgebra
¶
ObservedAlgebra(monad: Monad, carrier: SetObject, structure_tensor: Tensor, algebra: Algebra | None = None)
Bases: Algebra
An algebra defined by an explicit structure map tensor.
| PARAMETER | DESCRIPTION |
|---|---|
monad
|
The monad T.
TYPE:
|
carrier
|
The carrier object A.
TYPE:
|
structure_tensor
|
The tensor for α: T(A) → A.
TYPE:
|
algebra
|
The enrichment algebra. Defaults to PRODUCT_FUZZY.
TYPE:
|
Source code in src/quivers/monadic/algebras.py
Coalgebra
¶
Coalgebra(comonad: object, carrier: SetObject)
Bases: ABC
Abstract coalgebra for a comonad.
A coalgebra (A, γ) for comonad W consists of a carrier object A and a structure map γ: A → W(A).
| PARAMETER | DESCRIPTION |
|---|---|
comonad
|
The comonad W (a Comonad instance).
TYPE:
|
carrier
|
The carrier object A.
TYPE:
|
Source code in src/quivers/monadic/algebras.py
structure_map
abstractmethod
¶
structure_map() -> Morphism
The structure map γ: A → W(A).
| RETURNS | DESCRIPTION |
|---|---|
Morphism
|
The coalgebra structure map. |
verify_counit_law
¶
Verify ε_A ∘ γ = id_A.
| PARAMETER | DESCRIPTION |
|---|---|
atol
|
Absolute tolerance for comparison.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
bool
|
True if the counit law holds within tolerance. |
Source code in src/quivers/monadic/algebras.py
verify_coassociativity
¶
Verify δ_A ∘ γ = W(γ) ∘ γ.
| PARAMETER | DESCRIPTION |
|---|---|
atol
|
Absolute tolerance for comparison.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
bool
|
True if coassociativity holds within tolerance. |
Source code in src/quivers/monadic/algebras.py
CofreeCoalgebra
¶
CofreeCoalgebra(comonad: object, obj: SetObject)
ObservedCoalgebra
¶
ObservedCoalgebra(comonad: object, carrier: SetObject, structure_tensor: Tensor, algebra: Algebra | None = None)
Bases: Coalgebra
A coalgebra defined by an explicit structure map tensor.
| PARAMETER | DESCRIPTION |
|---|---|
comonad
|
The comonad W.
TYPE:
|
carrier
|
The carrier object A.
TYPE:
|
structure_tensor
|
The tensor for γ: A → W(A).
TYPE:
|
algebra
|
The enrichment algebra. Defaults to PRODUCT_FUZZY.
TYPE:
|
Source code in src/quivers/monadic/algebras.py
EilenbergMooreCategory
¶
EilenbergMooreCategory(monad: Monad)
The Eilenberg-Moore category of a monad.
Objects are T-algebras. Morphisms (A, α) → (B, β) are base morphisms f: A → B satisfying β ∘ T(f) = f ∘ α, i.e., algebra homomorphisms.
| PARAMETER | DESCRIPTION |
|---|---|
monad
|
The underlying monad T.
TYPE:
|
Source code in src/quivers/monadic/algebras.py
free_algebra
¶
free_algebra(obj: SetObject) -> FreeAlgebra
Construct the free T-algebra on an object.
| PARAMETER | DESCRIPTION |
|---|---|
obj
|
The base object A.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
FreeAlgebra
|
The free algebra with carrier T(A). |
Source code in src/quivers/monadic/algebras.py
is_homomorphism
¶
Check if f: A → B is an algebra homomorphism.
Verifies β ∘ T(f) = f ∘ α.
| PARAMETER | DESCRIPTION |
|---|---|
f
|
A morphism A → B between the carriers.
TYPE:
|
source_alg
|
The source algebra (A, α).
TYPE:
|
target_alg
|
The target algebra (B, β).
TYPE:
|
atol
|
Absolute tolerance for comparison.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
bool
|
True if f is a homomorphism within tolerance. |