[1X2 [33X[0;0YCategory of Categories[133X[101X
[33X[0;0YCategories itself with functors as morphisms form a category. So the data
structure of [10XCapCategory[110Xs is designed to be objects in a category. This
category is implemented in [10XCapCat[110X. For every category, the corresponding
object in Cat can be obtained via [10XAsCatObject[110X. The implemetation of the
category of categories offers a data structure for functors. Those are
implemented as morphisms in this category, so functors can be handled like
morphisms in a category. Also convenience functions to install functors as
methods are implemented (in order to avoid [10XApplyFunctor[110X).[133X
[1X2.1 [33X[0;0YThe Category Cat[133X[101X
[1X2.1-1 CapCat[101X
[29X[2XCapCat[102X[32X global variable
[33X[0;0YThis variable stores the category of categories. Every category object is
constructed as an object in this category, so Cat is constructed when
loading the package.[133X
[1X2.2 [33X[0;0YCategories[133X[101X
[1X2.2-1 IsCapCategoryAsCatObject[101X
[29X[2XIsCapCategoryAsCatObject[102X( [3Xobject[103X ) [32X filter
[6XReturns:[106X [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X
[33X[0;0YThe GAP category of CAP categories seen as object in Cat.[133X
[1X2.2-2 IsCapFunctor[101X
[29X[2XIsCapFunctor[102X( [3Xobject[103X ) [32X filter
[6XReturns:[106X [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X
[33X[0;0YThe GAP category of functors.[133X
[1X2.2-3 IsCapNaturalTransformation[101X
[29X[2XIsCapNaturalTransformation[102X( [3Xobject[103X ) [32X filter
[6XReturns:[106X [33X[0;10Y[10Xtrue[110X or [10Xfalse[110X[133X
[33X[0;0YThe GAP category of natural transformations.[133X
[1X2.3 [33X[0;0YConstructors[133X[101X
[1X2.3-1 AsCatObject[101X
[29X[2XAsCatObject[102X( [3XC[103X ) [32X attribute
[33X[0;0YGiven a CAP category [23XC[123X, this method returns the corresponding object in Cat.
For technical reasons, the filter [10XIsCapCategory[110X must not imply the filter
[10XIsCapCategoryObject[110X. For example, if [10XInitialObject[110X is applied to an object,
it returns the initial object of its category. If it is applied to a
category, it returns the initial object of the category. If a CAP category
would be a category object itself, this would be ambiguous. So categories
must be wrapped in a CatObject to be an object in Cat. This method returns
the wrapper object. The category can be reobtained by [10XAsCapCategory[110X.[133X
[1X2.3-2 AsCapCategory[101X
[29X[2XAsCapCategory[102X( [3XC[103X ) [32X attribute
[33X[0;0YFor an object [23XC[123X in Cat, this method returns the underlying CAP category.
This method is inverse to [10XAsCatObject[110X, i.e. AsCapCategory( AsCatObject( A )
) = A.[133X
[1X2.4 [33X[0;0YFunctors[133X[101X
[33X[0;0YFunctors are morphisms in Cat, thus they have source and target which are
categories. A multivariate functor can be constructed via a product category
as source, a presheaf is constructed via the opposite category as source.
Moreover, an object and a morphism function can be added to a functor, to
apply it to objects or morphisms in the source category.[133X
[1X2.4-1 CapFunctor[101X
[29X[2XCapFunctor[102X( [3Xname[103X, [3XA[103X, [3XB[103X ) [32X operation
[29X[2XCapFunctor[102X( [3Xname[103X, [3XA[103X, [3XB[103X ) [32X operation
[29X[2XCapFunctor[102X( [3Xname[103X, [3XA[103X, [3XB[103X ) [32X operation
[29X[2XCapFunctor[102X( [3Xname[103X, [3XA[103X, [3XB[103X ) [32X operation
[29X[2XCapFunctor[102X( [3Xname[103X, [3XA[103X, [3XB[103X ) [32X operation
[29X[2XCapFunctor[102X( [3Xname[103X, [3XA[103X, [3XB[103X ) [32X operation
[33X[0;0YThese methods construct a CAP functor, i.e. a morphism in Cat. Name should
be an unique name for the functor, it is also used when the functor is
installed as a method. [3XA[103X and [3XB[103X are source and target. Both can be given as
object in Cat or as category itself.[133X
[1X2.4-2 AddObjectFunction[101X
[29X[2XAddObjectFunction[102X( [3Xfunctor[103X, [3Xfunction[103X ) [32X operation
[33X[0;0YThis operation adds a function to the functor which can then be applied to
objects in the source. The given function [3Xfunction[103X has to take one argument
which must be an object in the source category and should return a
CapCategoryObject. The object is automatically added to the range of the
functor when it is applied to the object.[133X
[1X2.4-3 FunctorObjectOperation[101X
[29X[2XFunctorObjectOperation[102X( [3XF[103X ) [32X attribute
[6XReturns:[106X [33X[0;10Ya GAP operation[133X
[33X[0;0YThe argument is a functor [23XF[123X. The output is the GAP operation realizing the
action of [23XF[123X on objects.[133X
[1X2.4-4 AddMorphismFunction[101X
[29X[2XAddMorphismFunction[102X( [3Xfunctor[103X, [3Xfunction[103X ) [32X operation
[33X[0;0YThis operation adds a function to the functor which can then be applied to
morphisms in the source. The given function [3Xfunction[103X has to take three
arguments [23XA, \tau, B[123X. When the funtor [3Xfunctor[103X is applied to the morphism
[23X\tau[123X, [23XA[123X is the result of [3Xfunctor[103X applied to the source of [23X\tau[123X, [23XB[123X is the
result of [3Xfunctor[103X applied to the range.[133X
[1X2.4-5 FunctorMorphismOperation[101X
[29X[2XFunctorMorphismOperation[102X( [3XF[103X ) [32X attribute
[6XReturns:[106X [33X[0;10Ya GAP operation[133X
[33X[0;0YThe argument is a functor [23XF[123X. The output is the GAP operation realizing the
action of [23XF[123X on morphisms.[133X
[1X2.4-6 ApplyFunctor[101X
[29X[2XApplyFunctor[102X( [3Xfunc[103X, [3XA[103X ) [32X function
[6XReturns:[106X [33X[0;10YIsCapCategoryCell[133X
[33X[0;0YApplies the functor [3Xfunc[103X to the object or morphism [3XA[103X.[133X
[1X2.4-7 InstallFunctor[101X
[29X[2XInstallFunctor[102X( [3Xfunctor[103X, [3Xmethod_name[103X ) [32X operation
[33X[0;0YTODO[133X
[1X2.4-8 IdentityFunctor[101X
[29X[2XIdentityFunctor[102X( [3Xcategory[103X ) [32X attribute
[6XReturns:[106X [33X[0;10Ya functor[133X
[33X[0;0YReturns the identity functor of the category [3Xcat[103X viewed as an object in the
category of categories.[133X
[1X2.4-9 FunctorCanonicalizeZeroObjects[101X
[29X[2XFunctorCanonicalizeZeroObjects[102X( [3Xcategory[103X ) [32X attribute
[6XReturns:[106X [33X[0;10Ya functor[133X
[33X[0;0YReturns the endofunctor of the category [3Xcat[103X with zero which maps each
(object isomorphic to the) zero object to [10XZeroObject[110X([3Xcat[103X) and to itself
otherwise. This functor is equivalent to the identity functor.[133X
[1X2.4-10 NaturalIsomorophismFromIdentityToCanonicalizeZeroObjects[101X
[29X[2XNaturalIsomorophismFromIdentityToCanonicalizeZeroObjects[102X( [3Xcategory[103X ) [32X attribute
[6XReturns:[106X [33X[0;10Ya natural transformation[133X
[33X[0;0YReturns the natural isomorphism from the identity functor to
[10XFunctorCanonicalizeZeroObjects[110X([3Xcat[103X).[133X
[1X2.4-11 FunctorCanonicalizeZeroMorphisms[101X
[29X[2XFunctorCanonicalizeZeroMorphisms[102X( [3Xcategory[103X ) [32X attribute
[6XReturns:[106X [33X[0;10Ya functor[133X
[33X[0;0YReturns the endofunctor of the category [3Xcat[103X with zero which maps each object
to itself, each morphism [22Xϕ[122X to itself, unless it is congruent to the zero
morphism; in this case it is mapped to [10XZeroMorphism[110X([10XSource[110X([22Xϕ[122X), [10XRange[110X([22Xϕ[122X)).
This functor is equivalent to the identity functor.[133X
[1X2.4-12 NaturalIsomorophismFromIdentityToCanonicalizeZeroMorphisms[101X
[29X[2XNaturalIsomorophismFromIdentityToCanonicalizeZeroMorphisms[102X( [3Xcategory[103X ) [32X attribute
[6XReturns:[106X [33X[0;10Ya natural transformation[133X
[33X[0;0YReturns the natural isomorphism from the identity functor to
[10XFunctorCanonicalizeZeroMorphisms[110X([3Xcat[103X).[133X
[1X2.5 [33X[0;0YNatural transformations[133X[101X
[1X2.5-1 Name[101X
[29X[2XName[102X( [3Xarg[103X ) [32X attribute
[6XReturns:[106X [33X[0;10Ya string[133X
[33X[0;0YAs every functor, every natural transformation has a name attribute. It has
to be a string and will be set by the Constructor.[133X
[1X2.5-2 NaturalTransformation[101X
[29X[2XNaturalTransformation[102X( [[3Xname[103X, ][3XF[103X, [3XG[103X ) [32X operation
[6XReturns:[106X [33X[0;10Ya natural transformation[133X
[33X[0;0YConstructs a natural transformation between the functors [3XF[103X[23X:A \rightarrow B[123X
and [3XG[103X[23X:A \rightarrow B[123X. The string [3Xname[103X is optional, and, if not given, set
automatically from the names of the functors[133X
[1X2.5-3 AddNaturalTransformationFunction[101X
[29X[2XAddNaturalTransformationFunction[102X( [3XN[103X, [3Xfunc[103X ) [32X operation
[33X[0;0YAdds the function (or list of functions) [3Xfunc[103X to the natural transformation
[3XN[103X. The function or each function in the list should take three arguments. If
[23XN: F \rightarrow G[123X, the arguments should be [23XF(A), A, G(A)[123X. The ouptput
should be a morphism, [23XF(A) \rightarrow G(A)[123X.[133X
[1X2.5-4 ApplyNaturalTransformation[101X
[29X[2XApplyNaturalTransformation[102X( [3XN[103X, [3XA[103X ) [32X function
[6XReturns:[106X [33X[0;10Ya morphism[133X
[33X[0;0YGiven a natural transformation [3XN[103X[23X:F \rightarrow G[123X and an object [3XA[103X, this
function should return the morphism [23XF(A) \rightarrow G(A)[123X, corresponding to
[3XN[103X.[133X
[1X2.5-5 InstallNaturalTransformation[101X
[29X[2XInstallNaturalTransformation[102X( [3XN[103X, [3Xname[103X ) [32X operation
[33X[0;0YInstalls the natural transformation [3XN[103X as operation with the name [3Xname[103X.
Argument for this operation is an object, output is a morphism.[133X
[1X2.5-6 HorizontalPreComposeNaturalTransformationWithFunctor[101X
[29X[2XHorizontalPreComposeNaturalTransformationWithFunctor[102X( [3XN[103X, [3XF[103X ) [32X operation
[6XReturns:[106X [33X[0;10Ya natural transformation[133X
[33X[0;0YComputes the horizontal composition of the natural transformation [3XN[103X and[133X
[1X2.5-7 HorizontalPreComposeFunctorWithNaturalTransformation[101X
[29X[2XHorizontalPreComposeFunctorWithNaturalTransformation[102X( [3XF[103X, [3XN[103X ) [32X operation
[6XReturns:[106X [33X[0;10Ya natural transformation[133X
[33X[0;0YComputes the horizontal composition of the functor [3XF[103X and the natural
transformation [3XN[103X.[133X