Description
The module
M should be a direct sum, and the result is the map obtained by projection onto the sum of the components numbered or named
i, j, ..., k. Free modules are regarded as direct sums of modules.
i1 : M = ZZ^2 ++ ZZ^3
5
o1 = ZZ
o1 : ZZ-module, free
|
i2 : M^[0]
o2 = | 1 0 0 0 0 |
| 0 1 0 0 0 |
2 5
o2 : Matrix ZZ <-- ZZ
|
i3 : M^[1]
o3 = | 0 0 1 0 0 |
| 0 0 0 1 0 |
| 0 0 0 0 1 |
3 5
o3 : Matrix ZZ <-- ZZ
|
i4 : M^[1,0]
o4 = | 0 0 1 0 0 |
| 0 0 0 1 0 |
| 0 0 0 0 1 |
| 1 0 0 0 0 |
| 0 1 0 0 0 |
5 5
o4 : Matrix ZZ <-- ZZ
|
If the components have been given names (see
directSum), use those instead.
i5 : R = QQ[a..d];
|
i6 : M = (a => image vars R) ++ (b => coker vars R)
o6 = subquotient (| a b c d 0 |, | 0 0 0 0 |)
| 0 0 0 0 1 | | a b c d |
2
o6 : R-module, subquotient of R
|
i7 : M^[a]
o7 = {1} | 1 0 0 0 0 |
{1} | 0 1 0 0 0 |
{1} | 0 0 1 0 0 |
{1} | 0 0 0 1 0 |
o7 : Matrix
|
i8 : isWellDefined oo
o8 = true
|
i9 : M^[b]
o9 = | 0 0 0 0 1 |
o9 : Matrix
|
i10 : isWellDefined oo
o10 = true
|
i11 : isWellDefined(M^{2})
o11 = false
|
This works the same way for chain complexes.
i12 : C = res coker vars R
1 4 6 4 1
o12 = R <-- R <-- R <-- R <-- R <-- 0
0 1 2 3 4 5
o12 : ChainComplex
|
i13 : D = (a=>C) ++ (b=>C)
2 8 12 8 2
o13 = R <-- R <-- R <-- R <-- R <-- 0
0 1 2 3 4 5
o13 : ChainComplex
|
i14 : D^[a]
1 2
o14 = 0 : R <----------- R : 0
| 1 0 |
4 8
1 : R <--------------------------- R : 1
{1} | 1 0 0 0 0 0 0 0 |
{1} | 0 1 0 0 0 0 0 0 |
{1} | 0 0 1 0 0 0 0 0 |
{1} | 0 0 0 1 0 0 0 0 |
6 12
2 : R <----------------------------------- R : 2
{2} | 1 0 0 0 0 0 0 0 0 0 0 0 |
{2} | 0 1 0 0 0 0 0 0 0 0 0 0 |
{2} | 0 0 1 0 0 0 0 0 0 0 0 0 |
{2} | 0 0 0 1 0 0 0 0 0 0 0 0 |
{2} | 0 0 0 0 1 0 0 0 0 0 0 0 |
{2} | 0 0 0 0 0 1 0 0 0 0 0 0 |
4 8
3 : R <--------------------------- R : 3
{3} | 1 0 0 0 0 0 0 0 |
{3} | 0 1 0 0 0 0 0 0 |
{3} | 0 0 1 0 0 0 0 0 |
{3} | 0 0 0 1 0 0 0 0 |
1 2
4 : R <--------------- R : 4
{4} | 1 0 |
5 : 0 <----- 0 : 5
0
o14 : ChainComplexMap
|