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_Morphisms">
5
<Heading>Morphisms</Heading>
6
7
<P/>
8
Any GAP object satisfying <C>IsCapCategoryMorphism</C> can be added to a category
9
and then becomes a morphism in this category.
10
Any morphism 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 categorical properties and attributes, and the functions for existential quantifiers
14
can be applied to the morphism.
15
<Section Label="Chapter_Morphisms_Section_Attributes_for_the_Type_of_Morphisms">
16
<Heading>Attributes for the Type of Morphisms</Heading>
17
18
<ManSection>
19
<Attr Arg="alpha" Name="CapCategory" Label="for IsCapCategoryMorphism"/>
20
<Returns>a category
21
</Returns>
22
<Description>
23
The argument is a morphism <Math>\alpha</Math>.
24
The output is the category <Math>\mathbf{C}</Math>
25
to which <Math>\alpha</Math> was added.
26
</Description>
27
</ManSection>
28
29
30
<ManSection>
31
<Attr Arg="alpha" Name="Source" Label="for IsCapCategoryMorphism"/>
32
<Returns>an object
33
</Returns>
34
<Description>
35
The argument is a morphism <Math>\alpha: a \rightarrow b</Math>.
36
The output is its source <Math>a</Math>.
37
</Description>
38
</ManSection>
39
40
41
<ManSection>
42
<Attr Arg="alpha" Name="Range" Label="for IsCapCategoryMorphism"/>
43
<Returns>an object
44
</Returns>
45
<Description>
46
The argument is a morphism <Math>\alpha: a \rightarrow b</Math>.
47
The output is its range <Math>b</Math>.
48
</Description>
49
</ManSection>
50
51
52
</Section>
53
54
55
56
<Section Label="Chapter_Morphisms_Section_Categorical_Properties_of_Morphisms">
57
<Heading>Categorical Properties of Morphisms</Heading>
58
59
<ManSection>
60
<Oper Arg="C, F" Name="AddIsMonomorphism" Label="for IsCapCategory, IsFunction"/>
61
<Returns>nothing
62
</Returns>
63
<Description>
64
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
65
This operations adds the given function <Math>F</Math>
66
to the category for the basic operation <C>IsMonomorphism</C>.
67
<Math>F: \alpha \mapsto \mathtt{IsMonomorphism}(\alpha)</Math>.
68
</Description>
69
</ManSection>
70
71
72
<ManSection>
73
<Oper Arg="C, F" Name="AddIsEpimorphism" Label="for IsCapCategory, IsFunction"/>
74
<Returns>nothing
75
</Returns>
76
<Description>
77
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
78
This operations adds the given function <Math>F</Math>
79
to the category for the basic operation <C>IsEpimorphism</C>.
80
<Math>F: \alpha \mapsto \mathtt{IsEpimorphism}(\alpha)</Math>.
81
</Description>
82
</ManSection>
83
84
85
<ManSection>
86
<Oper Arg="C, F" Name="AddIsIsomorphism" Label="for IsCapCategory, IsFunction"/>
87
<Returns>nothing
88
</Returns>
89
<Description>
90
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
91
This operations adds the given function <Math>F</Math>
92
to the category for the basic operation <C>IsIsomorphism</C>.
93
<Math>F: \alpha \mapsto \mathtt{IsIsomorphism}(\alpha)</Math>.
94
</Description>
95
</ManSection>
96
97
98
<ManSection>
99
<Oper Arg="C, F" Name="AddIsSplitMonomorphism" Label="for IsCapCategory, IsFunction"/>
100
<Returns>nothing
101
</Returns>
102
<Description>
103
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
104
This operations adds the given function <Math>F</Math>
105
to the category for the basic operation <C>IsSplitMonomorphism</C>.
106
<Math>F: \alpha \mapsto \mathtt{IsSplitMonomorphism}(\alpha)</Math>.
107
</Description>
108
</ManSection>
109
110
111
<ManSection>
112
<Oper Arg="C, F" Name="AddIsSplitEpimorphism" Label="for IsCapCategory, IsFunction"/>
113
<Returns>nothing
114
</Returns>
115
<Description>
116
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
117
This operations adds the given function <Math>F</Math>
118
to the category for the basic operation <C>IsSplitEpimorphism</C>.
119
<Math>F: \alpha \mapsto \mathtt{IsSplitEpimorphism}(\alpha)</Math>.
120
</Description>
121
</ManSection>
122
123
124
<ManSection>
125
<Oper Arg="C, F" Name="AddIsOne" Label="for IsCapCategory, IsFunction"/>
126
<Returns>nothing
127
</Returns>
128
<Description>
129
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
130
This operations adds the given function <Math>F</Math>
131
to the category for the basic operation <C>IsOne</C>.
132
<Math>F: \alpha \mapsto \mathtt{IsOne}(\alpha)</Math>.
133
</Description>
134
</ManSection>
135
136
137
<ManSection>
138
<Oper Arg="C, F" Name="AddIsIdempotent" Label="for IsCapCategory, IsFunction"/>
139
<Returns>nothing
140
</Returns>
141
<Description>
142
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
143
This operations adds the given function <Math>F</Math>
144
to the category for the basic operation <C>IsIdempotent</C>.
145
<Math>F: \alpha \mapsto \mathtt{IsIdempotent}(\alpha)</Math>.
146
</Description>
147
</ManSection>
148
149
150
</Section>
151
152
153
<Section Label="Chapter_Morphisms_Section_Non-Categorical_Properties_of_Morphisms">
154
<Heading>Non-Categorical Properties of Morphisms</Heading>
155
156
Non-categorical properties are not stable under equivalences of categories.
157
<ManSection>
158
<Prop Arg="alpha" Name="IsIdenticalToIdentityMorphism" Label="for IsCapCategoryMorphism"/>
159
<Returns>a boolean
160
</Returns>
161
<Description>
162
The argument is a morphism <Math>\alpha: a \rightarrow b</Math>.
163
The output is <C>true</C> if <Math>\alpha = \mathrm{id}_a</Math>,
164
otherwise the output is <C>false</C>.
165
</Description>
166
</ManSection>
167
168
169
<ManSection>
170
<Oper Arg="C, F" Name="AddIsIdenticalToIdentityMorphism" Label="for IsCapCategory, IsFunction"/>
171
<Returns>nothing
172
</Returns>
173
<Description>
174
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
175
This operations adds the given function <Math>F</Math>
176
to the category for the basic operation <C>IsIdenticalToIdentityMorphism</C>.
177
<Math>F: \alpha \mapsto \mathtt{IsIdenticalToIdentityMorphism}(\alpha)</Math>.
178
</Description>
179
</ManSection>
180
181
182
<ManSection>
183
<Prop Arg="alpha" Name="IsIdenticalToZeroMorphism" Label="for IsCapCategoryMorphism"/>
184
<Returns>a boolean
185
</Returns>
186
<Description>
187
The argument is a morphism <Math>\alpha: a \rightarrow b</Math>.
188
The output is <C>true</C> if <Math>\alpha = 0</Math>,
189
otherwise the output is <C>false</C>.
190
</Description>
191
</ManSection>
192
193
194
<ManSection>
195
<Oper Arg="C, F" Name="AddIsIdenticalToZeroMorphism" Label="for IsCapCategory, IsFunction"/>
196
<Returns>nothing
197
</Returns>
198
<Description>
199
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
200
This operations adds the given function <Math>F</Math>
201
to the category for the basic operation <C>IsIdenticalToZeroMorphism</C>.
202
<Math>F: \alpha \mapsto \mathtt{IsIdenticalToZeroMorphism }(\alpha)</Math>.
203
</Description>
204
</ManSection>
205
206
207
<ManSection>
208
<Oper Arg="C, F" Name="AddIsEndomorphism" Label="for IsCapCategory, IsFunction"/>
209
<Returns>nothing
210
</Returns>
211
<Description>
212
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
213
This operations adds the given function <Math>F</Math>
214
to the category for the basic operation <C>IsEndomorphism</C>.
215
<Math>F: \alpha \mapsto \mathtt{IsEndomorphism}(\alpha)</Math>.
216
</Description>
217
</ManSection>
218
219
220
<ManSection>
221
<Oper Arg="C, F" Name="AddIsAutomorphism" Label="for IsCapCategory, IsFunction"/>
222
<Returns>nothing
223
</Returns>
224
<Description>
225
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
226
This operations adds the given function <Math>F</Math>
227
to the category for the basic operation <C>IsAutomorphism</C>.
228
<Math>F: \alpha \mapsto \mathtt{IsAutomorphism}(\alpha)</Math>.
229
</Description>
230
</ManSection>
231
232
233
</Section>
234
235
236
237
<Section Label="Chapter_Morphisms_Section_Equality_and_Congruence_for_Morphisms">
238
<Heading>Equality and Congruence for Morphisms</Heading>
239
240
<ManSection>
241
<Oper Arg="alpha, beta" Name="IsCongruentForMorphisms" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>
242
<Returns>a boolean
243
</Returns>
244
<Description>
245
The arguments are two morphisms <Math>\alpha, \beta: a \rightarrow b</Math>.
246
The output is <C>true</C> if <Math>\alpha \sim_{a,b} \beta</Math>,
247
otherwise the output is <C>false</C>.
248
</Description>
249
</ManSection>
250
251
252
<ManSection>
253
<Oper Arg="C, F" Name="AddIsCongruentForMorphisms" Label="for IsCapCategory, IsFunction"/>
254
<Returns>nothing
255
</Returns>
256
<Description>
257
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
258
This operations adds the given function <Math>F</Math>
259
to the category for the basic operation <C>IsCongruentForMorphisms</C>.
260
<Math>F: (\alpha, \beta) \mapsto \mathtt{IsCongruentForMorphisms}(\alpha, \beta)</Math>.
261
</Description>
262
</ManSection>
263
264
265
<ManSection>
266
<Oper Arg="alpha, beta" Name="IsEqualForMorphisms" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>
267
<Returns>a boolean
268
</Returns>
269
<Description>
270
The arguments are two morphisms <Math>\alpha, \beta: a \rightarrow b</Math>.
271
The output is <C>true</C> if <Math>\alpha = \beta</Math>,
272
otherwise the output is <C>false</C>.
273
</Description>
274
</ManSection>
275
276
277
<ManSection>
278
<Oper Arg="C, F" Name="AddIsEqualForMorphisms" Label="for IsCapCategory, IsFunction"/>
279
<Returns>nothing
280
</Returns>
281
<Description>
282
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
283
This operations adds the given function <Math>F</Math>
284
to the category for the basic operation <C>IsEqualForMorphisms</C>.
285
<Math>F: (\alpha, \beta) \mapsto \mathtt{IsEqualForMorphisms}(\alpha, \beta)</Math>.
286
</Description>
287
</ManSection>
288
289
290
<ManSection>
291
<Oper Arg="alpha, beta" Name="IsEqualForMorphismsOnMor" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>
292
<Returns>a boolean
293
</Returns>
294
<Description>
295
The arguments are two morphisms <Math>\alpha: a \rightarrow b, \beta: c \rightarrow d</Math>.
296
The output is <C>true</C> if <Math>\alpha = \beta</Math>,
297
otherwise the output is <C>false</C>.
298
</Description>
299
</ManSection>
300
301
302
<ManSection>
303
<Oper Arg="C, F" Name="AddIsEqualForMorphismsOnMor" Label="for IsCapCategory, IsFunction"/>
304
<Returns>nothing
305
</Returns>
306
<Description>
307
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
308
This operations adds the given function <Math>F</Math>
309
to the category for the basic operation <C>IsEqualForMorphismsOnMor</C>.
310
<Math>F: (\alpha, \beta) \mapsto \mathtt{IsEqualForMorphismsOnMor}(\alpha, \beta)</Math>.
311
</Description>
312
</ManSection>
313
314
315
</Section>
316
317
318
<Section Label="Chapter_Morphisms_Section_Basic_Operations_for_Morphisms_in_Ab-Categories">
319
<Heading>Basic Operations for Morphisms in Ab-Categories</Heading>
320
321
<ManSection>
322
<Oper Arg="alpha" Name="IsZeroForMorphisms" Label="for IsCapCategoryMorphism"/>
323
<Returns>a boolean
324
</Returns>
325
<Description>
326
The argument is a morphism <Math>\alpha: a \rightarrow b</Math>.
327
The output is <C>true</C> if <Math>\alpha \sim_{a,b} 0</Math>,
328
otherwise the output is <C>false</C>.
329
</Description>
330
</ManSection>
331
332
333
<ManSection>
334
<Oper Arg="C, F" Name="AddIsZeroForMorphisms" Label="for IsCapCategory, IsFunction"/>
335
<Returns>nothing
336
</Returns>
337
<Description>
338
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
339
This operations adds the given function <Math>F</Math>
340
to the category for the basic operation <C>IsZeroForMorphisms</C>.
341
<Math>F: \alpha \mapsto \mathtt{IsZeroForMorphisms}(\alpha)</Math>.
342
</Description>
343
</ManSection>
344
345
346
<ManSection>
347
<Oper Arg="alpha, beta" Name="AdditionForMorphisms" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>
348
<Returns>a morphism in <Math>\mathrm{Hom}(a,b)</Math>
349
</Returns>
350
<Description>
351
The arguments are two morphisms <Math>\alpha, \beta: a \rightarrow b</Math>.
352
The output is the addition <Math>\alpha + \beta</Math>.
353
</Description>
354
</ManSection>
355
356
357
<ManSection>
358
<Oper Arg="C, F" Name="AddAdditionForMorphisms" Label="for IsCapCategory, IsFunction"/>
359
<Returns>nothing
360
</Returns>
361
<Description>
362
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
363
This operations adds the given function <Math>F</Math>
364
to the category for the basic operation <C>AdditionForMorphisms</C>.
365
<Math>F: (\alpha, \beta) \mapsto \alpha + \beta</Math>.
366
</Description>
367
</ManSection>
368
369
370
<ManSection>
371
<Oper Arg="alpha, beta" Name="SubtractionForMorphisms" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>
372
<Returns>a morphism in <Math>\mathrm{Hom}(a,b)</Math>
373
</Returns>
374
<Description>
375
The arguments are two morphisms <Math>\alpha, \beta: a \rightarrow b</Math>.
376
The output is the addition <Math>\alpha - \beta</Math>.
377
</Description>
378
</ManSection>
379
380
381
<ManSection>
382
<Oper Arg="C, F" Name="AddSubtractionForMorphisms" Label="for IsCapCategory, IsFunction"/>
383
<Returns>nothing
384
</Returns>
385
<Description>
386
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
387
This operations adds the given function <Math>F</Math>
388
to the category for the basic operation <C>SubtractionForMorphisms</C>.
389
<Math>F: (\alpha, \beta) \mapsto \alpha - \beta</Math>.
390
</Description>
391
</ManSection>
392
393
394
<ManSection>
395
<Oper Arg="alpha" Name="AdditiveInverseForMorphisms" Label="for IsCapCategoryMorphism"/>
396
<Returns>a morphism in <Math>\mathrm{Hom}(a,b)</Math>
397
</Returns>
398
<Description>
399
The argument is a morphism <Math>\alpha: a \rightarrow b</Math>.
400
The output is its additive inverse <Math>-\alpha</Math>.
401
</Description>
402
</ManSection>
403
404
405
<ManSection>
406
<Oper Arg="C, F" Name="AddAdditiveInverseForMorphisms" Label="for IsCapCategory, IsFunction"/>
407
<Returns>nothing
408
</Returns>
409
<Description>
410
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
411
This operations adds the given function <Math>F</Math>
412
to the category for the basic operation <C>AdditiveInverseForMorphisms</C>.
413
<Math>F: \alpha \mapsto -\alpha</Math>.
414
</Description>
415
</ManSection>
416
417
418
<ManSection>
419
<Oper Arg="a, b" Name="ZeroMorphism" Label="for IsCapCategoryObject, IsCapCategoryObject"/>
420
<Returns>a morphism in <Math>\mathrm{Hom}(a,b)</Math>
421
</Returns>
422
<Description>
423
The arguments are two objects <Math>a</Math> and <Math>b</Math>.
424
The output is the zero morphism <Math>0: a \rightarrow b</Math>.
425
</Description>
426
</ManSection>
427
428
429
<ManSection>
430
<Oper Arg="C, F" Name="AddZeroMorphism" Label="for IsCapCategory, IsFunction"/>
431
<Returns>nothing
432
</Returns>
433
<Description>
434
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
435
This operations adds the given function <Math>F</Math>
436
to the category for the basic operation <C>ZeroMorphism</C>.
437
<Math>F: (a,b) \mapsto (0: a \rightarrow b)</Math>.
438
</Description>
439
</ManSection>
440
441
442
</Section>
443
444
445
<Section Label="Chapter_Morphisms_Section_Subobject_and_Factorobject_Operations">
446
<Heading>Subobject and Factorobject Operations</Heading>
447
448
Subobjects of an object <Math>c</Math> are monomorphisms
449
with range <Math>c</Math> and a special function for comparision.
450
Similarly, factorobjects of an object <Math>c</Math> are epimorphisms
451
with source <Math>c</Math> and a special function for comparision.
452
<ManSection>
453
<Oper Arg="alpha, beta" Name="IsEqualAsSubobjects" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>
454
<Returns>a boolean
455
</Returns>
456
<Description>
457
The arguments are two subobjects <Math>\alpha: a \rightarrow c</Math>, <Math>\beta: b \rightarrow c</Math>.
458
The output is <C>true</C> if there exists an isomorphism <Math>\iota: a \rightarrow b</Math>
459
such that <Math>\beta \circ \iota \sim_{a,c} \alpha</Math>,
460
otherwise the output is <C>false</C>.
461
</Description>
462
</ManSection>
463
464
465
<ManSection>
466
<Oper Arg="C, F" Name="AddIsEqualAsSubobjects" Label="for IsCapCategory, IsFunction"/>
467
<Returns>nothing
468
</Returns>
469
<Description>
470
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
471
This operations adds the given function <Math>F</Math>
472
to the category for the basic operation <C>IsEqualAsSubobjects</C>.
473
<Math>F: (\alpha, \beta) \mapsto \mathtt{IsEqualAsSubobjects}(\alpha,\beta)</Math>.
474
</Description>
475
</ManSection>
476
477
478
<ManSection>
479
<Oper Arg="alpha, beta" Name="IsEqualAsFactorobjects" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>
480
<Returns>a boolean
481
</Returns>
482
<Description>
483
The arguments are two factorobjects <Math>\alpha: c \rightarrow a</Math>, <Math>\beta: c \rightarrow b</Math>.
484
The output is <C>true</C> if there exists an isomorphism <Math>\iota: b \rightarrow a</Math>
485
such that <Math>\iota \circ \beta \sim_{c,a} \alpha</Math>,
486
otherwise the output is <C>false</C>.
487
</Description>
488
</ManSection>
489
490
491
<ManSection>
492
<Oper Arg="C, F" Name="AddIsEqualAsFactorobjects" Label="for IsCapCategory, IsFunction"/>
493
<Returns>nothing
494
</Returns>
495
<Description>
496
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
497
This operations adds the given function <Math>F</Math>
498
to the category for the basic operation <C>IsEqualAsFactorobjects</C>.
499
<Math>F: (\alpha, \beta) \mapsto \mathtt{IsEqualAsFactorobjects}(\alpha,\beta)</Math>.
500
</Description>
501
</ManSection>
502
503
504
<ManSection>
505
<Oper Arg="alpha, beta" Name="IsDominating" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>
506
<Returns>a boolean
507
</Returns>
508
<Description>
509
In short: Returns <C>true</C> iff <Math>\alpha</Math> is smaller than <Math>\beta</Math>.
510
<Math>\\ </Math>
511
Full description: The arguments are two subobjects <Math>\alpha: a \rightarrow c</Math>, <Math>\beta: b \rightarrow c</Math>.
512
The output is <C>true</C> if there exists a morphism <Math>\iota: a \rightarrow b</Math>
513
such that <Math>\beta \circ \iota \sim_{a,c} \alpha</Math>,
514
otherwise the output is <C>false</C>.
515
</Description>
516
</ManSection>
517
518
519
<ManSection>
520
<Oper Arg="C, F" Name="AddIsDominating" Label="for IsCapCategory, IsFunction"/>
521
<Returns>nothing
522
</Returns>
523
<Description>
524
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
525
This operations adds the given function <Math>F</Math>
526
to the category for the basic operation <C>IsDominating</C>.
527
<Math>F: (\alpha, \beta) \mapsto \mathtt{IsDominating}(\alpha,\beta)</Math>.
528
</Description>
529
</ManSection>
530
531
532
<ManSection>
533
<Oper Arg="alpha, beta" Name="IsCodominating" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>
534
<Returns>a boolean
535
</Returns>
536
<Description>
537
In short: Returns <C>true</C> iff <Math>\alpha</Math> is smaller than <Math>\beta</Math>.
538
<Math>\\ </Math>
539
Full description:
540
The arguments are two factorobjects <Math>\alpha: c \rightarrow a</Math>, <Math>\beta: c \rightarrow b</Math>.
541
The output is <C>true</C> if there exists a morphism <Math>\iota: b \rightarrow a</Math>
542
such that <Math>\iota \circ \beta \sim_{c,a} \alpha</Math>,
543
otherwise the output is <C>false</C>.
544
</Description>
545
</ManSection>
546
547
548
<ManSection>
549
<Oper Arg="C, F" Name="AddIsCodominating" Label="for IsCapCategory, IsFunction"/>
550
<Returns>nothing
551
</Returns>
552
<Description>
553
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
554
This operations adds the given function <Math>F</Math>
555
to the category for the basic operation <C>IsCodominating</C>.
556
<Math>F: (\alpha, \beta) \mapsto \mathtt{IsCodominating}(\alpha,\beta)</Math>.
557
</Description>
558
</ManSection>
559
560
561
</Section>
562
563
564
<Section Label="Chapter_Morphisms_Section_Identity_Morphism_and_Composition_of_Morphisms">
565
<Heading>Identity Morphism and Composition of Morphisms</Heading>
566
567
<ManSection>
568
<Attr Arg="a" Name="IdentityMorphism" Label="for IsCapCategoryObject"/>
569
<Returns>a morphism in <Math>\mathrm{Hom}(a,a)</Math>
570
</Returns>
571
<Description>
572
The argument is an object <Math>a</Math>.
573
The output is its identity morphism <Math>\mathrm{id}_a</Math>.
574
</Description>
575
</ManSection>
576
577
578
<ManSection>
579
<Oper Arg="C, F" Name="AddIdentityMorphism" Label="for IsCapCategory, IsFunction"/>
580
<Returns>nothing
581
</Returns>
582
<Description>
583
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
584
This operations adds the given function <Math>F</Math>
585
to the category for the basic operation <C>IdentityMorphism</C>.
586
<Math>F: a \mapsto \mathrm{id}_a</Math>.
587
</Description>
588
</ManSection>
589
590
591
<ManSection>
592
<Oper Arg="alpha, beta" Name="PreCompose" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>
593
<Returns>a morphism in <Math>\mathrm{Hom}( a, c )</Math>
594
</Returns>
595
<Description>
596
The arguments are two morphisms <Math>\alpha: a \rightarrow b</Math>, <Math>\beta: b \rightarrow c</Math>.
597
The output is the composition <Math>\beta \circ \alpha: a \rightarrow c</Math>.
598
</Description>
599
</ManSection>
600
601
602
<ManSection>
603
<Oper Arg="L" Name="PreCompose" Label="for IsList"/>
604
<Returns>a morphism in <Math>\mathrm{Hom}(a_1, a_{n+1})</Math>
605
</Returns>
606
<Description>
607
This is a convenience method.
608
The argument is a list of morphisms
609
<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>.
610
The output is the composition
611
<Math>\alpha_{n} \circ ( \alpha_{n-1} \circ ( \dots ( \alpha_2 \circ \alpha_1 ) ) )</Math>.
612
</Description>
613
</ManSection>
614
615
616
<ManSection>
617
<Oper Arg="C, F" Name="AddPreCompose" Label="for IsCapCategory, IsFunction"/>
618
<Returns>nothing
619
</Returns>
620
<Description>
621
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
622
This operations adds the given function <Math>F</Math>
623
to the category for the basic operation <C>PreCompose</C>.
624
<Math>F: (\alpha, \beta) \mapsto \beta \circ \alpha</Math>.
625
</Description>
626
</ManSection>
627
628
629
<ManSection>
630
<Oper Arg="beta, alpha" Name="PostCompose" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>
631
<Returns>a morphism in <Math>\mathrm{Hom}( a, c )</Math>
632
</Returns>
633
<Description>
634
The arguments are two morphisms <Math>\beta: b \rightarrow c</Math>, <Math>\alpha: a \rightarrow b</Math>.
635
The output is the composition <Math>\beta \circ \alpha: a \rightarrow c</Math>.
636
</Description>
637
</ManSection>
638
639
640
<ManSection>
641
<Oper Arg="L" Name="PostCompose" Label="for IsList"/>
642
<Returns>a morphism in <Math>\mathrm{Hom}(a_1, a_{n+1})</Math>
643
</Returns>
644
<Description>
645
This is a convenience method.
646
The argument is a list of morphisms
647
<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>.
648
The output is the composition
649
<Math>((\alpha_{n} \circ \alpha_{n-1}) \circ \dots \alpha_2) \circ \alpha_1</Math>.
650
</Description>
651
</ManSection>
652
653
654
<ManSection>
655
<Oper Arg="C, F" Name="AddPostCompose" Label="for IsCapCategory, IsFunction"/>
656
<Returns>nothing
657
</Returns>
658
<Description>
659
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
660
This operations adds the given function <Math>F</Math>
661
to the category for the basic operation <C>PostCompose</C>.
662
<Math>F: (\alpha, \beta) \mapsto \alpha \circ \beta</Math>.
663
</Description>
664
</ManSection>
665
666
667
</Section>
668
669
670
<Section Label="Chapter_Morphisms_Section_Well-Definedness_of_Morphisms">
671
<Heading>Well-Definedness of Morphisms</Heading>
672
673
<ManSection>
674
<Oper Arg="alpha" Name="IsWellDefinedForMorphisms" Label="for IsCapCategoryMorphism"/>
675
<Returns>a boolean
676
</Returns>
677
<Description>
678
The argument is a morphism <Math>\alpha</Math>.
679
The output is <C>true</C> if <Math>\alpha</Math> is well-defined,
680
otherwise the output is <C>false</C>.
681
</Description>
682
</ManSection>
683
684
685
<ManSection>
686
<Oper Arg="C, F" Name="AddIsWellDefinedForMorphisms" Label="for IsCapCategory, IsFunction"/>
687
<Returns>nothing
688
</Returns>
689
<Description>
690
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
691
This operations adds the given function <Math>F</Math>
692
to the category for the basic operation <C>IsWellDefinedForMorphisms</C>.
693
<Math>F: \alpha \mapsto \mathtt{IsWellDefinedForMorphisms}( \alpha )</Math>.
694
</Description>
695
</ManSection>
696
697
698
</Section>
699
700
701
<Section Label="Chapter_Morphisms_Section_Basic_Operations_for_Morphisms_in_Abelian_Categories">
702
<Heading>Basic Operations for Morphisms in Abelian Categories</Heading>
703
704
<ManSection>
705
<Oper Arg="iota, tau" Name="LiftAlongMonomorphism" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>
706
<Returns>a morphism in <Math>\mathrm{Hom}(t,k)</Math>
707
</Returns>
708
<Description>
709
The arguments are a monomorphism <Math>\iota: k \hookrightarrow a</Math>
710
and a morphism <Math>\tau: t \rightarrow a</Math>
711
such that there is a morphism <Math>u: t \rightarrow k</Math> with
712
<Math>\iota \circ u \sim_{t,a} \tau</Math>.
713
The output is such a <Math>u</Math>.
714
</Description>
715
</ManSection>
716
717
718
<ManSection>
719
<Oper Arg="C, F" Name="AddLiftAlongMonomorphism" Label="for IsCapCategory, IsFunction"/>
720
<Returns>nothing
721
</Returns>
722
<Description>
723
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
724
This operations adds the given function <Math>F</Math>
725
to the category for the basic operation <C>LiftAlongMonomorphism</C>.
726
The function <Math>F</Math> maps a pair <Math>(\iota, \tau)</Math> to a lift <Math>u</Math> if it
727
exists, and to <C>fail</C> otherwise.
728
</Description>
729
</ManSection>
730
731
732
<ManSection>
733
<Oper Arg="epsilon, tau" Name="ColiftAlongEpimorphism" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>
734
<Returns>a morphism in <Math>\mathrm{Hom}(c,t)</Math>
735
</Returns>
736
<Description>
737
The arguments are an epimorphism <Math>\epsilon: a \rightarrow c</Math>
738
and a morphism <Math>\tau: a \rightarrow t</Math>
739
such that there is a morphism <Math>u: c \rightarrow t</Math> with
740
<Math>u \circ \epsilon \sim_{a,t} \tau</Math>.
741
The output is such a <Math>u</Math>.
742
</Description>
743
</ManSection>
744
745
746
<ManSection>
747
<Oper Arg="C, F" Name="AddColiftAlongEpimorphism" Label="for IsCapCategory, IsFunction"/>
748
<Returns>nothing
749
</Returns>
750
<Description>
751
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
752
This operations adds the given function <Math>F</Math>
753
to the category for the basic operation <C>ColiftAlongEpimorphism</C>.
754
The function <Math>F</Math> maps a pair <Math>(\epsilon, \tau)</Math> to a lift <Math>u</Math> if it
755
exists, and to <C>fail</C> otherwise.
756
</Description>
757
</ManSection>
758
759
760
</Section>
761
762
763
<Section Label="Chapter_Morphisms_Section_Lift_Colift">
764
<Heading>Lift/ Colift</Heading>
765
766
<List>
767
<Item>
768
For any pair of morphisms <Math>\alpha: a \rightarrow c</Math>, <Math>\beta: b \rightarrow c</Math>,
769
we call each morphism <Math>\alpha / \beta: a \rightarrow b</Math> such that
770
<Math>\beta \circ (\alpha / \beta) \sim_{a,c} \alpha</Math> a <Emph>lift of <Math>\alpha</Math> along <Math>\beta</Math></Emph>.
771
</Item>
772
<Item>
773
For any pair of morphisms <Math>\alpha: a \rightarrow c</Math>, <Math>\beta: a \rightarrow b</Math>,
774
we call each morphism <Math>\alpha \backslash \beta: c \rightarrow b</Math> such that
775
<Math>(\alpha \backslash \beta) \circ \alpha \sim_{a,b} \beta</Math> a <Emph> colift of <Math>\beta</Math> along <Math>\alpha</Math></Emph>.
776
</Item>
777
</List>
778
Note that such lifts (or colifts) do not have to be unique. So in general,
779
we do not expect that algorithms computing lifts (or colifts) do this in a functorial way.
780
Thus the operations <Math>\mathtt{Lift}</Math> and <Math>\mathtt{Colift}</Math> are not regarded as
781
categorical operations, but only as set-theoretic operations.
782
<ManSection>
783
<Oper Arg="alpha, beta" Name="Lift" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>
784
<Returns>a morphism in <Math>\mathrm{Hom}(a,b) + \{ \mathtt{fail} \}</Math>
785
</Returns>
786
<Description>
787
The arguments are two morphisms <Math>\alpha: a \rightarrow c</Math>, <Math>\beta: b \rightarrow c</Math>
788
such that there is a lift <Math>\alpha / \beta: a \rightarrow b</Math> of <Math>\alpha</Math> along <Math>\beta</Math>, i.e.,
789
a morphism such that <Math>\beta \circ (\alpha / \beta) \sim_{a,c} \alpha</Math>.
790
The output is such a lift or <Math>\mathtt{fail}</Math> if it doesn't exist.
791
</Description>
792
</ManSection>
793
794
795
<ManSection>
796
<Oper Arg="C, F" Name="AddLift" Label="for IsCapCategory, IsFunction"/>
797
<Returns>nothing
798
</Returns>
799
<Description>
800
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
801
This operations adds the given function <Math>F</Math>
802
to the category for the basic operation <C>Lift</C>.
803
The function <Math>F</Math> maps a pair <Math>(\alpha, \beta)</Math> to a lift <Math>\alpha / \beta</Math> if it
804
exists, and to <C>fail</C> otherwise.
805
</Description>
806
</ManSection>
807
808
809
<ManSection>
810
<Oper Arg="alpha, beta" Name="Colift" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>
811
<Returns>a morphism in <Math>\mathrm{Hom}(c,b) + \{ \mathtt{fail} \}</Math>
812
</Returns>
813
<Description>
814
The arguments are two morphisms <Math>\alpha: a \rightarrow c</Math>, <Math>\beta: a \rightarrow b</Math>
815
such that there is a colift <Math>\alpha \backslash \beta: c \rightarrow b</Math> of <Math>\beta</Math> along <Math>\alpha</Math>., i.e.,
816
a morphism such that <Math>(\alpha \backslash \beta) \circ \alpha \sim_{a,b} \beta</Math>.
817
The output is such a colift or <Math>\mathtt{fail}</Math> if it doesn't exist.
818
</Description>
819
</ManSection>
820
821
822
<ManSection>
823
<Oper Arg="C, F" Name="AddColift" Label="for IsCapCategory, IsFunction"/>
824
<Returns>nothing
825
</Returns>
826
<Description>
827
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
828
This operations adds the given function <Math>F</Math>
829
to the category for the basic operation <C>Colift</C>.
830
The function <Math>F</Math> maps a pair <Math>(\alpha, \beta)</Math> to a colift <Math>\alpha \backslash \beta</Math> if it
831
exists, and to <C>fail</C> otherwise.
832
</Description>
833
</ManSection>
834
835
836
</Section>
837
838
839
<Section Label="Chapter_Morphisms_Section_Inverses">
840
<Heading>Inverses</Heading>
841
842
Let <Math>\alpha: a \rightarrow b</Math> be a morphism. An inverse of <Math>\alpha</Math>
843
is a morphism <Math>\alpha^{-1}: b \rightarrow a</Math> such that
844
<Math>\alpha \circ \alpha^{-1} \sim_{b,b} \mathrm{id}_b</Math>
845
and <Math>\alpha^{-1} \circ \alpha \sim_{a,a} \mathrm{id}_a</Math>.
846
<ManSection>
847
<Oper Arg="C, F" Name="AddInverse" Label="for IsCapCategory, IsFunction"/>
848
<Returns>nothing
849
</Returns>
850
<Description>
851
The arguments are a category <Math>C</Math> and a function <Math>F</Math>.
852
This operations adds the given function <Math>F</Math>
853
to the category for the basic operation <C>Inverse</C>.
854
<Math>F: \alpha \mapsto \alpha^{-1}</Math>.
855
</Description>
856
</ManSection>
857
858
859
</Section>
860
861
862
<Section Label="Chapter_Morphisms_Section_Tool_functions_for_caches">
863
<Heading>Tool functions for caches</Heading>
864
865
<ManSection>
866
<Oper Arg="phi, psi" Name="IsEqualForCacheForMorphisms" Label="for IsCapCategoryMorphism, IsCapCategoryMorphism"/>
867
<Returns>true or false
868
</Returns>
869
<Description>
870
Compares two objects in the cache
871
</Description>
872
</ManSection>
873
874
875
<ManSection>
876
<Oper Arg="c,F" Name="AddIsEqualForCacheForMorphisms" Label="for IsCapCategory, IsFunction"/>
877
<Returns>northing
878
</Returns>
879
<Description>
880
By default, CAP uses caches to store the values of Categorical operations.
881
To get a value out of the cache, one needs to compare the input of a basic operation
882
with its previous input. To compare morphisms in the category, IsEqualForCacheForMorphism is
883
used. By default this is an alias for IsEqualForMorphismsOnMor, where fail is substituted by false.
884
If you add a function, this function
885
used instead. A function <Math>F: a,b \mapsto bool</Math> is expected here. The output has to be
886
true or false. Fail is not allowed in this context.
887
</Description>
888
</ManSection>
889
890
891
</Section>
892
893
894
895
<P/>
896
</Chapter>
897
898
899