abc#
The abstract base classes for categories.
These mirror the concrete hierarchy of discopy modules: each class adds
the characteristic generator of its categorical structure as an
abc.abstractmethod(), e.g. BraidedCategory is a
MonoidalCategory with an abstract BraidedCategory.braid().
Software dependencies between modules go top-to-bottom, left-to-right and forgetful functors between categories go the other way.
Each class also declares its discopy.testable.axiom() equations, which
every free category inherits along with the structure they axiomatise:
Category states the unitality and associativity of composition,
the typing of its identities and composites, and the involution and
contravariance of its dagger; a ColouredMonoid inherits them as
the unitality and associativity of its product, its composition.
Summary#
A category is a class with two class variables |
|
A coloured monoid is a category whose sequential composition |
|
A monoid is a coloured monoid with a single, trivial colour. |
|
|
|
A monoidal category is a |
|
A PRO is a |
|
A traced category is a |
|
A monoid is residuated when it comes with methods |
|
A biclosed category is a |
|
A pregroup is a residuated monoid where the left and right exponentials are given by tensoring with the chosen left and right duals for each object. |
|
A rigid category is a |
|
A pivotal category is a |
|
A braided category is a |
|
A PROB is a |
|
A symmetric category is a |
|
A PROP is a |
|
A Markov category is a |
|
A closed category is a symmetric |
|
A feedback category is a |
|
A balanced category is a |
|
A ribbon category is a |
|
A compact category is a |
|
A hypergraph category is a symmetric category with a supply of spiders, i.e. special commutative Frobenius algebras on each objects. |
|
A |