Theories
Catlab.Theories
— ModuleCatlab's standard library of generalized algebraic theories.
The focus is on categories and monoidal categories, but other related structures are also included.
Catlab.Theories.FreeCartesianCategory
— ModuleSyntax for a free cartesian category.
In this syntax, the pairing and projection operations are defined using duplication and deletion, and do not have their own syntactic elements. This convention could be dropped or reversed.
Catlab.Theories.FreeCartesianClosedCategory
— ModuleSyntax for a free cartesian closed category.
See also FreeCartesianCategory
.
Catlab.Theories.FreeCategory2
— ModuleSyntax for a 2-category.
Checks domains of morphisms but not 2-morphisms.
Catlab.Theories.FreeClosedMonoidalCategory
— ModuleSyntax for a free closed monoidal category.
Catlab.Theories.FreeCocartesianCategory
— ModuleSyntax for a free cocartesian category.
In this syntax, the copairing and inclusion operations are defined using merging and creation, and do not have their own syntactic elements. This convention could be dropped or reversed.
Catlab.Theories.AbelianBicategoryRelations
— TypeTheory of abelian bicategories of relations
Unlike BicategoryRelations
, this theory uses additive notation.
References:
- Carboni & Walters, 1987, "Cartesian bicategories I", Sec. 5
- Baez & Erbele, 2015, "Categories in control"
Catlab.Theories.BicategoryRelations
— TypeTheory of bicategories of relations
TODO: The 2-morphisms are missing.
References:
- Carboni & Walters, 1987, "Cartesian bicategories I"
- Walters, 2009, blog post, "Categorical algebras of relations", http://rfcwalters.blogspot.com/2009/10/categorical-algebras-of-relations.html
Catlab.Theories.BiproductCategory
— TypeTheory of biproduct categories
Mathematically the same as SemiadditiveCategory
but written multiplicatively, instead of additively.
Catlab.Theories.CartesianCategory
— TypeTheory of cartesian (monoidal) categories
For the traditional axiomatization of products, see CategoryWithProducts
.
Catlab.Theories.CartesianClosedCategory
— TypeTheory of cartesian closed categories, aka CCCs
A CCC is a cartesian category with internal homs (aka, exponential objects).
FIXME: This theory should also extend ClosedMonoidalCategory
, but multiple inheritance is not yet supported.
Catlab.Theories.Category
— TypeTheory of categories (with no extra structure)
Warning: We compose functions from left to right, i.e., if f:A→B and g:B→C then compose(f,g):A→C. Under this convention function are applied on the right, e.g., if a∈A then af∈B.
We retain the usual meaning of the symbol ∘ (\circ), i.e., g∘f = compose(f,g). This usage is too entrenched to overturn, inconvenient though it may be. We use symbol ⋅ (\cdot) for diagrammatic composition: f⋅g = compose(f,g).
Catlab.Theories.Category2
— TypeTheory of (strict) 2-categories
Catlab.Theories.CategoryWithCoproducts
— TypeTheory of a category with (finite) coproducts
Finite coproducts are presented in biased style, via the nullary case (initial objects) and the binary case (binary coproducts). The axioms are dual to those of CategoryWithProducts
.
For a monoidal category axiomatization, see CocartesianCategory
.
Catlab.Theories.CategoryWithProducts
— TypeTheory of a category with (finite) products
Finite products are presented in biased style, via the nullary case (terminal objects) and the binary case (binary products). The equational axioms are standard, especially in type theory (Lambek & Scott, 1986, Section 0.5 or Section I.3).
For a monoidal category axiomatization, see CartesianCategory
.
Catlab.Theories.ClosedMonoidalCategory
— TypeTheory of (symmetric) closed monoidal categories
Catlab.Theories.CocartesianCategory
— TypeTheory of cocartesian (monoidal) categories
For the traditional axiomatization of coproducts, see CategoryWithCoproducts
.
Catlab.Theories.CocompleteCategory
— TypeTheory of a (finitely) cocomplete category
Finite colimits are presented in biased style, via finite coproducts and coequalizers. The axioms are dual to those of CompleteCategory
.
Catlab.Theories.CompactClosedCategory
— TypeTheory of compact closed categories
Catlab.Theories.CompleteCategory
— TypeTheory of a (finitely) complete category
Finite limits are presented in biased style, via finite products and equalizers. The equational axioms for equalizers are obscure, but can found in (Lambek & Scott, 1986, Section 0.5), apparently following "Burroni's pioneering ideas".
Catlab.Theories.DaggerCategory
— TypeTheory of dagger categories
Catlab.Theories.DaggerCompactCategory
— TypeTheory of dagger compact categories
In a dagger compact category, there are two kinds of adjoints of a morphism f::Hom(A,B)
, the adjoint mate mate(f)::Hom(dual(B),dual(A))
and the dagger adjoint dagger(f)::Hom(B,A)
. In the category of Hilbert spaces, these are respectively the Banach space adjoint and the Hilbert space adjoint (Reed-Simon, Vol I, Sec VI.2). In Julia, they would correspond to transpose
and adjoint
in the official LinearAlegbra
module. For the general relationship between mates and daggers, see Selinger's survey of graphical languages for monoidal categories.
FIXME: This theory should also extend DaggerCategory
, but multiple inheritance is not yet supported.
Catlab.Theories.DaggerSymmetricMonoidalCategory
— TypeTheory of dagger symmetric monoidal categories
Also known as a symmetric monoidal dagger category.
FIXME: This theory should also extend DaggerCategory
, but multiple inheritance is not yet supported.
Catlab.Theories.DistributiveBicategoryRelations
— TypeTheory of a distributive bicategory of relations
References:
- Carboni & Walters, 1987, "Cartesian bicategories I", Remark 3.7 (mention in passing only)
- Patterson, 2017, "Knowledge representation in bicategories of relations", Section 9.2
FIXME: Should also inherit BicategoryOfRelations
, but multiple inheritance is not yet supported.
Catlab.Theories.DistributiveCategory
— TypeTheory of a distributive category
A distributive category is a distributive monoidal category whose tensor product is the cartesian product, see DistributiveMonoidalCategory
.
FIXME: Should also inherit CartesianCategory
.
Catlab.Theories.DistributiveMonoidalCategory
— TypeTheory of a distributive (symmetric) monoidal category
Reference: Jay, 1992, LFCS tech report LFCS-92-205, "Tail recursion through universal invariants", Section 3.2
FIXME: Should also inherit CocartesianCategory
.
Catlab.Theories.DistributiveSemiadditiveCategory
— TypeTheory of a distributive semiadditive category
This terminology is not standard but the concept occurs frequently. A distributive semiadditive category is a semiadditive category (or biproduct) category, written additively, with a tensor product that distributes over the biproduct.
FIXME: Should also inherit SemiadditiveCategory
Catlab.Theories.HypergraphCategory
— TypeTheory of hypergraph categories
Hypergraph categories are also known as "well-supported compact closed categories" and "spidered/dungeon categories", among other things.
FIXME: Should also inherit ClosedMonoidalCategory
and DaggerCategory
, but multiple inheritance is not yet supported.
Catlab.Theories.HypergraphCategoryAdditive
— TypeTheory of hypergraph categories, in additive notation
Mathematically the same as HypergraphCategory
but with different notation.
Catlab.Theories.MonoidalCategory
— TypeTheory of monoidal categories
To avoid associators and unitors, we assume the monoidal category is strict. By the coherence theorem there is no loss of generality, but we may add a theory for weak monoidal categories later.
Catlab.Theories.MonoidalCategoryAdditive
— TypeTheory of monoidal categories, in additive notation
Mathematically the same as MonoidalCategory
but with different notation.
Catlab.Theories.MonoidalCategoryWithBidiagonals
— TypeTheory of monoidal categories with bidiagonals
The terminology is nonstandard (is there any standard terminology?) but is supposed to mean a monoidal category with coherent diagonals and codiagonals. Unlike in a biproduct category, the naturality axioms need not be satisfied.
Catlab.Theories.MonoidalCategoryWithBidiagonalsAdditive
— TypeTheory of monoidal categories with bidiagonals, in additive notation
Mathematically the same as MonoidalCategoryWithBidiagonals
but written additively, instead of multiplicatively.
Catlab.Theories.MonoidalCategoryWithCodiagonals
— TypeTheory of monoidal categories with codiagonals
A monoidal category with codiagonals is a symmetric monoidal category equipped with coherent collections of merging and creating morphisms (monoids). Unlike in a cocartesian category, the naturality axioms need not be satisfied.
For references, see MonoidalCategoryWithDiagonals
.
Catlab.Theories.MonoidalCategoryWithDiagonals
— TypeTheory of monoidal categories with diagonals
A monoidal category with diagonals is a symmetric monoidal category equipped with coherent operations of copying and deleting, also known as a supply of commutative comonoids. Unlike in a cartesian category, the naturality axioms need not be satisfied.
References:
- Fong & Spivak, 2019, "Supplying bells and whistles in symmetric monoidal categories" (arxiv:1908.02633)
- Selinger, 2010, "A survey of graphical languages for monoidal categories", Section 6.6: "Cartesian center"
- Selinger, 1999, "Categorical structure of asynchrony"
Catlab.Theories.Preorder
— TypeTheory of preorders
Preorders encode the axioms of reflexivity and transitivity as term constructors.
Catlab.Theories.RigCategory
— TypeTheory of a rig category, also known as a bimonoidal category
Rig categories are the most general in the hierarchy of distributive monoidal structures.
TODO: Do we also want the distributivty and absorption isomorphisms? Usually we ignore coherence isomorphisms such as associators and unitors.
FIXME: This theory should also inherit MonoidalCategory
, but multiple inheritance is not supported.
Catlab.Theories.SemiadditiveCategory
— TypeTheory of semiadditive categories
Mathematically the same as BiproductCategory
but written additively, instead of multiplicatively.
Catlab.Theories.SymmetricMonoidalCategory
— TypeTheory of symmetric monoidal categories
The theory (but not the axioms) is the same as a braided monoidal category.
Catlab.Theories.SymmetricMonoidalCategoryAdditive
— TypeTheory of symmetric monoidal categories, in additive notation
Mathematically the same as SymmetricMonoidalCategory
but with different notation.
Catlab.Theories.SymmetricRigCategory
— TypeTheory of a symmetric rig category
FIXME: Should also inherit SymmetricMonoidalCategory
.
Catlab.Theories.ThinCategory
— TypeTheory of thin categories
Thin categories have at most one morphism between any two objects.
Catlab.Theories.TracedMonoidalCategory
— TypeTheory of traced monoidal categories
Base.collect
— MethodCollect generators of object in monoidal category as a vector.
Base.ndims
— MethodNumber of "dimensions" of object in monoidal category.