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: 418346<?xml version="1.0" encoding="UTF-8"?>12<!-- This is an automatically generated file. -->3<Chapter Label="Chapter_Morphisms">4<Heading>Morphisms</Heading>56<P/>7Any GAP object satisfying <C>IsCapCategoryMorphism</C> can be added to a category8and then becomes a morphism in this category.9Any morphism can belong to one or no category.10After a GAP object is added to the category, it knows which things can be11computed in its category and to which category it belongs.12It knows categorical properties and attributes, and the functions for existential quantifiers13can be applied to the morphism.14<Section Label="Chapter_Morphisms_Section_Attributes_for_the_Type_of_Morphisms">15<Heading>Attributes for the Type of Morphisms</Heading>1617<ManSection>18<Attr Arg="alpha" Name="CapCategory" Label="for IsCapCategoryMorphism"/>19<Returns>a category20</Returns>21<Description>22The argument is a morphism <Math>\alpha</Math>.23The output is the category <Math>\mathbf{C}</Math>24to which <Math>\alpha</Math> was added.25</Description>26</ManSection>272829<ManSection>30<Attr Arg="alpha" Name="Source" Label="for IsCapCategoryMorphism"/>31<Returns>an object32</Returns>33<Description>34The argument is a morphism <Math>\alpha: a \rightarrow b</Math>.35The output is its source <Math>a</Math>.36</Description>37</ManSection>383940<ManSection>41<Attr Arg="alpha" Name="Range" Label="for IsCapCategoryMorphism"/>42<Returns>an object43</Returns>44<Description>45The argument is a morphism <Math>\alpha: a \rightarrow b</Math>.46The output is its range <Math>b</Math>.47</Description>48</ManSection>495051</Section>52535455<Section Label="Chapter_Morphisms_Section_Categorical_Properties_of_Morphisms">56<Heading>Categorical Properties of Morphisms</Heading>5758<ManSection>59<Oper Arg="C, F" Name="AddIsMonomorphism" Label="for IsCapCategory, IsFunction"/>60<Returns>nothing61</Returns>62<Description>63The arguments are a category <Math>C</Math> and a function <Math>F</Math>.64This operations adds the given function <Math>F</Math>65to the category for the basic operation <C>IsMonomorphism</C>.66<Math>F: \alpha \mapsto \mathtt{IsMonomorphism}(\alpha)</Math>.67</Description>68</ManSection>697071<ManSection>72<Oper Arg="C, F" Name="AddIsEpimorphism" Label="for IsCapCategory, IsFunction"/>73<Returns>nothing74</Returns>75<Description>76The arguments are a category <Math>C</Math> and a function <Math>F</Math>.77This operations adds the given function <Math>F</Math>78to the category for the basic operation <C>IsEpimorphism</C>.79<Math>F: \alpha \mapsto \mathtt{IsEpimorphism}(\alpha)</Math>.80</Description>81</ManSection>828384<ManSection>85<Oper Arg="C, F" Name="AddIsIsomorphism" Label="for IsCapCategory, IsFunction"/>86<Returns>nothing87</Returns>88<Description>89The arguments are a category <Math>C</Math> and a function <Math>F</Math>.90This operations adds the given function <Math>F</Math>91to the category for the basic operation <C>IsIsomorphism</C>.92<Math>F: \alpha \mapsto \mathtt{IsIsomorphism}(\alpha)</Math>.93</Description>94</ManSection>959697<ManSection>98<Oper Arg="C, F" Name="AddIsSplitMonomorphism" Label="for IsCapCategory, IsFunction"/>99<Returns>nothing100</Returns>101<Description>102The arguments are a category <Math>C</Math> and a function <Math>F</Math>.103This operations adds the given function <Math>F</Math>104to the category for the basic operation <C>IsSplitMonomorphism</C>.105<Math>F: \alpha \mapsto \mathtt{IsSplitMonomorphism}(\alpha)</Math>.106</Description>107</ManSection>108109110<ManSection>111<Oper Arg="C, F" Name="AddIsSplitEpimorphism" Label="for IsCapCategory, IsFunction"/>112<Returns>nothing113</Returns>114<Description>115The arguments are a category <Math>C</Math> and a function <Math>F</Math>.116This operations adds the given function <Math>F</Math>117to the category for the basic operation <C>IsSplitEpimorphism</C>.118<Math>F: \alpha \mapsto \mathtt{IsSplitEpimorphism}(\alpha)</Math>.119</Description>120</ManSection>121122123<ManSection>124<Oper Arg="C, F" Name="AddIsOne" Label="for IsCapCategory, IsFunction"/>125<Returns>nothing126</Returns>127<Description>128The arguments are a category <Math>C</Math> and a function <Math>F</Math>.129This operations adds the given function <Math>F</Math>130to the category for the basic operation <C>IsOne</C>.131<Math>F: \alpha \mapsto \mathtt{IsOne}(\alpha)</Math>.132</Description>133</ManSection>134135136<ManSection>137<Oper Arg="C, F" Name="AddIsIdempotent" Label="for IsCapCategory, IsFunction"/>138<Returns>nothing139</Returns>140<Description>141The arguments are a category <Math>C</Math> and a function <Math>F</Math>.142This operations adds the given function <Math>F</Math>143to the category for the basic operation <C>IsIdempotent</C>.144<Math>F: \alpha \mapsto \mathtt{IsIdempotent}(\alpha)</Math>.145</Description>146</ManSection>147148149</Section>150151152<Section Label="Chapter_Morphisms_Section_Non-Categorical_Properties_of_Morphisms">153<Heading>Non-Categorical Properties of Morphisms</Heading>154155Non-categorical properties are not stable under equivalences of categories.156<ManSection>157<Prop Arg="alpha" Name="IsIdenticalToIdentityMorphism" Label="for IsCapCategoryMorphism"/>158<Returns>a boolean159</Returns>160<Description>161The argument is a morphism <Math>\alpha: a \rightarrow b</Math>.162The output is <C>true</C> if <Math>\alpha = \mathrm{id}_a</Math>,163otherwise the output is <C>false</C>.164</Description>165</ManSection>166167168<ManSection>169<Oper Arg="C, F" Name="AddIsIdenticalToIdentityMorphism" Label="for IsCapCategory, IsFunction"/>170<Returns>nothing171</Returns>172<Description>173The arguments are a category <Math>C</Math> and a function <Math>F</Math>.174This operations adds the given function <Math>F</Math>175to the category for the basic operation <C>IsIdenticalToIdentityMorphism</C>.176<Math>F: \alpha \mapsto \mathtt{IsIdenticalToIdentityMorphism}(\alpha)</Math>.177</Description>178</ManSection>179180181<ManSection>182<Prop Arg="alpha" Name="IsIdenticalToZeroMorphism" Label="for IsCapCategoryMorphism"/>183<Returns>a boolean184</Returns>185<Description>186The argument is a morphism <Math>\alpha: a \rightarrow b</Math>.187The output is <C>true</C> if <Math>\alpha = 0</Math>,188otherwise the output is <C>false</C>.189</Description>190</ManSection>191192193<ManSection>194<Oper Arg="C, F" Name="AddIsIdenticalToZeroMorphism" Label="for IsCapCategory, IsFunction"/>195<Returns>nothing196</Returns>197<Description>198The arguments are a category <Math>C</Math> and a function <Math>F</Math>.199This operations adds the given function <Math>F</Math>200to the category for the basic operation <C>IsIdenticalToZeroMorphism</C>.201<Math>F: \alpha \mapsto \mathtt{IsIdenticalToZeroMorphism }(\alpha)</Math>.202</Description>203</ManSection>204205206<ManSection>207<Oper Arg="C, F" Name="AddIsEndomorphism" Label="for IsCapCategory, IsFunction"/>208<Returns>nothing209</Returns>210<Description>211The arguments are a category <Math>C</Math> and a function <Math>F</Math>.212This operations adds the given function <Math>F</Math>213to the category for the basic operation <C>IsEndomorphism</C>.214<Math>F: \alpha \mapsto \mathtt{IsEndomorphism}(\alpha)</Math>.215</Description>216</ManSection>217218219<ManSection>220<Oper Arg="C, F" Name="AddIsAutomorphism" Label="for IsCapCategory, IsFunction"/>221<Returns>nothing222</Returns>223<Description>224The arguments are a category <Math>C</Math> and a function <Math>F</Math>.225This operations adds the given function <Math>F</Math>226to the category for the basic operation <C>IsAutomorphism</C>.227<Math>F: \alpha \mapsto \mathtt{IsAutomorphism}(\alpha)</Math>.228</Description>229</ManSection>230231232</Section>233234235236<Section Label="Chapter_Morphisms_Section_Equality_and_Congruence_for_Morphisms">237<Heading>Equality and Congruence for Morphisms</Heading>238239<ManSection>240<Oper Arg="alpha, beta" Name="IsCongruentForMorphisms" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>241<Returns>a boolean242</Returns>243<Description>244The arguments are two morphisms <Math>\alpha, \beta: a \rightarrow b</Math>.245The output is <C>true</C> if <Math>\alpha \sim_{a,b} \beta</Math>,246otherwise the output is <C>false</C>.247</Description>248</ManSection>249250251<ManSection>252<Oper Arg="C, F" Name="AddIsCongruentForMorphisms" Label="for IsCapCategory, IsFunction"/>253<Returns>nothing254</Returns>255<Description>256The arguments are a category <Math>C</Math> and a function <Math>F</Math>.257This operations adds the given function <Math>F</Math>258to the category for the basic operation <C>IsCongruentForMorphisms</C>.259<Math>F: (\alpha, \beta) \mapsto \mathtt{IsCongruentForMorphisms}(\alpha, \beta)</Math>.260</Description>261</ManSection>262263264<ManSection>265<Oper Arg="alpha, beta" Name="IsEqualForMorphisms" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>266<Returns>a boolean267</Returns>268<Description>269The arguments are two morphisms <Math>\alpha, \beta: a \rightarrow b</Math>.270The output is <C>true</C> if <Math>\alpha = \beta</Math>,271otherwise the output is <C>false</C>.272</Description>273</ManSection>274275276<ManSection>277<Oper Arg="C, F" Name="AddIsEqualForMorphisms" Label="for IsCapCategory, IsFunction"/>278<Returns>nothing279</Returns>280<Description>281The arguments are a category <Math>C</Math> and a function <Math>F</Math>.282This operations adds the given function <Math>F</Math>283to the category for the basic operation <C>IsEqualForMorphisms</C>.284<Math>F: (\alpha, \beta) \mapsto \mathtt{IsEqualForMorphisms}(\alpha, \beta)</Math>.285</Description>286</ManSection>287288289<ManSection>290<Oper Arg="alpha, beta" Name="IsEqualForMorphismsOnMor" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>291<Returns>a boolean292</Returns>293<Description>294The arguments are two morphisms <Math>\alpha: a \rightarrow b, \beta: c \rightarrow d</Math>.295The output is <C>true</C> if <Math>\alpha = \beta</Math>,296otherwise the output is <C>false</C>.297</Description>298</ManSection>299300301<ManSection>302<Oper Arg="C, F" Name="AddIsEqualForMorphismsOnMor" Label="for IsCapCategory, IsFunction"/>303<Returns>nothing304</Returns>305<Description>306The arguments are a category <Math>C</Math> and a function <Math>F</Math>.307This operations adds the given function <Math>F</Math>308to the category for the basic operation <C>IsEqualForMorphismsOnMor</C>.309<Math>F: (\alpha, \beta) \mapsto \mathtt{IsEqualForMorphismsOnMor}(\alpha, \beta)</Math>.310</Description>311</ManSection>312313314</Section>315316317<Section Label="Chapter_Morphisms_Section_Basic_Operations_for_Morphisms_in_Ab-Categories">318<Heading>Basic Operations for Morphisms in Ab-Categories</Heading>319320<ManSection>321<Oper Arg="alpha" Name="IsZeroForMorphisms" Label="for IsCapCategoryMorphism"/>322<Returns>a boolean323</Returns>324<Description>325The argument is a morphism <Math>\alpha: a \rightarrow b</Math>.326The output is <C>true</C> if <Math>\alpha \sim_{a,b} 0</Math>,327otherwise the output is <C>false</C>.328</Description>329</ManSection>330331332<ManSection>333<Oper Arg="C, F" Name="AddIsZeroForMorphisms" Label="for IsCapCategory, IsFunction"/>334<Returns>nothing335</Returns>336<Description>337The arguments are a category <Math>C</Math> and a function <Math>F</Math>.338This operations adds the given function <Math>F</Math>339to the category for the basic operation <C>IsZeroForMorphisms</C>.340<Math>F: \alpha \mapsto \mathtt{IsZeroForMorphisms}(\alpha)</Math>.341</Description>342</ManSection>343344345<ManSection>346<Oper Arg="alpha, beta" Name="AdditionForMorphisms" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>347<Returns>a morphism in <Math>\mathrm{Hom}(a,b)</Math>348</Returns>349<Description>350The arguments are two morphisms <Math>\alpha, \beta: a \rightarrow b</Math>.351The output is the addition <Math>\alpha + \beta</Math>.352</Description>353</ManSection>354355356<ManSection>357<Oper Arg="C, F" Name="AddAdditionForMorphisms" Label="for IsCapCategory, IsFunction"/>358<Returns>nothing359</Returns>360<Description>361The arguments are a category <Math>C</Math> and a function <Math>F</Math>.362This operations adds the given function <Math>F</Math>363to the category for the basic operation <C>AdditionForMorphisms</C>.364<Math>F: (\alpha, \beta) \mapsto \alpha + \beta</Math>.365</Description>366</ManSection>367368369<ManSection>370<Oper Arg="alpha, beta" Name="SubtractionForMorphisms" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>371<Returns>a morphism in <Math>\mathrm{Hom}(a,b)</Math>372</Returns>373<Description>374The arguments are two morphisms <Math>\alpha, \beta: a \rightarrow b</Math>.375The output is the addition <Math>\alpha - \beta</Math>.376</Description>377</ManSection>378379380<ManSection>381<Oper Arg="C, F" Name="AddSubtractionForMorphisms" Label="for IsCapCategory, IsFunction"/>382<Returns>nothing383</Returns>384<Description>385The arguments are a category <Math>C</Math> and a function <Math>F</Math>.386This operations adds the given function <Math>F</Math>387to the category for the basic operation <C>SubtractionForMorphisms</C>.388<Math>F: (\alpha, \beta) \mapsto \alpha - \beta</Math>.389</Description>390</ManSection>391392393<ManSection>394<Oper Arg="alpha" Name="AdditiveInverseForMorphisms" Label="for IsCapCategoryMorphism"/>395<Returns>a morphism in <Math>\mathrm{Hom}(a,b)</Math>396</Returns>397<Description>398The argument is a morphism <Math>\alpha: a \rightarrow b</Math>.399The output is its additive inverse <Math>-\alpha</Math>.400</Description>401</ManSection>402403404<ManSection>405<Oper Arg="C, F" Name="AddAdditiveInverseForMorphisms" Label="for IsCapCategory, IsFunction"/>406<Returns>nothing407</Returns>408<Description>409The arguments are a category <Math>C</Math> and a function <Math>F</Math>.410This operations adds the given function <Math>F</Math>411to the category for the basic operation <C>AdditiveInverseForMorphisms</C>.412<Math>F: \alpha \mapsto -\alpha</Math>.413</Description>414</ManSection>415416417<ManSection>418<Oper Arg="a, b" Name="ZeroMorphism" Label="for IsCapCategoryObject, IsCapCategoryObject"/>419<Returns>a morphism in <Math>\mathrm{Hom}(a,b)</Math>420</Returns>421<Description>422The arguments are two objects <Math>a</Math> and <Math>b</Math>.423The output is the zero morphism <Math>0: a \rightarrow b</Math>.424</Description>425</ManSection>426427428<ManSection>429<Oper Arg="C, F" Name="AddZeroMorphism" Label="for IsCapCategory, IsFunction"/>430<Returns>nothing431</Returns>432<Description>433The arguments are a category <Math>C</Math> and a function <Math>F</Math>.434This operations adds the given function <Math>F</Math>435to the category for the basic operation <C>ZeroMorphism</C>.436<Math>F: (a,b) \mapsto (0: a \rightarrow b)</Math>.437</Description>438</ManSection>439440441</Section>442443444<Section Label="Chapter_Morphisms_Section_Subobject_and_Factorobject_Operations">445<Heading>Subobject and Factorobject Operations</Heading>446447Subobjects of an object <Math>c</Math> are monomorphisms448with range <Math>c</Math> and a special function for comparision.449Similarly, factorobjects of an object <Math>c</Math> are epimorphisms450with source <Math>c</Math> and a special function for comparision.451<ManSection>452<Oper Arg="alpha, beta" Name="IsEqualAsSubobjects" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>453<Returns>a boolean454</Returns>455<Description>456The arguments are two subobjects <Math>\alpha: a \rightarrow c</Math>, <Math>\beta: b \rightarrow c</Math>.457The output is <C>true</C> if there exists an isomorphism <Math>\iota: a \rightarrow b</Math>458such that <Math>\beta \circ \iota \sim_{a,c} \alpha</Math>,459otherwise the output is <C>false</C>.460</Description>461</ManSection>462463464<ManSection>465<Oper Arg="C, F" Name="AddIsEqualAsSubobjects" Label="for IsCapCategory, IsFunction"/>466<Returns>nothing467</Returns>468<Description>469The arguments are a category <Math>C</Math> and a function <Math>F</Math>.470This operations adds the given function <Math>F</Math>471to the category for the basic operation <C>IsEqualAsSubobjects</C>.472<Math>F: (\alpha, \beta) \mapsto \mathtt{IsEqualAsSubobjects}(\alpha,\beta)</Math>.473</Description>474</ManSection>475476477<ManSection>478<Oper Arg="alpha, beta" Name="IsEqualAsFactorobjects" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>479<Returns>a boolean480</Returns>481<Description>482The arguments are two factorobjects <Math>\alpha: c \rightarrow a</Math>, <Math>\beta: c \rightarrow b</Math>.483The output is <C>true</C> if there exists an isomorphism <Math>\iota: b \rightarrow a</Math>484such that <Math>\iota \circ \beta \sim_{c,a} \alpha</Math>,485otherwise the output is <C>false</C>.486</Description>487</ManSection>488489490<ManSection>491<Oper Arg="C, F" Name="AddIsEqualAsFactorobjects" Label="for IsCapCategory, IsFunction"/>492<Returns>nothing493</Returns>494<Description>495The arguments are a category <Math>C</Math> and a function <Math>F</Math>.496This operations adds the given function <Math>F</Math>497to the category for the basic operation <C>IsEqualAsFactorobjects</C>.498<Math>F: (\alpha, \beta) \mapsto \mathtt{IsEqualAsFactorobjects}(\alpha,\beta)</Math>.499</Description>500</ManSection>501502503<ManSection>504<Oper Arg="alpha, beta" Name="IsDominating" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>505<Returns>a boolean506</Returns>507<Description>508In short: Returns <C>true</C> iff <Math>\alpha</Math> is smaller than <Math>\beta</Math>.509<Math>\\ </Math>510Full description: The arguments are two subobjects <Math>\alpha: a \rightarrow c</Math>, <Math>\beta: b \rightarrow c</Math>.511The output is <C>true</C> if there exists a morphism <Math>\iota: a \rightarrow b</Math>512such that <Math>\beta \circ \iota \sim_{a,c} \alpha</Math>,513otherwise the output is <C>false</C>.514</Description>515</ManSection>516517518<ManSection>519<Oper Arg="C, F" Name="AddIsDominating" Label="for IsCapCategory, IsFunction"/>520<Returns>nothing521</Returns>522<Description>523The arguments are a category <Math>C</Math> and a function <Math>F</Math>.524This operations adds the given function <Math>F</Math>525to the category for the basic operation <C>IsDominating</C>.526<Math>F: (\alpha, \beta) \mapsto \mathtt{IsDominating}(\alpha,\beta)</Math>.527</Description>528</ManSection>529530531<ManSection>532<Oper Arg="alpha, beta" Name="IsCodominating" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>533<Returns>a boolean534</Returns>535<Description>536In short: Returns <C>true</C> iff <Math>\alpha</Math> is smaller than <Math>\beta</Math>.537<Math>\\ </Math>538Full description:539The arguments are two factorobjects <Math>\alpha: c \rightarrow a</Math>, <Math>\beta: c \rightarrow b</Math>.540The output is <C>true</C> if there exists a morphism <Math>\iota: b \rightarrow a</Math>541such that <Math>\iota \circ \beta \sim_{c,a} \alpha</Math>,542otherwise the output is <C>false</C>.543</Description>544</ManSection>545546547<ManSection>548<Oper Arg="C, F" Name="AddIsCodominating" Label="for IsCapCategory, IsFunction"/>549<Returns>nothing550</Returns>551<Description>552The arguments are a category <Math>C</Math> and a function <Math>F</Math>.553This operations adds the given function <Math>F</Math>554to the category for the basic operation <C>IsCodominating</C>.555<Math>F: (\alpha, \beta) \mapsto \mathtt{IsCodominating}(\alpha,\beta)</Math>.556</Description>557</ManSection>558559560</Section>561562563<Section Label="Chapter_Morphisms_Section_Identity_Morphism_and_Composition_of_Morphisms">564<Heading>Identity Morphism and Composition of Morphisms</Heading>565566<ManSection>567<Attr Arg="a" Name="IdentityMorphism" Label="for IsCapCategoryObject"/>568<Returns>a morphism in <Math>\mathrm{Hom}(a,a)</Math>569</Returns>570<Description>571The argument is an object <Math>a</Math>.572The output is its identity morphism <Math>\mathrm{id}_a</Math>.573</Description>574</ManSection>575576577<ManSection>578<Oper Arg="C, F" Name="AddIdentityMorphism" Label="for IsCapCategory, IsFunction"/>579<Returns>nothing580</Returns>581<Description>582The arguments are a category <Math>C</Math> and a function <Math>F</Math>.583This operations adds the given function <Math>F</Math>584to the category for the basic operation <C>IdentityMorphism</C>.585<Math>F: a \mapsto \mathrm{id}_a</Math>.586</Description>587</ManSection>588589590<ManSection>591<Oper Arg="alpha, beta" Name="PreCompose" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>592<Returns>a morphism in <Math>\mathrm{Hom}( a, c )</Math>593</Returns>594<Description>595The arguments are two morphisms <Math>\alpha: a \rightarrow b</Math>, <Math>\beta: b \rightarrow c</Math>.596The output is the composition <Math>\beta \circ \alpha: a \rightarrow c</Math>.597</Description>598</ManSection>599600601<ManSection>602<Oper Arg="L" Name="PreCompose" Label="for IsList"/>603<Returns>a morphism in <Math>\mathrm{Hom}(a_1, a_{n+1})</Math>604</Returns>605<Description>606This is a convenience method.607The argument is a list of morphisms608<Math>L = ( \alpha_1: a_1 \rightarrow a_2, \alpha_2: a_2 \rightarrow a_3, \dots, \alpha_n: a_n \rightarrow a_{n+1} )</Math>.609The output is the composition610<Math>\alpha_{n} \circ ( \alpha_{n-1} \circ ( \dots ( \alpha_2 \circ \alpha_1 ) ) )</Math>.611</Description>612</ManSection>613614615<ManSection>616<Oper Arg="C, F" Name="AddPreCompose" Label="for IsCapCategory, IsFunction"/>617<Returns>nothing618</Returns>619<Description>620The arguments are a category <Math>C</Math> and a function <Math>F</Math>.621This operations adds the given function <Math>F</Math>622to the category for the basic operation <C>PreCompose</C>.623<Math>F: (\alpha, \beta) \mapsto \beta \circ \alpha</Math>.624</Description>625</ManSection>626627628<ManSection>629<Oper Arg="beta, alpha" Name="PostCompose" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>630<Returns>a morphism in <Math>\mathrm{Hom}( a, c )</Math>631</Returns>632<Description>633The arguments are two morphisms <Math>\beta: b \rightarrow c</Math>, <Math>\alpha: a \rightarrow b</Math>.634The output is the composition <Math>\beta \circ \alpha: a \rightarrow c</Math>.635</Description>636</ManSection>637638639<ManSection>640<Oper Arg="L" Name="PostCompose" Label="for IsList"/>641<Returns>a morphism in <Math>\mathrm{Hom}(a_1, a_{n+1})</Math>642</Returns>643<Description>644This is a convenience method.645The argument is a list of morphisms646<Math>L = ( \alpha_n: a_n \rightarrow a_{n+1}, \alpha_{n-1}: a_{n-1} \rightarrow a_n, \dots, \alpha_1: a_1 \rightarrow a_2 )</Math>.647The output is the composition648<Math>((\alpha_{n} \circ \alpha_{n-1}) \circ \dots \alpha_2) \circ \alpha_1</Math>.649</Description>650</ManSection>651652653<ManSection>654<Oper Arg="C, F" Name="AddPostCompose" Label="for IsCapCategory, IsFunction"/>655<Returns>nothing656</Returns>657<Description>658The arguments are a category <Math>C</Math> and a function <Math>F</Math>.659This operations adds the given function <Math>F</Math>660to the category for the basic operation <C>PostCompose</C>.661<Math>F: (\alpha, \beta) \mapsto \alpha \circ \beta</Math>.662</Description>663</ManSection>664665666</Section>667668669<Section Label="Chapter_Morphisms_Section_Well-Definedness_of_Morphisms">670<Heading>Well-Definedness of Morphisms</Heading>671672<ManSection>673<Oper Arg="alpha" Name="IsWellDefinedForMorphisms" Label="for IsCapCategoryMorphism"/>674<Returns>a boolean675</Returns>676<Description>677The argument is a morphism <Math>\alpha</Math>.678The output is <C>true</C> if <Math>\alpha</Math> is well-defined,679otherwise the output is <C>false</C>.680</Description>681</ManSection>682683684<ManSection>685<Oper Arg="C, F" Name="AddIsWellDefinedForMorphisms" Label="for IsCapCategory, IsFunction"/>686<Returns>nothing687</Returns>688<Description>689The arguments are a category <Math>C</Math> and a function <Math>F</Math>.690This operations adds the given function <Math>F</Math>691to the category for the basic operation <C>IsWellDefinedForMorphisms</C>.692<Math>F: \alpha \mapsto \mathtt{IsWellDefinedForMorphisms}( \alpha )</Math>.693</Description>694</ManSection>695696697</Section>698699700<Section Label="Chapter_Morphisms_Section_Basic_Operations_for_Morphisms_in_Abelian_Categories">701<Heading>Basic Operations for Morphisms in Abelian Categories</Heading>702703<ManSection>704<Oper Arg="iota, tau" Name="LiftAlongMonomorphism" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>705<Returns>a morphism in <Math>\mathrm{Hom}(t,k)</Math>706</Returns>707<Description>708The arguments are a monomorphism <Math>\iota: k \hookrightarrow a</Math>709and a morphism <Math>\tau: t \rightarrow a</Math>710such that there is a morphism <Math>u: t \rightarrow k</Math> with711<Math>\iota \circ u \sim_{t,a} \tau</Math>.712The output is such a <Math>u</Math>.713</Description>714</ManSection>715716717<ManSection>718<Oper Arg="C, F" Name="AddLiftAlongMonomorphism" Label="for IsCapCategory, IsFunction"/>719<Returns>nothing720</Returns>721<Description>722The arguments are a category <Math>C</Math> and a function <Math>F</Math>.723This operations adds the given function <Math>F</Math>724to the category for the basic operation <C>LiftAlongMonomorphism</C>.725The function <Math>F</Math> maps a pair <Math>(\iota, \tau)</Math> to a lift <Math>u</Math> if it726exists, and to <C>fail</C> otherwise.727</Description>728</ManSection>729730731<ManSection>732<Oper Arg="epsilon, tau" Name="ColiftAlongEpimorphism" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>733<Returns>a morphism in <Math>\mathrm{Hom}(c,t)</Math>734</Returns>735<Description>736The arguments are an epimorphism <Math>\epsilon: a \rightarrow c</Math>737and a morphism <Math>\tau: a \rightarrow t</Math>738such that there is a morphism <Math>u: c \rightarrow t</Math> with739<Math>u \circ \epsilon \sim_{a,t} \tau</Math>.740The output is such a <Math>u</Math>.741</Description>742</ManSection>743744745<ManSection>746<Oper Arg="C, F" Name="AddColiftAlongEpimorphism" Label="for IsCapCategory, IsFunction"/>747<Returns>nothing748</Returns>749<Description>750The arguments are a category <Math>C</Math> and a function <Math>F</Math>.751This operations adds the given function <Math>F</Math>752to the category for the basic operation <C>ColiftAlongEpimorphism</C>.753The function <Math>F</Math> maps a pair <Math>(\epsilon, \tau)</Math> to a lift <Math>u</Math> if it754exists, and to <C>fail</C> otherwise.755</Description>756</ManSection>757758759</Section>760761762<Section Label="Chapter_Morphisms_Section_Lift_Colift">763<Heading>Lift/ Colift</Heading>764765<List>766<Item>767For any pair of morphisms <Math>\alpha: a \rightarrow c</Math>, <Math>\beta: b \rightarrow c</Math>,768we call each morphism <Math>\alpha / \beta: a \rightarrow b</Math> such that769<Math>\beta \circ (\alpha / \beta) \sim_{a,c} \alpha</Math> a <Emph>lift of <Math>\alpha</Math> along <Math>\beta</Math></Emph>.770</Item>771<Item>772For any pair of morphisms <Math>\alpha: a \rightarrow c</Math>, <Math>\beta: a \rightarrow b</Math>,773we call each morphism <Math>\alpha \backslash \beta: c \rightarrow b</Math> such that774<Math>(\alpha \backslash \beta) \circ \alpha \sim_{a,b} \beta</Math> a <Emph> colift of <Math>\beta</Math> along <Math>\alpha</Math></Emph>.775</Item>776</List>777Note that such lifts (or colifts) do not have to be unique. So in general,778we do not expect that algorithms computing lifts (or colifts) do this in a functorial way.779Thus the operations <Math>\mathtt{Lift}</Math> and <Math>\mathtt{Colift}</Math> are not regarded as780categorical operations, but only as set-theoretic operations.781<ManSection>782<Oper Arg="alpha, beta" Name="Lift" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>783<Returns>a morphism in <Math>\mathrm{Hom}(a,b) + \{ \mathtt{fail} \}</Math>784</Returns>785<Description>786The arguments are two morphisms <Math>\alpha: a \rightarrow c</Math>, <Math>\beta: b \rightarrow c</Math>787such that there is a lift <Math>\alpha / \beta: a \rightarrow b</Math> of <Math>\alpha</Math> along <Math>\beta</Math>, i.e.,788a morphism such that <Math>\beta \circ (\alpha / \beta) \sim_{a,c} \alpha</Math>.789The output is such a lift or <Math>\mathtt{fail}</Math> if it doesn't exist.790</Description>791</ManSection>792793794<ManSection>795<Oper Arg="C, F" Name="AddLift" Label="for IsCapCategory, IsFunction"/>796<Returns>nothing797</Returns>798<Description>799The arguments are a category <Math>C</Math> and a function <Math>F</Math>.800This operations adds the given function <Math>F</Math>801to the category for the basic operation <C>Lift</C>.802The function <Math>F</Math> maps a pair <Math>(\alpha, \beta)</Math> to a lift <Math>\alpha / \beta</Math> if it803exists, and to <C>fail</C> otherwise.804</Description>805</ManSection>806807808<ManSection>809<Oper Arg="alpha, beta" Name="Colift" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>810<Returns>a morphism in <Math>\mathrm{Hom}(c,b) + \{ \mathtt{fail} \}</Math>811</Returns>812<Description>813The arguments are two morphisms <Math>\alpha: a \rightarrow c</Math>, <Math>\beta: a \rightarrow b</Math>814such that there is a colift <Math>\alpha \backslash \beta: c \rightarrow b</Math> of <Math>\beta</Math> along <Math>\alpha</Math>., i.e.,815a morphism such that <Math>(\alpha \backslash \beta) \circ \alpha \sim_{a,b} \beta</Math>.816The output is such a colift or <Math>\mathtt{fail}</Math> if it doesn't exist.817</Description>818</ManSection>819820821<ManSection>822<Oper Arg="C, F" Name="AddColift" Label="for IsCapCategory, IsFunction"/>823<Returns>nothing824</Returns>825<Description>826The arguments are a category <Math>C</Math> and a function <Math>F</Math>.827This operations adds the given function <Math>F</Math>828to the category for the basic operation <C>Colift</C>.829The function <Math>F</Math> maps a pair <Math>(\alpha, \beta)</Math> to a colift <Math>\alpha \backslash \beta</Math> if it830exists, and to <C>fail</C> otherwise.831</Description>832</ManSection>833834835</Section>836837838<Section Label="Chapter_Morphisms_Section_Inverses">839<Heading>Inverses</Heading>840841Let <Math>\alpha: a \rightarrow b</Math> be a morphism. An inverse of <Math>\alpha</Math>842is a morphism <Math>\alpha^{-1}: b \rightarrow a</Math> such that843<Math>\alpha \circ \alpha^{-1} \sim_{b,b} \mathrm{id}_b</Math>844and <Math>\alpha^{-1} \circ \alpha \sim_{a,a} \mathrm{id}_a</Math>.845<ManSection>846<Oper Arg="C, F" Name="AddInverse" Label="for IsCapCategory, IsFunction"/>847<Returns>nothing848</Returns>849<Description>850The arguments are a category <Math>C</Math> and a function <Math>F</Math>.851This operations adds the given function <Math>F</Math>852to the category for the basic operation <C>Inverse</C>.853<Math>F: \alpha \mapsto \alpha^{-1}</Math>.854</Description>855</ManSection>856857858</Section>859860861<Section Label="Chapter_Morphisms_Section_Tool_functions_for_caches">862<Heading>Tool functions for caches</Heading>863864<ManSection>865<Oper Arg="phi, psi" Name="IsEqualForCacheForMorphisms" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>866<Returns>true or false867</Returns>868<Description>869Compares two objects in the cache870</Description>871</ManSection>872873874<ManSection>875<Oper Arg="c,F" Name="AddIsEqualForCacheForMorphisms" Label="for IsCapCategory, IsFunction"/>876<Returns>northing877</Returns>878<Description>879By default, CAP uses caches to store the values of Categorical operations.880To get a value out of the cache, one needs to compare the input of a basic operation881with its previous input. To compare morphisms in the category, IsEqualForCacheForMorphism is882used. By default this is an alias for IsEqualForMorphismsOnMor, where fail is substituted by false.883If you add a function, this function884used instead. A function <Math>F: a,b \mapsto bool</Math> is expected here. The output has to be885true or false. Fail is not allowed in this context.886</Description>887</ManSection>888889890</Section>891892893894<P/>895</Chapter>896897898899