Doctrines
Catlab.Doctrines.AbelianBicategoryRelations
— ModuleDoctrine of abelian bicategory of relations
Unlike Carboni & Walters, we use additive notation and nomenclature.
References:
- Carboni & Walters, 1987, "Cartesian bicategories I", Sec. 5
- Baez & Erbele, 2015, "Categories in control"
Catlab.Doctrines.BicategoryRelations
— ModuleDoctrine of bicategory of relations
TODO: The 2-morphisms are missing. I haven't decided how to handle them yet.
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.Doctrines.BiproductCategory
— ModuleDoctrine of bicategory category
Also known as a semiadditive category.
FIXME: This signature should extend MonoidalCategoryWithBidiagonals
, CartesianCategory
, and CocartesianCategory
, but multiple inheritance is not yet supported.
Catlab.Doctrines.CartesianCategory
— ModuleDoctrine of cartesian category
Actually, this is a cartesian symmetric monoidal category but we omit these qualifiers for brevity.
Catlab.Doctrines.CartesianClosedCategory
— ModuleDoctrine of cartesian closed category (aka, CCC)
A CCC is a cartesian category with internal homs (aka, exponential objects).
Catlab.Doctrines.Category
— ModuleDoctrine of category (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.Doctrines.Category2
— ModuleDoctrine of (strict) 2-category
Catlab.Doctrines.CocartesianCategory
— ModuleDoctrine of cocartesian category
Actually, this is a cocartesian symmetric monoidal category but we omit these qualifiers for brevity.
Catlab.Doctrines.CompactClosedCategory
— ModuleDoctrine of compact closed category
Catlab.Doctrines.DaggerCategory
— ModuleDoctrine of dagger category
Catlab.Doctrines.DaggerCompactCategory
— ModuleDoctrine of dagger compact category
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 signature should extend both DaggerCategory
and CompactClosedCategory
, but multiple inheritance is not yet supported.
Catlab.Doctrines.DaggerSymmetricMonoidalCategory
— ModuleDoctrine of dagger symmetric monoidal category
Also known as a symmetric monoidal dagger category.
FIXME: This signature should extend both DaggerCategory
and SymmetricMonoidalCategory
, but multiple inheritance is not yet supported.
Catlab.Doctrines.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. Of course, this convention could be reversed.
Catlab.Doctrines.FreeCartesianClosedCategory
— ModuleSyntax for a free cartesian closed category.
See also FreeCartesianCategory
.
Catlab.Doctrines.FreeCategory2
— ModuleSyntax for a 2-category.
Checks domains of morphisms but not 2-morphisms.
Catlab.Doctrines.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. Of course, this convention could be reversed.
Catlab.Doctrines.MonoidalCategory
— ModuleDoctrine of monoidal category
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 signature for weak monoidal categories later.
Catlab.Doctrines.MonoidalCategoryWithBidiagonals
— ModuleDoctrine of monoidal category with bidiagonals
The terminology is nonstandard (is there any standard terminology?) but is intended to mean a monoidal category with coherent diagonals and codiagonals. Unlike in a biproduct category, the naturality axioms need not be satisfied.
FIXME: This signature should extend both MonoidalCategoryWithDiagonals
and MonoidalCategoryWithCodiagonals
, but multiple inheritance is not yet supported.
Catlab.Doctrines.MonoidalCategoryWithCodiagonals
— ModuleDoctrine of monoidal category 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.Doctrines.MonoidalCategoryWithDiagonals
— ModuleDoctrine of monoidal category with diagonals
A monoidal category with diagonals is a symmetric monoidal category equipped with coherent collections of copying and deleting morphisms (comonoids). Unlike in a cartesian category, the naturality axioms need not be satisfied.
References:
- Selinger, 2010, "A survey of graphical languages for monoidal categories", Section 6.6: "Cartesian center"
- Selinger, 1999, "Categorical structure of asynchrony"
Catlab.Doctrines.SymmetricMonoidalCategory
— ModuleDoctrine of symmetric monoidal category
The signature (but not the axioms) is the same as a braided monoidal category.
Base.collect
— MethodCollect generators of object in monoidal category as a vector.
Base.ndims
— MethodNumber of "dimensions" of object in monoidal category.
Catlab.Doctrines.AbelianBicategoryRelations.Hom
— TypeMorphism in a category
Catlab.Doctrines.AbelianBicategoryRelations.Ob
— TypeObject in a category
Catlab.Doctrines.BicategoryRelations.Hom
— TypeMorphism in a category
Catlab.Doctrines.BicategoryRelations.Ob
— TypeObject in a category
Catlab.Doctrines.BiproductCategory.Hom
— TypeMorphism in a category
Catlab.Doctrines.BiproductCategory.Ob
— TypeObject in a category
Catlab.Doctrines.CartesianCategory.Hom
— TypeMorphism in a category
Catlab.Doctrines.CartesianCategory.Ob
— TypeObject in a category
Catlab.Doctrines.CartesianClosedCategory.Hom
— TypeMorphism in a category
Catlab.Doctrines.CartesianClosedCategory.Ob
— TypeObject in a category
Catlab.Doctrines.Category.Hom
— TypeMorphism in a category
Catlab.Doctrines.Category.Ob
— TypeObject in a category
Catlab.Doctrines.Category2.Hom
— TypeMorphism in a category
Catlab.Doctrines.Category2.Hom2
— Type2-morphism in a 2-category
Catlab.Doctrines.Category2.Ob
— TypeObject in a category
Catlab.Doctrines.CocartesianCategory.Hom
— TypeMorphism in a category
Catlab.Doctrines.CocartesianCategory.Ob
— TypeObject in a category
Catlab.Doctrines.CompactClosedCategory.Hom
— TypeMorphism in a category
Catlab.Doctrines.CompactClosedCategory.Ob
— TypeObject in a category
Catlab.Doctrines.DaggerCategory.Hom
— TypeMorphism in a category
Catlab.Doctrines.DaggerCategory.Ob
— TypeObject in a category
Catlab.Doctrines.DaggerCompactCategory.Hom
— TypeMorphism in a category
Catlab.Doctrines.DaggerCompactCategory.Ob
— TypeObject in a category
Catlab.Doctrines.FreeAbelianBicategoryRelations.Hom
— TypeMorphism in a category
Catlab.Doctrines.FreeAbelianBicategoryRelations.Ob
— TypeObject in a category
Catlab.Doctrines.FreeBicategoryRelations.Hom
— TypeMorphism in a category
Catlab.Doctrines.FreeBicategoryRelations.Ob
— TypeObject in a category
Catlab.Doctrines.FreeBiproductCategory.Hom
— TypeMorphism in a category
Catlab.Doctrines.FreeBiproductCategory.Ob
— TypeObject in a category
Catlab.Doctrines.FreeCartesianCategory.Hom
— TypeMorphism in a category
Catlab.Doctrines.FreeCartesianCategory.Ob
— TypeObject in a category
Catlab.Doctrines.FreeCartesianClosedCategory.Hom
— TypeMorphism in a category
Catlab.Doctrines.FreeCartesianClosedCategory.Ob
— TypeObject in a category
Catlab.Doctrines.FreeCategory.Hom
— TypeMorphism in a category
Catlab.Doctrines.FreeCategory.Ob
— TypeObject in a category
Catlab.Doctrines.FreeCategory2.Hom
— TypeMorphism in a category
Catlab.Doctrines.FreeCategory2.Hom2
— Type2-morphism in a 2-category
Catlab.Doctrines.FreeCategory2.Ob
— TypeObject in a category
Catlab.Doctrines.FreeCocartesianCategory.Hom
— TypeMorphism in a category
Catlab.Doctrines.FreeCocartesianCategory.Ob
— TypeObject in a category
Catlab.Doctrines.FreeCompactClosedCategory.Hom
— TypeMorphism in a category
Catlab.Doctrines.FreeCompactClosedCategory.Ob
— TypeObject in a category
Catlab.Doctrines.FreeDaggerCategory.Hom
— TypeMorphism in a category
Catlab.Doctrines.FreeDaggerCategory.Ob
— TypeObject in a category
Catlab.Doctrines.FreeDaggerCompactCategory.Hom
— TypeMorphism in a category
Catlab.Doctrines.FreeDaggerCompactCategory.Ob
— TypeObject in a category
Catlab.Doctrines.FreeSymmetricMonoidalCategory.Hom
— TypeMorphism in a category
Catlab.Doctrines.FreeSymmetricMonoidalCategory.Ob
— TypeObject in a category
Catlab.Doctrines.MonoidalCategory.Hom
— TypeMorphism in a category
Catlab.Doctrines.MonoidalCategory.Ob
— TypeObject in a category
Catlab.Doctrines.MonoidalCategoryWithBidiagonals.Hom
— TypeMorphism in a category
Catlab.Doctrines.MonoidalCategoryWithBidiagonals.Ob
— TypeObject in a category
Catlab.Doctrines.MonoidalCategoryWithCodiagonals.Hom
— TypeMorphism in a category
Catlab.Doctrines.MonoidalCategoryWithCodiagonals.Ob
— TypeObject in a category
Catlab.Doctrines.MonoidalCategoryWithDiagonals.Hom
— TypeMorphism in a category
Catlab.Doctrines.MonoidalCategoryWithDiagonals.Ob
— TypeObject in a category
Catlab.Doctrines.SymmetricMonoidalCategory.Hom
— TypeMorphism in a category
Catlab.Doctrines.SymmetricMonoidalCategory.Ob
— TypeObject in a category