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_Objects">4<Heading>Objects</Heading>56<P/>7Any GAP object which is IsCapCategoryObject can be added to a category8and then becomes an object in this category.9Any object 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 categorial properties and attributes, and the functions for existential quantifiers13can be applied to the object.14<Section Label="Chapter_Objects_Section_Attributes_for_the_Type_of_Objects">15<Heading>Attributes for the Type of Objects</Heading>1617<ManSection>18<Attr Arg="a" Name="CapCategory" Label="for IsCapCategoryObject"/>19<Returns>a category20</Returns>21<Description>22The argument is an object <Math>a</Math>.23The output is the category <Math>\mathbf{C}</Math>24to which <Math>a</Math> was added.25</Description>26</ManSection>272829</Section>30313233<Section Label="Chapter_Objects_Section_Equality_for_Objects">34<Heading>Equality for Objects</Heading>3536<ManSection>37<Oper Arg="a,b" Name="IsEqualForObjects" Label="for IsCapCategoryObject, IsCapCategoryObject"/>38<Returns>a boolean39</Returns>40<Description>41The arguments are two objects <Math>a</Math> and <Math>b</Math>.42The output is <C>true</C> if <Math>a = b</Math>,43otherwise the output is <C>false</C>.44</Description>45</ManSection>464748<ManSection>49<Oper Arg="C, F" Name="AddIsEqualForObjects" Label="for IsCapCategory, IsFunction"/>50<Returns>nothing51</Returns>52<Description>53The arguments are a category <Math>C</Math> and a function <Math>F</Math>.54This operations adds the given function <Math>F</Math>55to the category for the basic operation <C>IsEqualForObjects</C>.56<Math>F: (a,b) \mapsto \mathtt{IsEqualForObjects}(a,b)</Math>.57</Description>58</ManSection>596061</Section>626364<Section Label="Chapter_Objects_Section_Categorical_Properties_of_Objects">65<Heading>Categorical Properties of Objects</Heading>6667<ManSection>68<Oper Arg="C, F" Name="AddIsProjective" Label="for IsCapCategory, IsFunction"/>69<Returns>nothing70</Returns>71<Description>72The arguments are a category <Math>C</Math> and a function <Math>F</Math>.73This operations adds the given function <Math>F</Math>74to the category for the basic operation <C>IsProjective</C>.75<Math>F: a \mapsto \mathtt{IsProjective}(a)</Math>.76</Description>77</ManSection>787980<ManSection>81<Oper Arg="C, F" Name="AddIsInjective" Label="for IsCapCategory, IsFunction"/>82<Returns>nothing83</Returns>84<Description>85The arguments are a category <Math>C</Math> and a function <Math>F</Math>.86This operations adds the given function <Math>F</Math>87to the category for the basic operation <C>IsInjective</C>.88<Math>F: a \mapsto \mathtt{IsInjective}(a)</Math>.89</Description>90</ManSection>919293<ManSection>94<Oper Arg="C, F" Name="AddIsTerminal" Label="for IsCapCategory, IsFunction"/>95<Returns>nothing96</Returns>97<Description>98The arguments are a category <Math>C</Math> and a function <Math>F</Math>.99This operations adds the given function <Math>F</Math>100to the category for the basic operation <C>IsTerminal</C>.101<Math>F: a \mapsto \mathtt{IsTerminal}(a)</Math>.102</Description>103</ManSection>104105106<ManSection>107<Oper Arg="C, F" Name="AddIsInitial" Label="for IsCapCategory, IsFunction"/>108<Returns>nothing109</Returns>110<Description>111The arguments are a category <Math>C</Math> and a function <Math>F</Math>.112This operations adds the given function <Math>F</Math>113to the category for the basic operation <C>IsInitial</C>.114<Math>F: a \mapsto \mathtt{IsInitial}(a)</Math>.115</Description>116</ManSection>117118119<ManSection>120<Oper Arg="a" Name="IsZeroForObjects" Label="for IsCapCategoryObject"/>121<Returns>a boolean122</Returns>123<Description>124The argument is an object <Math>a</Math> of a category <Math>\mathbf{C}</Math>.125The output is <C>true</C> if <Math>a</Math> is isomorphic to the zero object of <Math>\mathbf{C}</Math>,126otherwise the output is <C>false</C>.127</Description>128</ManSection>129130131<ManSection>132<Oper Arg="C, F" Name="AddIsZeroForObjects" Label="for IsCapCategory, IsFunction"/>133<Returns>nothing134</Returns>135<Description>136The arguments are a category <Math>C</Math> and a function <Math>F</Math>.137This operations adds the given function <Math>F</Math>138to the category for the basic operation <C>IsZeroForObjects</C>.139<Math>F: a \mapsto \mathtt{IsZeroForObjects}(a)</Math>.140</Description>141</ManSection>142143144</Section>145146147<Section Label="Chapter_Objects_Section_Tool_functions_for_caches">148<Heading>Tool functions for caches</Heading>149150<ManSection>151<Oper Arg="phi, psi" Name="IsEqualForCacheForObjects" Label="for IsCapCategoryObject, IsCapCategoryObject"/>152<Returns>true or false153</Returns>154<Description>155Compares two objects in the cache156</Description>157</ManSection>158159160<ManSection>161<Oper Arg="c,F" Name="AddIsEqualForCacheForObjects" Label="for IsCapCategory, IsFunction"/>162<Returns>northing163</Returns>164<Description>165By default, CAP uses caches to store the values of Categorical operations.166To get a value out of the cache, one needs to compare the input of a basic operation167with its previous input. To compare objects in the category, IsEqualForCacheForObject is168used. By default this is an alias for IsEqualForObjects, where fail is substituted by false.169If you add a function, this function170used instead. A function <Math>F: a,b \mapsto bool</Math> is expected here. The output has to be171true or false. Fail is not allowed in this context.172</Description>173</ManSection>174175176</Section>177178179180<Section Label="Chapter_Objects_Section_Well-Definedness_of_Objects">181<Heading>Well-Definedness of Objects</Heading>182183<ManSection>184<Oper Arg="a" Name="IsWellDefinedForObjects" Label="for IsCapCategoryObject"/>185<Returns>a boolean186</Returns>187<Description>188The argument is an object <Math>a</Math>.189The output is <C>true</C> if <Math>a</Math> is well-defined,190otherwise the output is <C>false</C>.191</Description>192</ManSection>193194195<ManSection>196<Oper Arg="C, F" Name="AddIsWellDefinedForObjects" Label="for IsCapCategory, IsFunction"/>197<Returns>nothing198</Returns>199<Description>200The arguments are a category <Math>C</Math> and a function <Math>F</Math>.201This operations adds the given function <Math>F</Math>202to the category for the basic operation <C>IsWellDefinedForObjects</C>.203<Math>F: a \mapsto \mathtt{IsWellDefinedForObjects}( a )</Math>.204</Description>205</ManSection>206207208</Section>209210211<Section Label="Chapter_Objects_Section_Projectives">212<Heading>Projectives</Heading>213214For a given object <Math>A</Math> in an abelian category having enough projectives,215the following commands allow us to compute some projective object <Math>P</Math>216together with an epimorphism <Math>\pi: P \rightarrow A</Math>.217<ManSection>218<Attr Arg="A" Name="SomeProjectiveObject" Label="for IsCapCategoryObject"/>219<Returns>an object220</Returns>221<Description>222The argument is an object <Math>A</Math>.223The output is some projective object <Math>P</Math>224for which there exists an epimorphism <Math>\pi: P \rightarrow A</Math>.225</Description>226</ManSection>227228229<ManSection>230<Attr Arg="A" Name="EpimorphismFromSomeProjectiveObject" Label="for IsCapCategoryObject"/>231<Returns>a morphism in <Math>\mathrm{Hom}(P,A)</Math>232</Returns>233<Description>234The argument is an object <Math>A</Math>.235The output is an epimorphism <Math>\pi: P \rightarrow A</Math>236with <Math>P</Math> a projective object that equals the output of <Math>\mathrm{SomeProjectiveObject}(A)</Math>.237</Description>238</ManSection>239240241<ManSection>242<Oper Arg="A, P" Name="EpimorphismFromSomeProjectiveObjectWithGivenSomeProjectiveObject" Label="for IsCapCategoryObject, IsCapCategoryObject"/>243<Returns>a morphism in <Math>\mathrm{Hom}(P,A)</Math>244</Returns>245<Description>246The arguments are an object <Math>A</Math>247and a projective object <Math>P</Math> that equals the output of <Math>\mathrm{SomeProjectiveObject}(A)</Math>.248The output is an epimorphism <Math>\pi: P \rightarrow A</Math>.249</Description>250</ManSection>251252253<ManSection>254<Oper Arg="pi, epsilon" Name="ProjectiveLift" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>255<Returns>a morphism in <Math>\mathrm{Hom}(P,B)</Math>256</Returns>257<Description>258The arguments are a morphism <Math>\pi: P \rightarrow A</Math> with <Math>P</Math> a projective,259and an epimorphism <Math>\epsilon: B \rightarrow A</Math>.260The output is a morphism <Math>\lambda: P \rightarrow B</Math> such that261<Math>\epsilon \circ \lambda = \pi</Math>.262</Description>263</ManSection>264265266<ManSection>267<Oper Arg="C, F" Name="AddSomeProjectiveObject" Label="for IsCapCategory, IsFunction"/>268<Returns>nothing269</Returns>270<Description>271The arguments are a category <Math>C</Math> and a function <Math>F</Math>.272This operation adds the given function <Math>F</Math>273to the category for the basic operation <C>SomeProjectiveObject</C>.274<Math>F: A \mapsto P</Math>.275</Description>276</ManSection>277278279<ManSection>280<Oper Arg="C, F" Name="AddEpimorphismFromSomeProjectiveObject" Label="for IsCapCategory, IsFunction"/>281<Returns>nothing282</Returns>283<Description>284The arguments are a category <Math>C</Math> and a function <Math>F</Math>.285This operation adds the given function <Math>F</Math>286to the category for the basic operation <C>EpimorphismFromSomeProjectiveObject</C>.287<Math>F: A \mapsto \pi</Math>.288</Description>289</ManSection>290291292<ManSection>293<Oper Arg="C, F" Name="AddEpimorphismFromSomeProjectiveObjectWithGivenSomeProjectiveObject" Label="for IsCapCategory, IsFunction"/>294<Returns>nothing295</Returns>296<Description>297The arguments are a category <Math>C</Math> and a function <Math>F</Math>.298This operation adds the given function <Math>F</Math>299to the category for the basic operation <C>AddEpimorphismFromSomeProjectiveObjectWithGivenSomeProjectiveObject</C>.300<Math>F: (A,P) \mapsto \pi</Math>.301</Description>302</ManSection>303304305<ManSection>306<Oper Arg="C, F" Name="AddProjectiveLift" Label="for IsCapCategory, IsFunction"/>307<Returns>nothing308</Returns>309<Description>310The arguments are a category <Math>C</Math> and a function <Math>F</Math>.311This operations adds the given function <Math>F</Math>312to the category for the basic operation <C>ProjectiveLift</C>.313The function <Math>F</Math> maps a pair <Math>(\pi, \epsilon)</Math> to a projective lift <Math>\lambda</Math>.314</Description>315</ManSection>316317318</Section>319320321<Section Label="Chapter_Objects_Section_Injectives">322<Heading>Injectives</Heading>323324For a given object <Math>A</Math> in an abelian category having enough injectives,325the following commands allow us to compute some injective object <Math>I</Math>326together with a monomorphism <Math>\iota: A \rightarrow I</Math>.327<ManSection>328<Attr Arg="A" Name="SomeInjectiveObject" Label="for IsCapCategoryObject"/>329<Returns>an object330</Returns>331<Description>332The argument is an object <Math>A</Math>.333The output is some injective object <Math>I</Math>334for which there exists a monomorphism <Math>\iota: A \rightarrow I</Math>.335</Description>336</ManSection>337338339<ManSection>340<Attr Arg="A" Name="MonomorphismIntoSomeInjectiveObject" Label="for IsCapCategoryObject"/>341<Returns>a morphism in <Math>\mathrm{Hom}(I,A)</Math>342</Returns>343<Description>344The argument is an object <Math>A</Math>.345The output is a monomorphism <Math>\iota: A \rightarrow I</Math>346with <Math>I</Math> an injective object that equals the output of <Math>\mathrm{SomeInjectiveObject}(A)</Math>.347</Description>348</ManSection>349350351<ManSection>352<Oper Arg="A, I" Name="MonomorphismIntoSomeInjectiveObjectWithGivenSomeInjectiveObject" Label="for IsCapCategoryObject, IsCapCategoryObject"/>353<Returns>a morphism in <Math>\mathrm{Hom}(I,A)</Math>354</Returns>355<Description>356The arguments are an object <Math>A</Math>357and an injective object <Math>I</Math> that equals the output of <Math>\mathrm{SomeInjectiveObject}(A)</Math>.358The output is a monomorphism <Math>\iota: A \rightarrow I</Math>.359</Description>360</ManSection>361362363<ManSection>364<Oper Arg="\iota, \beta" Name="InjectiveColift" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>365<Returns>a morphism in <Math>\mathrm{Hom}(A,I)</Math>366</Returns>367<Description>368The arguments are a morphism <Math>\iota: B \rightarrow A</Math>369and <Math>\beta: B \rightarrow I</Math> where <Math>I</Math> is an injective object.370The output is a morphism <Math>\lambda: A \rightarrow I</Math> such that371<Math>\lambda \circ \iota = \beta</Math>.372</Description>373</ManSection>374375376<ManSection>377<Oper Arg="C, F" Name="AddSomeInjectiveObject" Label="for IsCapCategory, IsFunction"/>378<Returns>nothing379</Returns>380<Description>381The arguments are a category <Math>C</Math> and a function <Math>F</Math>.382This operation adds the given function <Math>F</Math>383to the category for the basic operation <C>SomeInjectiveObject</C>.384<Math>F: A \mapsto I</Math>.385</Description>386</ManSection>387388389<ManSection>390<Oper Arg="C, F" Name="AddMonomorphismIntoSomeInjectiveObject" Label="for IsCapCategory, IsFunction"/>391<Returns>nothing392</Returns>393<Description>394The arguments are a category <Math>C</Math> and a function <Math>F</Math>.395This operation adds the given function <Math>F</Math>396to the category for the basic operation <C>MonomorphismIntoSomeInjectiveObject</C>.397<Math>F: A \mapsto \pi</Math>.398</Description>399</ManSection>400401402<ManSection>403<Oper Arg="C, F" Name="AddMonomorphismIntoSomeInjectiveObjectWithGivenSomeInjectiveObject" Label="for IsCapCategory, IsFunction"/>404<Returns>nothing405</Returns>406<Description>407The arguments are a category <Math>C</Math> and a function <Math>F</Math>.408This operation adds the given function <Math>F</Math>409to the category for the basic operation <C>AddMonomorphismIntoSomeInjectiveObjectWithGivenSomeInjectiveObject</C>.410<Math>F: (A,I) \mapsto \pi</Math>.411</Description>412</ManSection>413414415<ManSection>416<Oper Arg="C, F" Name="AddInjectiveColift" Label="for IsCapCategory, IsFunction"/>417<Returns>nothing418</Returns>419<Description>420The arguments are a category <Math>C</Math> and a function <Math>F</Math>.421This operations adds the given function <Math>F</Math>422to the category for the basic operation <C>InjectiveColift</C>.423The function <Math>F</Math> maps a pair <Math>(\iota, \beta)</Math> to an injective colift <Math>\lambda</Math> if it424exists, and to <C>fail</C> otherwise.425</Description>426</ManSection>427428429</Section>430431432<P/>433</Chapter>434435436437