CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutSign UpSign In

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

Views: 418346
1
<?xml version="1.0" encoding="UTF-8"?>
2
3
<!-- This is an automatically generated file. -->
4
<Chapter Label="Chapter_Objects">
5
<Heading>Objects</Heading>
6
7
<P/>
8
Any GAP object which is IsCapCategoryObject can be added to a category
9
and then becomes an object in this category.
10
Any object can belong to one or no category.
11
After a GAP object is added to the category, it knows which things can be
12
computed in its category and to which category it belongs.
13
It knows categorial properties and attributes, and the functions for existential quantifiers
14
can be applied to the object.
15
<Section Label="Chapter_Objects_Section_Attributes_for_the_Type_of_Objects">
16
<Heading>Attributes for the Type of Objects</Heading>
17
18
<ManSection>
19
<Attr Arg="a" Name="CapCategory" Label="for IsCapCategoryObject"/>
20
<Returns>a category
21
</Returns>
22
<Description>
23
The argument is an object <Math>a</Math>.
24
The output is the category <Math>\mathbf{C}</Math>
25
to which <Math>a</Math> was added.
26
</Description>
27
</ManSection>
28
29
30
</Section>
31
32
33
34
<Section Label="Chapter_Objects_Section_Equality_for_Objects">
35
<Heading>Equality for Objects</Heading>
36
37
<ManSection>
38
<Oper Arg="a,b" Name="IsEqualForObjects" Label="for IsCapCategoryObject, IsCapCategoryObject"/>
39
<Returns>a boolean
40
</Returns>
41
<Description>
42
The arguments are two objects <Math>a</Math> and <Math>b</Math>.
43
The output is <C>true</C> if <Math>a = b</Math>,
44
otherwise the output is <C>false</C>.
45
</Description>
46
</ManSection>
47
48
49
<ManSection>
50
<Oper Arg="C, F" Name="AddIsEqualForObjects" Label="for IsCapCategory, IsFunction"/>
51
<Returns>nothing
52
</Returns>
53
<Description>
54
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
55
This operations adds the given function <Math>F</Math>
56
to the category for the basic operation <C>IsEqualForObjects</C>.
57
<Math>F: (a,b) \mapsto \mathtt{IsEqualForObjects}(a,b)</Math>.
58
</Description>
59
</ManSection>
60
61
62
</Section>
63
64
65
<Section Label="Chapter_Objects_Section_Categorical_Properties_of_Objects">
66
<Heading>Categorical Properties of Objects</Heading>
67
68
<ManSection>
69
<Oper Arg="C, F" Name="AddIsProjective" Label="for IsCapCategory, IsFunction"/>
70
<Returns>nothing
71
</Returns>
72
<Description>
73
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
74
This operations adds the given function <Math>F</Math>
75
to the category for the basic operation <C>IsProjective</C>.
76
<Math>F: a \mapsto \mathtt{IsProjective}(a)</Math>.
77
</Description>
78
</ManSection>
79
80
81
<ManSection>
82
<Oper Arg="C, F" Name="AddIsInjective" Label="for IsCapCategory, IsFunction"/>
83
<Returns>nothing
84
</Returns>
85
<Description>
86
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
87
This operations adds the given function <Math>F</Math>
88
to the category for the basic operation <C>IsInjective</C>.
89
<Math>F: a \mapsto \mathtt{IsInjective}(a)</Math>.
90
</Description>
91
</ManSection>
92
93
94
<ManSection>
95
<Oper Arg="C, F" Name="AddIsTerminal" Label="for IsCapCategory, IsFunction"/>
96
<Returns>nothing
97
</Returns>
98
<Description>
99
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
100
This operations adds the given function <Math>F</Math>
101
to the category for the basic operation <C>IsTerminal</C>.
102
<Math>F: a \mapsto \mathtt{IsTerminal}(a)</Math>.
103
</Description>
104
</ManSection>
105
106
107
<ManSection>
108
<Oper Arg="C, F" Name="AddIsInitial" Label="for IsCapCategory, IsFunction"/>
109
<Returns>nothing
110
</Returns>
111
<Description>
112
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
113
This operations adds the given function <Math>F</Math>
114
to the category for the basic operation <C>IsInitial</C>.
115
<Math>F: a \mapsto \mathtt{IsInitial}(a)</Math>.
116
</Description>
117
</ManSection>
118
119
120
<ManSection>
121
<Oper Arg="a" Name="IsZeroForObjects" Label="for IsCapCategoryObject"/>
122
<Returns>a boolean
123
</Returns>
124
<Description>
125
The argument is an object <Math>a</Math> of a category <Math>\mathbf{C}</Math>.
126
The output is <C>true</C> if <Math>a</Math> is isomorphic to the zero object of <Math>\mathbf{C}</Math>,
127
otherwise the output is <C>false</C>.
128
</Description>
129
</ManSection>
130
131
132
<ManSection>
133
<Oper Arg="C, F" Name="AddIsZeroForObjects" Label="for IsCapCategory, IsFunction"/>
134
<Returns>nothing
135
</Returns>
136
<Description>
137
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
138
This operations adds the given function <Math>F</Math>
139
to the category for the basic operation <C>IsZeroForObjects</C>.
140
<Math>F: a \mapsto \mathtt{IsZeroForObjects}(a)</Math>.
141
</Description>
142
</ManSection>
143
144
145
</Section>
146
147
148
<Section Label="Chapter_Objects_Section_Tool_functions_for_caches">
149
<Heading>Tool functions for caches</Heading>
150
151
<ManSection>
152
<Oper Arg="phi, psi" Name="IsEqualForCacheForObjects" Label="for IsCapCategoryObject, IsCapCategoryObject"/>
153
<Returns>true or false
154
</Returns>
155
<Description>
156
Compares two objects in the cache
157
</Description>
158
</ManSection>
159
160
161
<ManSection>
162
<Oper Arg="c,F" Name="AddIsEqualForCacheForObjects" Label="for IsCapCategory, IsFunction"/>
163
<Returns>northing
164
</Returns>
165
<Description>
166
By default, CAP uses caches to store the values of Categorical operations.
167
To get a value out of the cache, one needs to compare the input of a basic operation
168
with its previous input. To compare objects in the category, IsEqualForCacheForObject is
169
used. By default this is an alias for IsEqualForObjects, where fail is substituted by false.
170
If you add a function, this function
171
used instead. A function <Math>F: a,b \mapsto bool</Math> is expected here. The output has to be
172
true or false. Fail is not allowed in this context.
173
</Description>
174
</ManSection>
175
176
177
</Section>
178
179
180
181
<Section Label="Chapter_Objects_Section_Well-Definedness_of_Objects">
182
<Heading>Well-Definedness of Objects</Heading>
183
184
<ManSection>
185
<Oper Arg="a" Name="IsWellDefinedForObjects" Label="for IsCapCategoryObject"/>
186
<Returns>a boolean
187
</Returns>
188
<Description>
189
The argument is an object <Math>a</Math>.
190
The output is <C>true</C> if <Math>a</Math> is well-defined,
191
otherwise the output is <C>false</C>.
192
</Description>
193
</ManSection>
194
195
196
<ManSection>
197
<Oper Arg="C, F" Name="AddIsWellDefinedForObjects" Label="for IsCapCategory, IsFunction"/>
198
<Returns>nothing
199
</Returns>
200
<Description>
201
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
202
This operations adds the given function <Math>F</Math>
203
to the category for the basic operation <C>IsWellDefinedForObjects</C>.
204
<Math>F: a \mapsto \mathtt{IsWellDefinedForObjects}( a )</Math>.
205
</Description>
206
</ManSection>
207
208
209
</Section>
210
211
212
<Section Label="Chapter_Objects_Section_Projectives">
213
<Heading>Projectives</Heading>
214
215
For a given object <Math>A</Math> in an abelian category having enough projectives,
216
the following commands allow us to compute some projective object <Math>P</Math>
217
together with an epimorphism <Math>\pi: P \rightarrow A</Math>.
218
<ManSection>
219
<Attr Arg="A" Name="SomeProjectiveObject" Label="for IsCapCategoryObject"/>
220
<Returns>an object
221
</Returns>
222
<Description>
223
The argument is an object <Math>A</Math>.
224
The output is some projective object <Math>P</Math>
225
for which there exists an epimorphism <Math>\pi: P \rightarrow A</Math>.
226
</Description>
227
</ManSection>
228
229
230
<ManSection>
231
<Attr Arg="A" Name="EpimorphismFromSomeProjectiveObject" Label="for IsCapCategoryObject"/>
232
<Returns>a morphism in <Math>\mathrm{Hom}(P,A)</Math>
233
</Returns>
234
<Description>
235
The argument is an object <Math>A</Math>.
236
The output is an epimorphism <Math>\pi: P \rightarrow A</Math>
237
with <Math>P</Math> a projective object that equals the output of <Math>\mathrm{SomeProjectiveObject}(A)</Math>.
238
</Description>
239
</ManSection>
240
241
242
<ManSection>
243
<Oper Arg="A, P" Name="EpimorphismFromSomeProjectiveObjectWithGivenSomeProjectiveObject" Label="for IsCapCategoryObject, IsCapCategoryObject"/>
244
<Returns>a morphism in <Math>\mathrm{Hom}(P,A)</Math>
245
</Returns>
246
<Description>
247
The arguments are an object <Math>A</Math>
248
and a projective object <Math>P</Math> that equals the output of <Math>\mathrm{SomeProjectiveObject}(A)</Math>.
249
The output is an epimorphism <Math>\pi: P \rightarrow A</Math>.
250
</Description>
251
</ManSection>
252
253
254
<ManSection>
255
<Oper Arg="pi, epsilon" Name="ProjectiveLift" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>
256
<Returns>a morphism in <Math>\mathrm{Hom}(P,B)</Math>
257
</Returns>
258
<Description>
259
The arguments are a morphism <Math>\pi: P \rightarrow A</Math> with <Math>P</Math> a projective,
260
and an epimorphism <Math>\epsilon: B \rightarrow A</Math>.
261
The output is a morphism <Math>\lambda: P \rightarrow B</Math> such that
262
<Math>\epsilon \circ \lambda = \pi</Math>.
263
</Description>
264
</ManSection>
265
266
267
<ManSection>
268
<Oper Arg="C, F" Name="AddSomeProjectiveObject" Label="for IsCapCategory, IsFunction"/>
269
<Returns>nothing
270
</Returns>
271
<Description>
272
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
273
This operation adds the given function <Math>F</Math>
274
to the category for the basic operation <C>SomeProjectiveObject</C>.
275
<Math>F: A \mapsto P</Math>.
276
</Description>
277
</ManSection>
278
279
280
<ManSection>
281
<Oper Arg="C, F" Name="AddEpimorphismFromSomeProjectiveObject" Label="for IsCapCategory, IsFunction"/>
282
<Returns>nothing
283
</Returns>
284
<Description>
285
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
286
This operation adds the given function <Math>F</Math>
287
to the category for the basic operation <C>EpimorphismFromSomeProjectiveObject</C>.
288
<Math>F: A \mapsto \pi</Math>.
289
</Description>
290
</ManSection>
291
292
293
<ManSection>
294
<Oper Arg="C, F" Name="AddEpimorphismFromSomeProjectiveObjectWithGivenSomeProjectiveObject" Label="for IsCapCategory, IsFunction"/>
295
<Returns>nothing
296
</Returns>
297
<Description>
298
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
299
This operation adds the given function <Math>F</Math>
300
to the category for the basic operation <C>AddEpimorphismFromSomeProjectiveObjectWithGivenSomeProjectiveObject</C>.
301
<Math>F: (A,P) \mapsto \pi</Math>.
302
</Description>
303
</ManSection>
304
305
306
<ManSection>
307
<Oper Arg="C, F" Name="AddProjectiveLift" Label="for IsCapCategory, IsFunction"/>
308
<Returns>nothing
309
</Returns>
310
<Description>
311
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
312
This operations adds the given function <Math>F</Math>
313
to the category for the basic operation <C>ProjectiveLift</C>.
314
The function <Math>F</Math> maps a pair <Math>(\pi, \epsilon)</Math> to a projective lift <Math>\lambda</Math>.
315
</Description>
316
</ManSection>
317
318
319
</Section>
320
321
322
<Section Label="Chapter_Objects_Section_Injectives">
323
<Heading>Injectives</Heading>
324
325
For a given object <Math>A</Math> in an abelian category having enough injectives,
326
the following commands allow us to compute some injective object <Math>I</Math>
327
together with a monomorphism <Math>\iota: A \rightarrow I</Math>.
328
<ManSection>
329
<Attr Arg="A" Name="SomeInjectiveObject" Label="for IsCapCategoryObject"/>
330
<Returns>an object
331
</Returns>
332
<Description>
333
The argument is an object <Math>A</Math>.
334
The output is some injective object <Math>I</Math>
335
for which there exists a monomorphism <Math>\iota: A \rightarrow I</Math>.
336
</Description>
337
</ManSection>
338
339
340
<ManSection>
341
<Attr Arg="A" Name="MonomorphismIntoSomeInjectiveObject" Label="for IsCapCategoryObject"/>
342
<Returns>a morphism in <Math>\mathrm{Hom}(I,A)</Math>
343
</Returns>
344
<Description>
345
The argument is an object <Math>A</Math>.
346
The output is a monomorphism <Math>\iota: A \rightarrow I</Math>
347
with <Math>I</Math> an injective object that equals the output of <Math>\mathrm{SomeInjectiveObject}(A)</Math>.
348
</Description>
349
</ManSection>
350
351
352
<ManSection>
353
<Oper Arg="A, I" Name="MonomorphismIntoSomeInjectiveObjectWithGivenSomeInjectiveObject" Label="for IsCapCategoryObject, IsCapCategoryObject"/>
354
<Returns>a morphism in <Math>\mathrm{Hom}(I,A)</Math>
355
</Returns>
356
<Description>
357
The arguments are an object <Math>A</Math>
358
and an injective object <Math>I</Math> that equals the output of <Math>\mathrm{SomeInjectiveObject}(A)</Math>.
359
The output is a monomorphism <Math>\iota: A \rightarrow I</Math>.
360
</Description>
361
</ManSection>
362
363
364
<ManSection>
365
<Oper Arg="\iota, \beta" Name="InjectiveColift" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>
366
<Returns>a morphism in <Math>\mathrm{Hom}(A,I)</Math>
367
</Returns>
368
<Description>
369
The arguments are a morphism <Math>\iota: B \rightarrow A</Math>
370
and <Math>\beta: B \rightarrow I</Math> where <Math>I</Math> is an injective object.
371
The output is a morphism <Math>\lambda: A \rightarrow I</Math> such that
372
<Math>\lambda \circ \iota = \beta</Math>.
373
</Description>
374
</ManSection>
375
376
377
<ManSection>
378
<Oper Arg="C, F" Name="AddSomeInjectiveObject" Label="for IsCapCategory, IsFunction"/>
379
<Returns>nothing
380
</Returns>
381
<Description>
382
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
383
This operation adds the given function <Math>F</Math>
384
to the category for the basic operation <C>SomeInjectiveObject</C>.
385
<Math>F: A \mapsto I</Math>.
386
</Description>
387
</ManSection>
388
389
390
<ManSection>
391
<Oper Arg="C, F" Name="AddMonomorphismIntoSomeInjectiveObject" Label="for IsCapCategory, IsFunction"/>
392
<Returns>nothing
393
</Returns>
394
<Description>
395
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
396
This operation adds the given function <Math>F</Math>
397
to the category for the basic operation <C>MonomorphismIntoSomeInjectiveObject</C>.
398
<Math>F: A \mapsto \pi</Math>.
399
</Description>
400
</ManSection>
401
402
403
<ManSection>
404
<Oper Arg="C, F" Name="AddMonomorphismIntoSomeInjectiveObjectWithGivenSomeInjectiveObject" Label="for IsCapCategory, IsFunction"/>
405
<Returns>nothing
406
</Returns>
407
<Description>
408
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
409
This operation adds the given function <Math>F</Math>
410
to the category for the basic operation <C>AddMonomorphismIntoSomeInjectiveObjectWithGivenSomeInjectiveObject</C>.
411
<Math>F: (A,I) \mapsto \pi</Math>.
412
</Description>
413
</ManSection>
414
415
416
<ManSection>
417
<Oper Arg="C, F" Name="AddInjectiveColift" Label="for IsCapCategory, IsFunction"/>
418
<Returns>nothing
419
</Returns>
420
<Description>
421
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
422
This operations adds the given function <Math>F</Math>
423
to the category for the basic operation <C>InjectiveColift</C>.
424
The function <Math>F</Math> maps a pair <Math>(\iota, \beta)</Math> to an injective colift <Math>\lambda</Math> if it
425
exists, and to <C>fail</C> otherwise.
426
</Description>
427
</ManSection>
428
429
430
</Section>
431
432
433
<P/>
434
</Chapter>
435
436
437