Functors¶
Functors between enriched categories preserving categorical structure and composition.
functors
¶
Endofunctors on V-enriched FinSet.
A functor F maps objects to objects and morphisms to morphisms, preserving composition and identities. This module provides:
Functor (abstract)
├── IdentityFunctor — Id: A ↦ A, f ↦ f
├── ComposedFunctor — F ∘ G: applies G then F
└── FreeMonoidFunctor — A ↦ A*, f ↦ f* (block-diagonal, componentwise)
Functor
¶
Bases: ABC
Abstract endofunctor on V-enriched FinSet.
Subclasses must implement map_object, map_morphism, and map_tensor.
map_object
abstractmethod
¶
Apply the functor to an object.
| PARAMETER | DESCRIPTION |
|---|---|
obj
|
Source object.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
SetObject
|
Image object. |
Source code in src/quivers/categorical/functors.py
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | |
map_morphism
abstractmethod
¶
map_morphism(morph: Morphism) -> FunctorMorphism
Apply the functor to a morphism.
Returns a lazy FunctorMorphism that recomputes its tensor from the inner morphism, preserving gradient flow.
| PARAMETER | DESCRIPTION |
|---|---|
morph
|
Source morphism.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
FunctorMorphism
|
Image morphism. |
Source code in src/quivers/categorical/functors.py
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | |
map_tensor
abstractmethod
¶
map_tensor(tensor: Tensor, quantale: Quantale) -> Tensor
Apply the functor's action on the raw tensor level.
This is the computational core used by FunctorMorphism.tensor.
| PARAMETER | DESCRIPTION |
|---|---|
tensor
|
The inner morphism's tensor.
TYPE:
|
quantale
|
The enrichment algebra.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
Tensor
|
The image tensor. |
Source code in src/quivers/categorical/functors.py
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | |
IdentityFunctor
¶
Bases: Functor
The identity endofunctor Id: C → C.
Maps every object and morphism to itself. Needed as the source or target of natural transformations (e.g., monad unit η: Id ⇒ T).
map_object
¶
Identity on objects: A ↦ A.
Source code in src/quivers/categorical/functors.py
92 93 94 | |
map_morphism
¶
map_morphism(morph: Morphism) -> FunctorMorphism
Identity on morphisms: f ↦ f (wrapped as FunctorMorphism).
Source code in src/quivers/categorical/functors.py
96 97 98 | |
ComposedFunctor
¶
Bases: Functor
Composition of two endofunctors: F ∘ G.
Applies G first, then F. Preserves functoriality: (F ∘ G)(f) = F(G(f)).
| PARAMETER | DESCRIPTION |
|---|---|
outer
|
The functor applied second (F).
TYPE:
|
inner
|
The functor applied first (G).
TYPE:
|
Source code in src/quivers/categorical/functors.py
122 123 124 | |
map_object
¶
F(G(A)).
Source code in src/quivers/categorical/functors.py
136 137 138 | |
map_morphism
¶
map_morphism(morph: Morphism) -> FunctorMorphism
F(G(f)) as a lazy FunctorMorphism.
Source code in src/quivers/categorical/functors.py
140 141 142 143 144 | |
map_tensor
¶
map_tensor(tensor: Tensor, quantale: Quantale) -> Tensor
F's tensor action applied to G's tensor action.
Source code in src/quivers/categorical/functors.py
146 147 148 149 | |
FreeMonoidFunctor
¶
FreeMonoidFunctor(max_length: int)
Bases: Functor
The free monoid endofunctor, truncated to max_length.
On objects: A ↦ FreeMonoid(generators=A, max_length=max_length) On morphisms: f ↦ f* (block-diagonal, componentwise on each stratum)
The morphism action assembles a block-diagonal tensor where the k-th block is componentwise_lift(f, k) reshaped to 2D. This means strings of length k map to strings of length k via componentwise application of the underlying morphism.
| PARAMETER | DESCRIPTION |
|---|---|
max_length
|
Maximum string length for the truncated free monoid.
TYPE:
|
Source code in src/quivers/categorical/functors.py
172 173 174 175 176 | |
map_object
¶
map_object(obj: SetObject) -> FreeMonoid
Apply functor to an object: A ↦ FreeMonoid(generators=A, max_length=max_length).
For FinSet inputs, uses obj directly as generators. For other SetObject types (e.g., FreeMonoid, CoproductSet), creates a proxy FinSet with the same cardinality — this is needed for iterated application (e.g., the triangle identities of an adjunction require F(F(A)) = (A)).
| PARAMETER | DESCRIPTION |
|---|---|
obj
|
The generator set. Typically a FinSet, but any SetObject is accepted by treating it as a flat set.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
FreeMonoid
|
The free monoid on obj. |
Source code in src/quivers/categorical/functors.py
183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 | |
map_morphism
¶
map_morphism(morph: Morphism) -> FunctorMorphism
Apply functor to a morphism: f ↦ f* (block-diagonal).
| PARAMETER | DESCRIPTION |
|---|---|
morph
|
A morphism between FinSets.
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
FunctorMorphism
|
Lazy image preserving gradient flow. |
Source code in src/quivers/categorical/functors.py
209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 | |
map_tensor
¶
map_tensor(tensor: Tensor, quantale: Quantale) -> Tensor
Build the block-diagonal tensor for the free monoid action.
For each k=0..max_length, computes componentwise_lift(f, k), reshapes the result to 2D (n_a^k × n_b^k), and assembles all blocks via torch.block_diag.
| PARAMETER | DESCRIPTION |
|---|---|
tensor
|
The inner morphism's 2D tensor of shape (n_a, n_b).
TYPE:
|
quantale
|
The enrichment algebra (passed to componentwise_lift).
TYPE:
|
| RETURNS | DESCRIPTION |
|---|---|
Tensor
|
Block-diagonal tensor of shape (total_a, total_b). |
Source code in src/quivers/categorical/functors.py
227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 | |