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
2
7 Modules
3
4
A homalg module is a data structure for a finitely presented module. A
5
presentation is given by a set of generators and a set of relations among
6
these generators. The data structure for modules in homalg has two novel
7
features:
8
9
 The data structure allows several presentations linked with so-called
10
transition matrices. One of the presentations is marked as the default
11
presentation, which is usually the last added one. A new presentation
12
can always be added provided it is linked to the default presentation
13
by a transition matrix. If needed, the user can reset the default
14
presentation by choosing one of the other presentations saved in the
15
data structure of the homalg module. Effectively, a module is then
16
given by all its presentations (as coordinates) together with
17
isomorphisms between them (as coordinate changes). Being able to
18
change coordinates makes the realization of a module in homalg
19
intrinsic (or coordinate free).
20
21
 To present a left/right module it suffices to take a matrix M and
22
interpret its rows/columns as relations among n abstract generators,
23
where n is the number of columns/rows of M. Only that these abstract
24
generators are useless when it comes to specific modules like modules
25
of homomorphisms, where one expects the generators to be maps between
26
modules. For this reason a presentation of a module in homalg is not
27
merely a matrix of relations, but together with a set of generators.
28
29
30
7.1 Modules: Category and Representations
31
32
7.1-1 IsHomalgModule
33
34
IsHomalgModule( M )  Category
35
Returns: true or false
36
37
The GAP category of homalg modules.
38
39
(It is a subcategory of the GAP categories IsHomalgRingOrModule and
40
IsHomalgStaticObject.)
41
42
 Code 
43
DeclareCategory( "IsHomalgModule",
44
 IsHomalgRingOrModule and
45
 IsHomalgModuleOrMap and
46
 IsHomalgStaticObject );
47

48
49
7.1-2 IsFinitelyPresentedModuleOrSubmoduleRep
50
51
IsFinitelyPresentedModuleOrSubmoduleRep( M )  Representation
52
Returns: true or false
53
54
The GAP representation of finitley presented homalg modules or submodules.
55
56
(It is a representation of the GAP category IsHomalgModule (7.1-1), which is
57
a subrepresentation of the GAP representations
58
IsStaticFinitelyPresentedObjectOrSubobjectRep.)
59
60
 Code 
61
DeclareRepresentation( "IsFinitelyPresentedModuleOrSubmoduleRep",
62
 IsHomalgModule and
63
 IsStaticFinitelyPresentedObjectOrSubobjectRep,
64
 [ ] );
65

66
67
7.1-3 IsFinitelyPresentedModuleRep
68
69
IsFinitelyPresentedModuleRep( M )  Representation
70
Returns: true or false
71
72
The GAP representation of finitley presented homalg modules.
73
74
(It is a representation of the GAP category IsHomalgModule (7.1-1), which is
75
a subrepresentation of the GAP representations
76
IsFinitelyPresentedModuleOrSubmoduleRep, IsStaticFinitelyPresentedObjectRep,
77
and IsHomalgRingOrFinitelyPresentedModuleRep.)
78
79
 Code 
80
DeclareRepresentation( "IsFinitelyPresentedModuleRep",
81
 IsFinitelyPresentedModuleOrSubmoduleRep and
82
 IsStaticFinitelyPresentedObjectRep and
83
 IsHomalgRingOrFinitelyPresentedModuleRep,
84
 [ "SetsOfGenerators", "SetsOfRelations",
85
 "PresentationMorphisms",
86
 "Resolutions",
87
 "TransitionMatrices",
88
 "PositionOfTheDefaultPresentation" ] );
89

90
91
7.1-4 IsFinitelyPresentedSubmoduleRep
92
93
IsFinitelyPresentedSubmoduleRep( M )  Representation
94
Returns: true or false
95
96
The GAP representation of finitley generated homalg submodules.
97
98
(It is a representation of the GAP category IsHomalgModule (7.1-1), which is
99
a subrepresentation of the GAP representations
100
IsFinitelyPresentedModuleOrSubmoduleRep,
101
IsStaticFinitelyPresentedSubobjectRep, and
102
IsHomalgRingOrFinitelyPresentedModuleRep.)
103
104
 Code 
105
DeclareRepresentation( "IsFinitelyPresentedSubmoduleRep",
106
 IsFinitelyPresentedModuleOrSubmoduleRep and
107
 IsStaticFinitelyPresentedSubobjectRep and
108
 IsHomalgRingOrFinitelyPresentedModuleRep,
109
 [ "map_having_subobject_as_its_image" ] );
110

111
112
113
7.2 Modules: Constructors
114
115
7.2-1 LeftPresentation
116
117
LeftPresentation( mat )  operation
118
Returns: a homalg module
119
120
This constructor returns the finitely presented left module with relations
121
given by the rows of the homalg matrix mat.
122
123
 Example 
124
gap> ZZ := HomalgRingOfIntegers( );;
125
gap> M := HomalgMatrix( "[ \
126
> 2, 3, 4, \
127
> 5, 6, 7 \
128
> ]", 2, 3, ZZ );
129
<A 2 x 3 matrix over an internal ring>
130
gap> M := LeftPresentation( M );
131
<A non-torsion left module presented by 2 relations for 3 generators>
132
gap> Display( M );
133
[ [ 2, 3, 4 ],
134
 [ 5, 6, 7 ] ]
135

136
Cokernel of the map
137

138
Z^(1x2) --> Z^(1x3),
139

140
currently represented by the above matrix
141
gap> ByASmallerPresentation( M );
142
<A rank 1 left module presented by 1 relation for 2 generators>
143
gap> Display( last );
144
Z/< 3 > + Z^(1 x 1)
145

146
147
7.2-2 RightPresentation
148
149
RightPresentation( mat )  operation
150
Returns: a homalg module
151
152
This constructor returns the finitely presented right module with relations
153
given by the columns of the homalg matrix mat.
154
155
 Example 
156
gap> ZZ := HomalgRingOfIntegers( );;
157
gap> M := HomalgMatrix( "[ \
158
> 2, 3, 4, \
159
> 5, 6, 7 \
160
> ]", 2, 3, ZZ );
161
<A 2 x 3 matrix over an internal ring>
162
gap> M := RightPresentation( M );
163
<A right module on 2 generators satisfying 3 relations>
164
gap> ByASmallerPresentation( M );
165
<A cyclic torsion right module on a cyclic generator satisfying 1 relation>
166
gap> Display( last );
167
Z/< 3 >
168

169
170
7.2-3 HomalgFreeLeftModule
171
172
HomalgFreeLeftModule( r, R )  operation
173
Returns: a homalg module
174
175
This constructor returns a free left module of rank r over the homalg ring
176
R.
177
178
 Example 
179
gap> ZZ := HomalgRingOfIntegers( );;
180
gap> F := HomalgFreeLeftModule( 1, ZZ );
181
<A free left module of rank 1 on a free generator>
182
gap> 1 * ZZ;
183
<The free left module of rank 1 on a free generator>
184
gap> F := HomalgFreeLeftModule( 2, ZZ );
185
<A free left module of rank 2 on free generators>
186
gap> 2 * ZZ;
187
<A free left module of rank 2 on free generators>
188

189
190
7.2-4 HomalgFreeRightModule
191
192
HomalgFreeRightModule( r, R )  operation
193
Returns: a homalg module
194
195
This constructor returns a free right module of rank r over the homalg ring
196
R.
197
198
 Example 
199
gap> ZZ := HomalgRingOfIntegers( );;
200
gap> F := HomalgFreeRightModule( 1, ZZ );
201
<A free right module of rank 1 on a free generator>
202
gap> ZZ * 1;
203
<The free right module of rank 1 on a free generator>
204
gap> F := HomalgFreeRightModule( 2, ZZ );
205
<A free right module of rank 2 on free generators>
206
gap> ZZ * 2;
207
<A free right module of rank 2 on free generators>
208

209
210
7.2-5 HomalgZeroLeftModule
211
212
HomalgZeroLeftModule( r, R )  operation
213
Returns: a homalg module
214
215
This constructor returns a zero left module of rank r over the homalg ring
216
R.
217
218
 Example 
219
gap> ZZ := HomalgRingOfIntegers( );;
220
gap> F := HomalgZeroLeftModule( ZZ );
221
<A zero left module>
222
gap> 0 * ZZ;
223
<The zero left module>
224

225
226
7.2-6 HomalgZeroRightModule
227
228
HomalgZeroRightModule( r, R )  operation
229
Returns: a homalg module
230
231
This constructor returns a zero right module of rank r over the homalg ring
232
R.
233
234
 Example 
235
gap> ZZ := HomalgRingOfIntegers( );;
236
gap> F := HomalgZeroRightModule( ZZ );
237
<A zero right module>
238
gap> ZZ * 0;
239
<The zero right module>
240

241
242
7.2-7 \*
243
244
\*( R, M )  operation
245
\*( M, R )  operation
246
Returns: a homalg module
247
248
Transfers the S-module M over the homalg ring R. This works only in three
249
cases:
250
251
1 S is a subring of R.
252
253
2 R is a residue class ring of S constructed using /.
254
255
3 R is a subring of S and the entries of the current matrix of
256
S-relations of M lie in R.
257
258
CAUTION: So it is not suited for general base change.
259
260
 Example 
261
gap> ZZ := HomalgRingOfIntegers( );
262
Z
263
gap> Display( ZZ );
264
<An internal ring>
265
gap> Z4 := ZZ / 4;
266
Z/( 4 )
267
gap> Display( Z4 );
268
<A residue class ring>
269
gap> M := HomalgDiagonalMatrix( [ 2 .. 4 ], ZZ );
270
<An unevaluated diagonal 3 x 3 matrix over an internal ring>
271
gap> M := LeftPresentation( M );
272
<A torsion left module presented by 3 relations for 3 generators>
273
gap> Display( M );
274
Z/< 2 > + Z/< 3 > + Z/< 4 >
275
gap> M;
276
<A torsion left module presented by 3 relations for 3 generators>
277
gap> N := Z4 * M; ## or N := M * Z4;
278
<A non-torsion left module presented by 2 relations for 3 generators>
279
gap> ByASmallerPresentation( N );
280
<A non-torsion left module presented by 1 relation for 2 generators>
281
gap> Display( N );
282
Z/( 4 )/< |[ 2 ]| > + Z/( 4 )^(1 x 1)
283
gap> N;
284
<A non-torsion left module presented by 1 relation for 2 generators>
285

286
287
 Example 
288
gap> ZZ := HomalgRingOfIntegers( );
289
Z
290
gap> M := HomalgMatrix( "[ \
291
> 2, 3, 4, \
292
> 5, 6, 7 \
293
> ]", 2, 3, ZZ );
294
<A 2 x 3 matrix over an internal ring>
295
gap> M := LeftPresentation( M );
296
<A non-torsion left module presented by 2 relations for 3 generators>
297
gap> Z4 := ZZ / 4;
298
Z/( 4 )
299
gap> Display( Z4 );
300
<A residue class ring>
301
gap> M4 := Z4 * M;
302
<A non-torsion left module presented by 2 relations for 3 generators>
303
gap> Display( M4 );
304
[ [ 2, 3, 4 ],
305
 [ 5, 6, 7 ] ]
306

307
modulo [ 4 ]
308

309
Cokernel of the map
310

311
Z/( 4 )^(1x2) --> Z/( 4 )^(1x3),
312

313
currently represented by the above matrix
314
gap> d := Resolution( 2, M4 );
315
<A right acyclic complex containing 2 morphisms of left modules at degrees 
316
[ 0 .. 2 ]>
317
gap> dd := Hom( d, Z4 );
318
<A cocomplex containing 2 morphisms of right modules at degrees [ 0 .. 2 ]>
319
gap> DD := Resolution( 2, dd );
320
<A cocomplex containing 2 morphisms of right complexes at degrees [ 0 .. 2 ]>
321
gap> D := Hom( DD, Z4 );
322
<A complex containing 2 morphisms of left cocomplexes at degrees [ 0 .. 2 ]>
323
gap> C := ZZ * D;
324
<A "complex" containing 2 morphisms of left cocomplexes at degrees [ 0 .. 2 ]>
325
gap> LowestDegreeObject( C );
326
<A "cocomplex" containing 2 morphisms of left modules at degrees [ 0 .. 2 ]>
327
gap> Display( last );
328
-------------------------
329
at cohomology degree: 2
330
0
331
------------^------------
332
(an empty 1 x 0 matrix)
333

334
the map is currently represented by the above 1 x 0 matrix
335
-------------------------
336
at cohomology degree: 1
337
Z/< 4 > 
338
------------^------------
339
[ [ 0 ],
340
 [ 1 ],
341
 [ 2 ],
342
 [ 1 ] ]
343

344
the map is currently represented by the above 4 x 1 matrix
345
-------------------------
346
at cohomology degree: 0
347
Z/< 4 > + Z/< 4 > + Z/< 4 > + Z/< 4 > 
348
-------------------------
349

350
351
7.2-8 Subobject
352
353
Subobject( mat, M )  operation
354
Returns: a homalg submodule
355
356
This constructor returns the finitely generated left/right submodule of the
357
homalg module M with generators given by the rows/columns of the homalg
358
matrix mat.
359
360
7.2-9 Subobject
361
362
Subobject( gens, M )  operation
363
Returns: a homalg submodule
364
365
This constructor returns the finitely generated left/right submodule of the
366
homalg cyclic left/right module M with generators given by the entries of
367
the list gens.
368
369
7.2-10 LeftSubmodule
370
371
LeftSubmodule( mat )  operation
372
Returns: a homalg submodule
373
374
This constructor returns the finitely generated left submodule with
375
generators given by the rows of the homalg matrix mat.
376
377
 Code 
378
InstallMethod( LeftSubmodule,
379
 "constructor for homalg submodules",
380
 [ IsHomalgMatrix ],
381
 
382
 function( gen )
383
 local R;
384
 
385
 R := HomalgRing( gen );
386
 
387
 return Subobject( gen, NrColumns( gen ) * R );
388
 
389
end );
390

391
392
 Example 
393
gap> Z4 := HomalgRingOfIntegers( ) / 4;
394
Z/( 4 )
395
gap> I := HomalgMatrix( "[ 2 ]", 1, 1, Z4 );
396
<A 1 x 1 matrix over a residue class ring>
397
gap> I := LeftSubmodule( I );
398
<A principal torsion-free (left) ideal given by a cyclic generator>
399
gap> IsFree( I );
400
false
401
gap> I;
402
<A principal reflexive non-projective (left) ideal given by a cyclic generator\
403
>
404

405
406
7.2-11 RightSubmodule
407
408
RightSubmodule( mat )  operation
409
Returns: a homalg submodule
410
411
This constructor returns the finitely generated right submodule with
412
generators given by the columns of the homalg matrix mat.
413
414
 Code 
415
InstallMethod( RightSubmodule,
416
 "constructor for homalg submodules",
417
 [ IsHomalgMatrix ],
418
 
419
 function( gen )
420
 local R;
421
 
422
 R := HomalgRing( gen );
423
 
424
 return Subobject( gen, R * NrRows( gen ) );
425
 
426
end );
427

428
429
 Example 
430
gap> Z4 := HomalgRingOfIntegers( ) / 4;
431
Z/( 4 )
432
gap> I := HomalgMatrix( "[ 2 ]", 1, 1, Z4 );
433
<A 1 x 1 matrix over a residue class ring>
434
gap> I := RightSubmodule( I );
435
<A principal torsion-free (right) ideal given by a cyclic generator>
436
gap> IsFree( I );
437
false
438
gap> I;
439
<A principal reflexive non-projective (right) ideal given by a cyclic generato\
440
r>
441

442
443
444
7.3 Modules: Properties
445
446
7.3-1 IsCyclic
447
448
IsCyclic( M )  property
449
Returns: true or false
450
451
Check if the homalg module M is cyclic.
452
453
7.3-2 IsHolonomic
454
455
IsHolonomic( M )  property
456
Returns: true or false
457
458
Check if the homalg module M is holonomic.
459
460
7.3-3 IsReduced
461
462
IsReduced( M )  property
463
Returns: true or false
464
465
Check if the homalg module M is reduced.
466
467
7.3-4 IsPrimeIdeal
468
469
IsPrimeIdeal( J )  property
470
Returns: true or false
471
472
Check if the homalg submodule J is a prime ideal. The ring has to be
473
commutative.
474
(no method installed)
475
476
7.3-5 IsPrimeModule
477
478
IsPrimeModule( M )  property
479
Returns: true or false
480
481
Check if the homalg module M is prime.
482
483
For more properties see the corresponding section 'homalg: Objects:
484
Properties') in the documentation of the homalg package.
485
486
487
7.4 Modules: Attributes
488
489
7.4-1 ResidueClassRing
490
491
ResidueClassRing( J )  attribute
492
Returns: a homalg ring
493
494
In case J was defined as a (left/right) ideal of the ring R the residue
495
class ring R/J is returned.
496
497
7.4-2 PrimaryDecomposition
498
499
PrimaryDecomposition( J )  attribute
500
Returns: a list
501
502
The primary decomposition of the ideal J. The ring has to be commutative.
503
(no method installed)
504
505
7.4-3 RadicalDecomposition
506
507
RadicalDecomposition( J )  attribute
508
Returns: a list
509
510
The prime decomposition of the radical of the ideal J. The ring has to be
511
commutative.
512
(no method installed)
513
514
7.4-4 ModuleOfKaehlerDifferentials
515
516
ModuleOfKaehlerDifferentials( R )  attribute
517
Returns: a homalg module
518
519
The module of Kaehler differentials of the (residue class ring) R.
520
(method installed in package GradedModules)
521
522
7.4-5 RadicalSubobject
523
524
RadicalSubobject( M )  property
525
Returns: a function
526
527
M is a homalg module.
528
529
7.4-6 SymmetricAlgebra
530
531
SymmetricAlgebra( M )  attribute
532
Returns: a homalg ring
533
534
The symmetric algebra of the module M.
535
536
7.4-7 ExteriorAlgebra
537
538
ExteriorAlgebra( M )  attribute
539
Returns: a homalg ring
540
541
The exterior algebra of the module M.
542
543
7.4-8 ElementaryDivisors
544
545
ElementaryDivisors( M )  attribute
546
Returns: a list of ring elements
547
548
The list of elementary divisors of the homalg module M, in case they exist.
549
(no method installed)
550
551
7.4-9 FittingIdeal
552
553
FittingIdeal( M )  attribute
554
Returns: a list
555
556
The Fitting ideal of M.
557
558
7.4-10 NonFlatLocus
559
560
NonFlatLocus( M )  attribute
561
Returns: a list
562
563
The non flat locus of M.
564
565
7.4-11 LargestMinimalNumberOfLocalGenerators
566
567
LargestMinimalNumberOfLocalGenerators( M )  attribute
568
Returns: a nonnegative integer
569
570
The minimal number of local generators of the module M.
571
572
7.4-12 CoefficientsOfUnreducedNumeratorOfHilbertPoincareSeries
573
574
CoefficientsOfUnreducedNumeratorOfHilbertPoincareSeries( M )  attribute
575
Returns: a list of integers
576
577
M is a homalg module.
578
579
7.4-13 CoefficientsOfNumeratorOfHilbertPoincareSeries
580
581
CoefficientsOfNumeratorOfHilbertPoincareSeries( M )  attribute
582
Returns: a list of integers
583
584
M is a homalg module.
585
586
7.4-14 UnreducedNumeratorOfHilbertPoincareSeries
587
588
UnreducedNumeratorOfHilbertPoincareSeries( M )  attribute
589
Returns: a univariate polynomial with rational coefficients
590
591
M is a homalg module.
592
593
7.4-15 NumeratorOfHilbertPoincareSeries
594
595
NumeratorOfHilbertPoincareSeries( M )  attribute
596
Returns: a univariate polynomial with rational coefficients
597
598
M is a homalg module.
599
600
7.4-16 HilbertPoincareSeries
601
602
HilbertPoincareSeries( M )  attribute
603
Returns: a univariate rational function with rational coefficients
604
605
M is a homalg module.
606
607
7.4-17 AffineDegree
608
609
AffineDegree( M )  attribute
610
Returns: a nonnegative integer
611
612
M is a homalg module.
613
614
7.4-18 DataOfHilbertFunction
615
616
DataOfHilbertFunction( M )  property
617
Returns: a function
618
619
M is a homalg module.
620
621
7.4-19 HilbertFunction
622
623
HilbertFunction( M )  property
624
Returns: a function
625
626
M is a homalg module.
627
628
7.4-20 IndexOfRegularity
629
630
IndexOfRegularity( M )  property
631
Returns: a function
632
633
M is a homalg module.
634
635
For more attributes see the corresponding section 'homalg: Objects:
636
Attributes') in the documentation of the homalg package.
637
638
639
7.5 Modules: Operations and Functions
640
641
7.5-1 HomalgRing
642
643
HomalgRing( M )  operation
644
Returns: a homalg ring
645
646
The homalg ring of the homalg module M.
647
648
 Example 
649
gap> ZZ := HomalgRingOfIntegers( );
650
Z
651
gap> M := ZZ * 4;
652
<A free right module of rank 4 on free generators>
653
gap> R := HomalgRing( M );
654
Z
655
gap> IsIdenticalObj( R, ZZ );
656
true
657

658
659
7.5-2 ByASmallerPresentation
660
661
ByASmallerPresentation( M )  method
662
Returns: a homalg module
663
664
Use different strategies to reduce the presentation of the given homalg
665
module M. This method performs side effects on its argument M and returns
666
it.
667
668
 Example 
669
gap> ZZ := HomalgRingOfIntegers( );;
670
gap> M := HomalgMatrix( "[ \
671
> 2, 3, 4, \
672
> 5, 6, 7 \
673
> ]", 2, 3, ZZ );
674
<A 2 x 3 matrix over an internal ring>
675
gap> M := LeftPresentation( M );
676
<A non-torsion left module presented by 2 relations for 3 generators>
677
gap> Display( M );
678
[ [ 2, 3, 4 ],
679
 [ 5, 6, 7 ] ]
680

681
Cokernel of the map
682

683
Z^(1x2) --> Z^(1x3),
684

685
currently represented by the above matrix
686
gap> ByASmallerPresentation( M );
687
<A rank 1 left module presented by 1 relation for 2 generators>
688
gap> Display( last );
689
Z/< 3 > + Z^(1 x 1)
690
gap> SetsOfGenerators( M );
691
<A set containing 2 sets of generators of a homalg module>
692
gap> SetsOfRelations( M );
693
<A set containing 2 sets of relations of a homalg module>
694
gap> M;
695
<A rank 1 left module presented by 1 relation for 2 generators>
696
gap> SetPositionOfTheDefaultPresentation( M, 1 );
697
gap> M;
698
<A rank 1 left module presented by 2 relations for 3 generators>
699

700
701
7.5-3 \*
702
703
\*( J, M )  operation
704
Returns: a homalg submodule
705
706
Compute the submodule JM (resp. MJ) of the given left (resp. right) R-module
707
M, where J is a left (resp. right) ideal in R.
708
709
7.5-4 SubobjectQuotient
710
711
SubobjectQuotient( K, J )  operation
712
Returns: a homalg ideal
713
714
Compute the submodule quotient ideal K:J of the submodules K and J of a
715
common R-module M.
716
717
718