Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
| Download
GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
Project: cocalc-sagemath-dev-slelievre
Views: 4183461[1X3 [33X[0;0YMorphisms[133X[101X23[33X[0;0YAny GAP object satisfying [10XIsCapCategoryMorphism[110X can be added to a category4and then becomes a morphism in this category. Any morphism can belong to one5or no category. After a GAP object is added to the category, it knows which6things can be computed in its category and to which category it belongs. It7knows categorical properties and attributes, and the functions for8existential quantifiers can be applied to the morphism.[133X91011[1X3.1 [33X[0;0YAttributes for the Type of Morphisms[133X[101X1213[1X3.1-1 CapCategory[101X1415[29X[2XCapCategory[102X( [3Xalpha[103X ) [32X attribute16[6XReturns:[106X [33X[0;10Ya category[133X1718[33X[0;0YThe argument is a morphism [23X\alpha[123X. The output is the category [23X\mathbf{C}[123X to19which [23X\alpha[123X was added.[133X2021[1X3.1-2 Source[101X2223[29X[2XSource[102X( [3Xalpha[103X ) [32X attribute24[6XReturns:[106X [33X[0;10Yan object[133X2526[33X[0;0YThe argument is a morphism [23X\alpha: a \rightarrow b[123X. The output is its source27[23Xa[123X.[133X2829[1X3.1-3 Range[101X3031[29X[2XRange[102X( [3Xalpha[103X ) [32X attribute32[6XReturns:[106X [33X[0;10Yan object[133X3334[33X[0;0YThe argument is a morphism [23X\alpha: a \rightarrow b[123X. The output is its range35[23Xb[123X.[133X363738[1X3.2 [33X[0;0YCategorical Properties of Morphisms[133X[101X3940[1X3.2-1 AddIsMonomorphism[101X4142[29X[2XAddIsMonomorphism[102X( [3XC[103X, [3XF[103X ) [32X operation43[6XReturns:[106X [33X[0;10Ynothing[133X4445[33X[0;0YThe arguments are a category [23XC[123X and a function [23XF[123X. This operations adds the46given function [23XF[123X to the category for the basic operation [10XIsMonomorphism[110X. [23XF:47\alpha \mapsto \mathtt{IsMonomorphism}(\alpha)[123X.[133X4849[1X3.2-2 AddIsEpimorphism[101X5051[29X[2XAddIsEpimorphism[102X( [3XC[103X, [3XF[103X ) [32X operation52[6XReturns:[106X [33X[0;10Ynothing[133X5354[33X[0;0YThe arguments are a category [23XC[123X and a function [23XF[123X. This operations adds the55given function [23XF[123X to the category for the basic operation [10XIsEpimorphism[110X. [23XF:56\alpha \mapsto \mathtt{IsEpimorphism}(\alpha)[123X.[133X5758[1X3.2-3 AddIsIsomorphism[101X5960[29X[2XAddIsIsomorphism[102X( [3XC[103X, [3XF[103X ) [32X operation61[6XReturns:[106X [33X[0;10Ynothing[133X6263[33X[0;0YThe arguments are a category [23XC[123X and a function [23XF[123X. This operations adds the64given function [23XF[123X to the category for the basic operation [10XIsIsomorphism[110X. [23XF:65\alpha \mapsto \mathtt{IsIsomorphism}(\alpha)[123X.[133X6667[1X3.2-4 AddIsSplitMonomorphism[101X6869[29X[2XAddIsSplitMonomorphism[102X( [3XC[103X, [3XF[103X ) [32X operation70[6XReturns:[106X [33X[0;10Ynothing[133X7172[33X[0;0YThe arguments are a category [23XC[123X and a function [23XF[123X. This operations adds the73given function [23XF[123X to the category for the basic operation74[10XIsSplitMonomorphism[110X. [23XF: \alpha \mapsto \mathtt{IsSplitMonomorphism}(\alpha)[123X.[133X7576[1X3.2-5 AddIsSplitEpimorphism[101X7778[29X[2XAddIsSplitEpimorphism[102X( [3XC[103X, [3XF[103X ) [32X operation79[6XReturns:[106X [33X[0;10Ynothing[133X8081[33X[0;0YThe arguments are a category [23XC[123X and a function [23XF[123X. This operations adds the82given function [23XF[123X to the category for the basic operation [10XIsSplitEpimorphism[110X.83[23XF: \alpha \mapsto \mathtt{IsSplitEpimorphism}(\alpha)[123X.[133X8485[1X3.2-6 AddIsOne[101X8687[29X[2XAddIsOne[102X( [3XC[103X, [3XF[103X ) [32X operation88[6XReturns:[106X [33X[0;10Ynothing[133X8990[33X[0;0YThe arguments are a category [23XC[123X and a function [23XF[123X. This operations adds the91given function [23XF[123X to the category for the basic operation [10XIsOne[110X. [23XF: \alpha92\mapsto \mathtt{IsOne}(\alpha)[123X.[133X9394[1X3.2-7 AddIsIdempotent[101X9596[29X[2XAddIsIdempotent[102X( [3XC[103X, [3XF[103X ) [32X operation97[6XReturns:[106X [33X[0;10Ynothing[133X9899[33X[0;0YThe arguments are a category [23XC[123X and a function [23XF[123X. This operations adds the100given function [23XF[123X to the category for the basic operation [10XIsIdempotent[110X. [23XF:101\alpha \mapsto \mathtt{IsIdempotent}(\alpha)[123X.[133X102103104[1X3.3 [33X[0;0YNon-Categorical Properties of Morphisms[133X[101X105106[33X[0;0YNon-categorical properties are not stable under equivalences of categories.[133X107108[1X3.3-1 IsIdenticalToIdentityMorphism[101X109110[29X[2XIsIdenticalToIdentityMorphism[102X( [3Xalpha[103X ) [32X property111[6XReturns:[106X [33X[0;10Ya boolean[133X112113[33X[0;0YThe argument is a morphism [23X\alpha: a \rightarrow b[123X. The output is [10Xtrue[110X if114[23X\alpha = \mathrm{id}_a[123X, otherwise the output is [10Xfalse[110X.[133X115116[1X3.3-2 AddIsIdenticalToIdentityMorphism[101X117118[29X[2XAddIsIdenticalToIdentityMorphism[102X( [3XC[103X, [3XF[103X ) [32X operation119[6XReturns:[106X [33X[0;10Ynothing[133X120121[33X[0;0YThe arguments are a category [23XC[123X and a function [23XF[123X. This operations adds the122given function [23XF[123X to the category for the basic operation123[10XIsIdenticalToIdentityMorphism[110X. [23XF: \alpha \mapsto124\mathtt{IsIdenticalToIdentityMorphism}(\alpha)[123X.[133X125126[1X3.3-3 IsIdenticalToZeroMorphism[101X127128[29X[2XIsIdenticalToZeroMorphism[102X( [3Xalpha[103X ) [32X property129[6XReturns:[106X [33X[0;10Ya boolean[133X130131[33X[0;0YThe argument is a morphism [23X\alpha: a \rightarrow b[123X. The output is [10Xtrue[110X if132[23X\alpha = 0[123X, otherwise the output is [10Xfalse[110X.[133X133134[1X3.3-4 AddIsIdenticalToZeroMorphism[101X135136[29X[2XAddIsIdenticalToZeroMorphism[102X( [3XC[103X, [3XF[103X ) [32X operation137[6XReturns:[106X [33X[0;10Ynothing[133X138139[33X[0;0YThe arguments are a category [23XC[123X and a function [23XF[123X. This operations adds the140given function [23XF[123X to the category for the basic operation141[10XIsIdenticalToZeroMorphism[110X. [23XF: \alpha \mapsto142\mathtt{IsIdenticalToZeroMorphism }(\alpha)[123X.[133X143144[1X3.3-5 AddIsEndomorphism[101X145146[29X[2XAddIsEndomorphism[102X( [3XC[103X, [3XF[103X ) [32X operation147[6XReturns:[106X [33X[0;10Ynothing[133X148149[33X[0;0YThe arguments are a category [23XC[123X and a function [23XF[123X. This operations adds the150given function [23XF[123X to the category for the basic operation [10XIsEndomorphism[110X. [23XF:151\alpha \mapsto \mathtt{IsEndomorphism}(\alpha)[123X.[133X152153[1X3.3-6 AddIsAutomorphism[101X154155[29X[2XAddIsAutomorphism[102X( [3XC[103X, [3XF[103X ) [32X operation156[6XReturns:[106X [33X[0;10Ynothing[133X157158[33X[0;0YThe arguments are a category [23XC[123X and a function [23XF[123X. This operations adds the159given function [23XF[123X to the category for the basic operation [10XIsAutomorphism[110X. [23XF:160\alpha \mapsto \mathtt{IsAutomorphism}(\alpha)[123X.[133X161162163[1X3.4 [33X[0;0YEquality and Congruence for Morphisms[133X[101X164165[1X3.4-1 IsCongruentForMorphisms[101X166167[29X[2XIsCongruentForMorphisms[102X( [3Xalpha[103X, [3Xbeta[103X ) [32X operation168[6XReturns:[106X [33X[0;10Ya boolean[133X169170[33X[0;0YThe arguments are two morphisms [23X\alpha, \beta: a \rightarrow b[123X. The output171is [10Xtrue[110X if [23X\alpha \sim_{a,b} \beta[123X, otherwise the output is [10Xfalse[110X.[133X172173[1X3.4-2 AddIsCongruentForMorphisms[101X174175[29X[2XAddIsCongruentForMorphisms[102X( [3XC[103X, [3XF[103X ) [32X operation176[6XReturns:[106X [33X[0;10Ynothing[133X177178[33X[0;0YThe arguments are a category [23XC[123X and a function [23XF[123X. This operations adds the179given function [23XF[123X to the category for the basic operation180[10XIsCongruentForMorphisms[110X. [23XF: (\alpha, \beta) \mapsto181\mathtt{IsCongruentForMorphisms}(\alpha, \beta)[123X.[133X182183[1X3.4-3 IsEqualForMorphisms[101X184185[29X[2XIsEqualForMorphisms[102X( [3Xalpha[103X, [3Xbeta[103X ) [32X operation186[6XReturns:[106X [33X[0;10Ya boolean[133X187188[33X[0;0YThe arguments are two morphisms [23X\alpha, \beta: a \rightarrow b[123X. The output189is [10Xtrue[110X if [23X\alpha = \beta[123X, otherwise the output is [10Xfalse[110X.[133X190191[1X3.4-4 AddIsEqualForMorphisms[101X192193[29X[2XAddIsEqualForMorphisms[102X( [3XC[103X, [3XF[103X ) [32X operation194[6XReturns:[106X [33X[0;10Ynothing[133X195196[33X[0;0YThe arguments are a category [23XC[123X and a function [23XF[123X. This operations adds the197given function [23XF[123X to the category for the basic operation198[10XIsEqualForMorphisms[110X. [23XF: (\alpha, \beta) \mapsto199\mathtt{IsEqualForMorphisms}(\alpha, \beta)[123X.[133X200201[1X3.4-5 IsEqualForMorphismsOnMor[101X202203[29X[2XIsEqualForMorphismsOnMor[102X( [3Xalpha[103X, [3Xbeta[103X ) [32X operation204[6XReturns:[106X [33X[0;10Ya boolean[133X205206[33X[0;0YThe arguments are two morphisms [23X\alpha: a \rightarrow b, \beta: c207\rightarrow d[123X. The output is [10Xtrue[110X if [23X\alpha = \beta[123X, otherwise the output is208[10Xfalse[110X.[133X209210[1X3.4-6 AddIsEqualForMorphismsOnMor[101X211212[29X[2XAddIsEqualForMorphismsOnMor[102X( [3XC[103X, [3XF[103X ) [32X operation213[6XReturns:[106X [33X[0;10Ynothing[133X214215[33X[0;0YThe arguments are a category [23XC[123X and a function [23XF[123X. This operations adds the216given function [23XF[123X to the category for the basic operation217[10XIsEqualForMorphismsOnMor[110X. [23XF: (\alpha, \beta) \mapsto218\mathtt{IsEqualForMorphismsOnMor}(\alpha, \beta)[123X.[133X219220221[1X3.5 [33X[0;0YBasic Operations for Morphisms in Ab-Categories[133X[101X222223[1X3.5-1 IsZeroForMorphisms[101X224225[29X[2XIsZeroForMorphisms[102X( [3Xalpha[103X ) [32X operation226[6XReturns:[106X [33X[0;10Ya boolean[133X227228[33X[0;0YThe argument is a morphism [23X\alpha: a \rightarrow b[123X. The output is [10Xtrue[110X if229[23X\alpha \sim_{a,b} 0[123X, otherwise the output is [10Xfalse[110X.[133X230231[1X3.5-2 AddIsZeroForMorphisms[101X232233[29X[2XAddIsZeroForMorphisms[102X( [3XC[103X, [3XF[103X ) [32X operation234[6XReturns:[106X [33X[0;10Ynothing[133X235236[33X[0;0YThe arguments are a category [23XC[123X and a function [23XF[123X. This operations adds the237given function [23XF[123X to the category for the basic operation [10XIsZeroForMorphisms[110X.238[23XF: \alpha \mapsto \mathtt{IsZeroForMorphisms}(\alpha)[123X.[133X239240[1X3.5-3 AdditionForMorphisms[101X241242[29X[2XAdditionForMorphisms[102X( [3Xalpha[103X, [3Xbeta[103X ) [32X operation243[6XReturns:[106X [33X[0;10Ya morphism in [23X\mathrm{Hom}(a,b)[123X[133X244245[33X[0;0YThe arguments are two morphisms [23X\alpha, \beta: a \rightarrow b[123X. The output246is the addition [23X\alpha + \beta[123X.[133X247248[1X3.5-4 AddAdditionForMorphisms[101X249250[29X[2XAddAdditionForMorphisms[102X( [3XC[103X, [3XF[103X ) [32X operation251[6XReturns:[106X [33X[0;10Ynothing[133X252253[33X[0;0YThe arguments are a category [23XC[123X and a function [23XF[123X. This operations adds the254given function [23XF[123X to the category for the basic operation255[10XAdditionForMorphisms[110X. [23XF: (\alpha, \beta) \mapsto \alpha + \beta[123X.[133X256257[1X3.5-5 SubtractionForMorphisms[101X258259[29X[2XSubtractionForMorphisms[102X( [3Xalpha[103X, [3Xbeta[103X ) [32X operation260[6XReturns:[106X [33X[0;10Ya morphism in [23X\mathrm{Hom}(a,b)[123X[133X261262[33X[0;0YThe arguments are two morphisms [23X\alpha, \beta: a \rightarrow b[123X. The output263is the addition [23X\alpha - \beta[123X.[133X264265[1X3.5-6 AddSubtractionForMorphisms[101X266267[29X[2XAddSubtractionForMorphisms[102X( [3XC[103X, [3XF[103X ) [32X operation268[6XReturns:[106X [33X[0;10Ynothing[133X269270[33X[0;0YThe arguments are a category [23XC[123X and a function [23XF[123X. This operations adds the271given function [23XF[123X to the category for the basic operation272[10XSubtractionForMorphisms[110X. [23XF: (\alpha, \beta) \mapsto \alpha - \beta[123X.[133X273274[1X3.5-7 AdditiveInverseForMorphisms[101X275276[29X[2XAdditiveInverseForMorphisms[102X( [3Xalpha[103X ) [32X operation277[6XReturns:[106X [33X[0;10Ya morphism in [23X\mathrm{Hom}(a,b)[123X[133X278279[33X[0;0YThe argument is a morphism [23X\alpha: a \rightarrow b[123X. The output is its280additive inverse [23X-\alpha[123X.[133X281282[1X3.5-8 AddAdditiveInverseForMorphisms[101X283284[29X[2XAddAdditiveInverseForMorphisms[102X( [3XC[103X, [3XF[103X ) [32X operation285[6XReturns:[106X [33X[0;10Ynothing[133X286287[33X[0;0YThe arguments are a category [23XC[123X and a function [23XF[123X. This operations adds the288given function [23XF[123X to the category for the basic operation289[10XAdditiveInverseForMorphisms[110X. [23XF: \alpha \mapsto -\alpha[123X.[133X290291[1X3.5-9 ZeroMorphism[101X292293[29X[2XZeroMorphism[102X( [3Xa[103X, [3Xb[103X ) [32X operation294[6XReturns:[106X [33X[0;10Ya morphism in [23X\mathrm{Hom}(a,b)[123X[133X295296[33X[0;0YThe arguments are two objects [23Xa[123X and [23Xb[123X. The output is the zero morphism [23X0: a297\rightarrow b[123X.[133X298299[1X3.5-10 AddZeroMorphism[101X300301[29X[2XAddZeroMorphism[102X( [3XC[103X, [3XF[103X ) [32X operation302[6XReturns:[106X [33X[0;10Ynothing[133X303304[33X[0;0YThe arguments are a category [23XC[123X and a function [23XF[123X. This operations adds the305given function [23XF[123X to the category for the basic operation [10XZeroMorphism[110X. [23XF:306(a,b) \mapsto (0: a \rightarrow b)[123X.[133X307308309[1X3.6 [33X[0;0YSubobject and Factorobject Operations[133X[101X310311[33X[0;0YSubobjects of an object [23Xc[123X are monomorphisms with range [23Xc[123X and a special312function for comparision. Similarly, factorobjects of an object [23Xc[123X are313epimorphisms with source [23Xc[123X and a special function for comparision.[133X314315[1X3.6-1 IsEqualAsSubobjects[101X316317[29X[2XIsEqualAsSubobjects[102X( [3Xalpha[103X, [3Xbeta[103X ) [32X operation318[6XReturns:[106X [33X[0;10Ya boolean[133X319320[33X[0;0YThe arguments are two subobjects [23X\alpha: a \rightarrow c[123X, [23X\beta: b321\rightarrow c[123X. The output is [10Xtrue[110X if there exists an isomorphism [23X\iota: a322\rightarrow b[123X such that [23X\beta \circ \iota \sim_{a,c} \alpha[123X, otherwise the323output is [10Xfalse[110X.[133X324325[1X3.6-2 AddIsEqualAsSubobjects[101X326327[29X[2XAddIsEqualAsSubobjects[102X( [3XC[103X, [3XF[103X ) [32X operation328[6XReturns:[106X [33X[0;10Ynothing[133X329330[33X[0;0YThe arguments are a category [23XC[123X and a function [23XF[123X. This operations adds the331given function [23XF[123X to the category for the basic operation332[10XIsEqualAsSubobjects[110X. [23XF: (\alpha, \beta) \mapsto333\mathtt{IsEqualAsSubobjects}(\alpha,\beta)[123X.[133X334335[1X3.6-3 IsEqualAsFactorobjects[101X336337[29X[2XIsEqualAsFactorobjects[102X( [3Xalpha[103X, [3Xbeta[103X ) [32X operation338[6XReturns:[106X [33X[0;10Ya boolean[133X339340[33X[0;0YThe arguments are two factorobjects [23X\alpha: c \rightarrow a[123X, [23X\beta: c341\rightarrow b[123X. The output is [10Xtrue[110X if there exists an isomorphism [23X\iota: b342\rightarrow a[123X such that [23X\iota \circ \beta \sim_{c,a} \alpha[123X, otherwise the343output is [10Xfalse[110X.[133X344345[1X3.6-4 AddIsEqualAsFactorobjects[101X346347[29X[2XAddIsEqualAsFactorobjects[102X( [3XC[103X, [3XF[103X ) [32X operation348[6XReturns:[106X [33X[0;10Ynothing[133X349350[33X[0;0YThe arguments are a category [23XC[123X and a function [23XF[123X. This operations adds the351given function [23XF[123X to the category for the basic operation352[10XIsEqualAsFactorobjects[110X. [23XF: (\alpha, \beta) \mapsto353\mathtt{IsEqualAsFactorobjects}(\alpha,\beta)[123X.[133X354355[1X3.6-5 IsDominating[101X356357[29X[2XIsDominating[102X( [3Xalpha[103X, [3Xbeta[103X ) [32X operation358[6XReturns:[106X [33X[0;10Ya boolean[133X359360[33X[0;0YIn short: Returns [10Xtrue[110X iff [23X\alpha[123X is smaller than [23X\beta[123X. [23X\\ [123X Full361description: The arguments are two subobjects [23X\alpha: a \rightarrow c[123X,362[23X\beta: b \rightarrow c[123X. The output is [10Xtrue[110X if there exists a morphism [23X\iota:363a \rightarrow b[123X such that [23X\beta \circ \iota \sim_{a,c} \alpha[123X, otherwise the364output is [10Xfalse[110X.[133X365366[1X3.6-6 AddIsDominating[101X367368[29X[2XAddIsDominating[102X( [3XC[103X, [3XF[103X ) [32X operation369[6XReturns:[106X [33X[0;10Ynothing[133X370371[33X[0;0YThe arguments are a category [23XC[123X and a function [23XF[123X. This operations adds the372given function [23XF[123X to the category for the basic operation [10XIsDominating[110X. [23XF:373(\alpha, \beta) \mapsto \mathtt{IsDominating}(\alpha,\beta)[123X.[133X374375[1X3.6-7 IsCodominating[101X376377[29X[2XIsCodominating[102X( [3Xalpha[103X, [3Xbeta[103X ) [32X operation378[6XReturns:[106X [33X[0;10Ya boolean[133X379380[33X[0;0YIn short: Returns [10Xtrue[110X iff [23X\alpha[123X is smaller than [23X\beta[123X. [23X\\ [123X Full381description: The arguments are two factorobjects [23X\alpha: c \rightarrow a[123X,382[23X\beta: c \rightarrow b[123X. The output is [10Xtrue[110X if there exists a morphism [23X\iota:383b \rightarrow a[123X such that [23X\iota \circ \beta \sim_{c,a} \alpha[123X, otherwise the384output is [10Xfalse[110X.[133X385386[1X3.6-8 AddIsCodominating[101X387388[29X[2XAddIsCodominating[102X( [3XC[103X, [3XF[103X ) [32X operation389[6XReturns:[106X [33X[0;10Ynothing[133X390391[33X[0;0YThe arguments are a category [23XC[123X and a function [23XF[123X. This operations adds the392given function [23XF[123X to the category for the basic operation [10XIsCodominating[110X. [23XF:393(\alpha, \beta) \mapsto \mathtt{IsCodominating}(\alpha,\beta)[123X.[133X394395396[1X3.7 [33X[0;0YIdentity Morphism and Composition of Morphisms[133X[101X397398[1X3.7-1 IdentityMorphism[101X399400[29X[2XIdentityMorphism[102X( [3Xa[103X ) [32X attribute401[6XReturns:[106X [33X[0;10Ya morphism in [23X\mathrm{Hom}(a,a)[123X[133X402403[33X[0;0YThe argument is an object [23Xa[123X. The output is its identity morphism404[23X\mathrm{id}_a[123X.[133X405406[1X3.7-2 AddIdentityMorphism[101X407408[29X[2XAddIdentityMorphism[102X( [3XC[103X, [3XF[103X ) [32X operation409[6XReturns:[106X [33X[0;10Ynothing[133X410411[33X[0;0YThe arguments are a category [23XC[123X and a function [23XF[123X. This operations adds the412given function [23XF[123X to the category for the basic operation [10XIdentityMorphism[110X.413[23XF: a \mapsto \mathrm{id}_a[123X.[133X414415[1X3.7-3 PreCompose[101X416417[29X[2XPreCompose[102X( [3Xalpha[103X, [3Xbeta[103X ) [32X operation418[6XReturns:[106X [33X[0;10Ya morphism in [23X\mathrm{Hom}( a, c )[123X[133X419420[33X[0;0YThe arguments are two morphisms [23X\alpha: a \rightarrow b[123X, [23X\beta: b421\rightarrow c[123X. The output is the composition [23X\beta \circ \alpha: a422\rightarrow c[123X.[133X423424[1X3.7-4 PreCompose[101X425426[29X[2XPreCompose[102X( [3XL[103X ) [32X operation427[6XReturns:[106X [33X[0;10Ya morphism in [23X\mathrm{Hom}(a_1, a_{n+1})[123X[133X428429[33X[0;0YThis is a convenience method. The argument is a list of morphisms [23XL = (430\alpha_1: a_1 \rightarrow a_2, \alpha_2: a_2 \rightarrow a_3, \dots,431\alpha_n: a_n \rightarrow a_{n+1} )[123X. The output is the composition432[23X\alpha_{n} \circ ( \alpha_{n-1} \circ ( \dots ( \alpha_2 \circ \alpha_1 ) )433)[123X.[133X434435[1X3.7-5 AddPreCompose[101X436437[29X[2XAddPreCompose[102X( [3XC[103X, [3XF[103X ) [32X operation438[6XReturns:[106X [33X[0;10Ynothing[133X439440[33X[0;0YThe arguments are a category [23XC[123X and a function [23XF[123X. This operations adds the441given function [23XF[123X to the category for the basic operation [10XPreCompose[110X. [23XF:442(\alpha, \beta) \mapsto \beta \circ \alpha[123X.[133X443444[1X3.7-6 PostCompose[101X445446[29X[2XPostCompose[102X( [3Xbeta[103X, [3Xalpha[103X ) [32X operation447[6XReturns:[106X [33X[0;10Ya morphism in [23X\mathrm{Hom}( a, c )[123X[133X448449[33X[0;0YThe arguments are two morphisms [23X\beta: b \rightarrow c[123X, [23X\alpha: a450\rightarrow b[123X. The output is the composition [23X\beta \circ \alpha: a451\rightarrow c[123X.[133X452453[1X3.7-7 PostCompose[101X454455[29X[2XPostCompose[102X( [3XL[103X ) [32X operation456[6XReturns:[106X [33X[0;10Ya morphism in [23X\mathrm{Hom}(a_1, a_{n+1})[123X[133X457458[33X[0;0YThis is a convenience method. The argument is a list of morphisms [23XL = (459\alpha_n: a_n \rightarrow a_{n+1}, \alpha_{n-1}: a_{n-1} \rightarrow a_n,460\dots, \alpha_1: a_1 \rightarrow a_2 )[123X. The output is the composition461[23X((\alpha_{n} \circ \alpha_{n-1}) \circ \dots \alpha_2) \circ \alpha_1[123X.[133X462463[1X3.7-8 AddPostCompose[101X464465[29X[2XAddPostCompose[102X( [3XC[103X, [3XF[103X ) [32X operation466[6XReturns:[106X [33X[0;10Ynothing[133X467468[33X[0;0YThe arguments are a category [23XC[123X and a function [23XF[123X. This operations adds the469given function [23XF[123X to the category for the basic operation [10XPostCompose[110X. [23XF:470(\alpha, \beta) \mapsto \alpha \circ \beta[123X.[133X471472473[1X3.8 [33X[0;0YWell-Definedness of Morphisms[133X[101X474475[1X3.8-1 IsWellDefinedForMorphisms[101X476477[29X[2XIsWellDefinedForMorphisms[102X( [3Xalpha[103X ) [32X operation478[6XReturns:[106X [33X[0;10Ya boolean[133X479480[33X[0;0YThe argument is a morphism [23X\alpha[123X. The output is [10Xtrue[110X if [23X\alpha[123X is481well-defined, otherwise the output is [10Xfalse[110X.[133X482483[1X3.8-2 AddIsWellDefinedForMorphisms[101X484485[29X[2XAddIsWellDefinedForMorphisms[102X( [3XC[103X, [3XF[103X ) [32X operation486[6XReturns:[106X [33X[0;10Ynothing[133X487488[33X[0;0YThe arguments are a category [23XC[123X and a function [23XF[123X. This operations adds the489given function [23XF[123X to the category for the basic operation490[10XIsWellDefinedForMorphisms[110X. [23XF: \alpha \mapsto491\mathtt{IsWellDefinedForMorphisms}( \alpha )[123X.[133X492493494[1X3.9 [33X[0;0YBasic Operations for Morphisms in Abelian Categories[133X[101X495496[1X3.9-1 LiftAlongMonomorphism[101X497498[29X[2XLiftAlongMonomorphism[102X( [3Xiota[103X, [3Xtau[103X ) [32X operation499[6XReturns:[106X [33X[0;10Ya morphism in [23X\mathrm{Hom}(t,k)[123X[133X500501[33X[0;0YThe arguments are a monomorphism [23X\iota: k \hookrightarrow a[123X and a morphism502[23X\tau: t \rightarrow a[123X such that there is a morphism [23Xu: t \rightarrow k[123X with503[23X\iota \circ u \sim_{t,a} \tau[123X. The output is such a [23Xu[123X.[133X504505[1X3.9-2 AddLiftAlongMonomorphism[101X506507[29X[2XAddLiftAlongMonomorphism[102X( [3XC[103X, [3XF[103X ) [32X operation508[6XReturns:[106X [33X[0;10Ynothing[133X509510[33X[0;0YThe arguments are a category [23XC[123X and a function [23XF[123X. This operations adds the511given function [23XF[123X to the category for the basic operation512[10XLiftAlongMonomorphism[110X. The function [23XF[123X maps a pair [23X(\iota, \tau)[123X to a lift [23Xu[123X513if it exists, and to [10Xfail[110X otherwise.[133X514515[1X3.9-3 ColiftAlongEpimorphism[101X516517[29X[2XColiftAlongEpimorphism[102X( [3Xepsilon[103X, [3Xtau[103X ) [32X operation518[6XReturns:[106X [33X[0;10Ya morphism in [23X\mathrm{Hom}(c,t)[123X[133X519520[33X[0;0YThe arguments are an epimorphism [23X\epsilon: a \rightarrow c[123X and a morphism521[23X\tau: a \rightarrow t[123X such that there is a morphism [23Xu: c \rightarrow t[123X with522[23Xu \circ \epsilon \sim_{a,t} \tau[123X. The output is such a [23Xu[123X.[133X523524[1X3.9-4 AddColiftAlongEpimorphism[101X525526[29X[2XAddColiftAlongEpimorphism[102X( [3XC[103X, [3XF[103X ) [32X operation527[6XReturns:[106X [33X[0;10Ynothing[133X528529[33X[0;0YThe arguments are a category [23XC[123X and a function [23XF[123X. This operations adds the530given function [23XF[123X to the category for the basic operation531[10XColiftAlongEpimorphism[110X. The function [23XF[123X maps a pair [23X(\epsilon, \tau)[123X to a532lift [23Xu[123X if it exists, and to [10Xfail[110X otherwise.[133X533534535[1X3.10 [33X[0;0YLift/ Colift[133X[101X536537[30X [33X[0;6YFor any pair of morphisms [23X\alpha: a \rightarrow c[123X, [23X\beta: b538\rightarrow c[123X, we call each morphism [23X\alpha / \beta: a \rightarrow b[123X539such that [23X\beta \circ (\alpha / \beta) \sim_{a,c} \alpha[123X a [13Xlift of540[23X\alpha[123X along [23X\beta[123X[113X.[133X541542[30X [33X[0;6YFor any pair of morphisms [23X\alpha: a \rightarrow c[123X, [23X\beta: a543\rightarrow b[123X, we call each morphism [23X\alpha \backslash \beta: c544\rightarrow b[123X such that [23X(\alpha \backslash \beta) \circ \alpha545\sim_{a,b} \beta[123X a [13X colift of [23X\beta[123X along [23X\alpha[123X[113X.[133X546547[33X[0;0YNote that such lifts (or colifts) do not have to be unique. So in general,548we do not expect that algorithms computing lifts (or colifts) do this in a549functorial way. Thus the operations [23X\mathtt{Lift}[123X and [23X\mathtt{Colift}[123X are550not regarded as categorical operations, but only as set-theoretic551operations.[133X552553[1X3.10-1 Lift[101X554555[29X[2XLift[102X( [3Xalpha[103X, [3Xbeta[103X ) [32X operation556[6XReturns:[106X [33X[0;10Ya morphism in [23X\mathrm{Hom}(a,b) + \{ \mathtt{fail} \}[123X[133X557558[33X[0;0YThe arguments are two morphisms [23X\alpha: a \rightarrow c[123X, [23X\beta: b559\rightarrow c[123X such that there is a lift [23X\alpha / \beta: a \rightarrow b[123X of560[23X\alpha[123X along [23X\beta[123X, i.e., a morphism such that [23X\beta \circ (\alpha / \beta)561\sim_{a,c} \alpha[123X. The output is such a lift or [23X\mathtt{fail}[123X if it doesn't562exist.[133X563564[1X3.10-2 AddLift[101X565566[29X[2XAddLift[102X( [3XC[103X, [3XF[103X ) [32X operation567[6XReturns:[106X [33X[0;10Ynothing[133X568569[33X[0;0YThe arguments are a category [23XC[123X and a function [23XF[123X. This operations adds the570given function [23XF[123X to the category for the basic operation [10XLift[110X. The function571[23XF[123X maps a pair [23X(\alpha, \beta)[123X to a lift [23X\alpha / \beta[123X if it exists, and to572[10Xfail[110X otherwise.[133X573574[1X3.10-3 Colift[101X575576[29X[2XColift[102X( [3Xalpha[103X, [3Xbeta[103X ) [32X operation577[6XReturns:[106X [33X[0;10Ya morphism in [23X\mathrm{Hom}(c,b) + \{ \mathtt{fail} \}[123X[133X578579[33X[0;0YThe arguments are two morphisms [23X\alpha: a \rightarrow c[123X, [23X\beta: a580\rightarrow b[123X such that there is a colift [23X\alpha \backslash \beta: c581\rightarrow b[123X of [23X\beta[123X along [23X\alpha[123X., i.e., a morphism such that [23X(\alpha582\backslash \beta) \circ \alpha \sim_{a,b} \beta[123X. The output is such a colift583or [23X\mathtt{fail}[123X if it doesn't exist.[133X584585[1X3.10-4 AddColift[101X586587[29X[2XAddColift[102X( [3XC[103X, [3XF[103X ) [32X operation588[6XReturns:[106X [33X[0;10Ynothing[133X589590[33X[0;0YThe arguments are a category [23XC[123X and a function [23XF[123X. This operations adds the591given function [23XF[123X to the category for the basic operation [10XColift[110X. The592function [23XF[123X maps a pair [23X(\alpha, \beta)[123X to a colift [23X\alpha \backslash \beta[123X593if it exists, and to [10Xfail[110X otherwise.[133X594595596[1X3.11 [33X[0;0YInverses[133X[101X597598[33X[0;0YLet [23X\alpha: a \rightarrow b[123X be a morphism. An inverse of [23X\alpha[123X is a599morphism [23X\alpha^{-1}: b \rightarrow a[123X such that [23X\alpha \circ \alpha^{-1}600\sim_{b,b} \mathrm{id}_b[123X and [23X\alpha^{-1} \circ \alpha \sim_{a,a}601\mathrm{id}_a[123X.[133X602603[1X3.11-1 AddInverse[101X604605[29X[2XAddInverse[102X( [3XC[103X, [3XF[103X ) [32X operation606[6XReturns:[106X [33X[0;10Ynothing[133X607608[33X[0;0YThe arguments are a category [23XC[123X and a function [23XF[123X. This operations adds the609given function [23XF[123X to the category for the basic operation [10XInverse[110X. [23XF: \alpha610\mapsto \alpha^{-1}[123X.[133X611612613[1X3.12 [33X[0;0YTool functions for caches[133X[101X614615[1X3.12-1 IsEqualForCacheForMorphisms[101X616617[29X[2XIsEqualForCacheForMorphisms[102X( [3Xphi[103X, [3Xpsi[103X ) [32X operation618[6XReturns:[106X [33X[0;10Ytrue or false[133X619620[33X[0;0YCompares two objects in the cache[133X621622[1X3.12-2 AddIsEqualForCacheForMorphisms[101X623624[29X[2XAddIsEqualForCacheForMorphisms[102X( [3Xc[103X, [3XF[103X ) [32X operation625[6XReturns:[106X [33X[0;10Ynorthing[133X626627[33X[0;0YBy default, CAP uses caches to store the values of Categorical operations.628To get a value out of the cache, one needs to compare the input of a basic629operation with its previous input. To compare morphisms in the category,630IsEqualForCacheForMorphism is used. By default this is an alias for631IsEqualForMorphismsOnMor, where fail is substituted by false. If you add a632function, this function used instead. A function [23XF: a,b \mapsto bool[123X is633expected here. The output has to be true or false. Fail is not allowed in634this context.[133X635636637638