Complex _ Array -- the canonical inclusion or projection map of a direct sum

Synopsis

• Operator: _
• Usage:
i = C_[name]
p = C^[name]
• Inputs:
• Outputs:
• , i is the canonical inclusion and p is the canonical projection

Description

The direct sum is an n-ary operator with projection and inclusion maps from each component satisfying appropriate identities.

One can access these maps as follows.

 i1 : S = ZZ/101[a,b,c]; i2 : C1 = freeResolution coker vars S 1 3 3 1 o2 = S <-- S <-- S <-- S 0 1 2 3 o2 : Complex i3 : C2 = complex (ideal(a,b,c)) o3 = image | a b c | 0 o3 : Complex i4 : D = C1 ++ C2 3 3 1 o4 = image | 1 0 0 0 | <-- S <-- S <-- S | 0 a b c | 1 2 3 0 o4 : Complex i5 : D_[0] 1 o5 = 0 : image | 1 0 0 0 | <------------- S : 0 | 0 a b c | {0} | 1 | {1} | 0 | {1} | 0 | {1} | 0 | 3 3 1 : S <----------------- S : 1 {1} | 1 0 0 | {1} | 0 1 0 | {1} | 0 0 1 | 3 3 2 : S <----------------- S : 2 {2} | 1 0 0 | {2} | 0 1 0 | {2} | 0 0 1 | 1 1 3 : S <------------- S : 3 {3} | 1 | o5 : ComplexMap i6 : D_[1] o6 = 0 : image | 1 0 0 0 | <----------------- image | a b c | : 0 | 0 a b c | {0} | 0 0 0 | {1} | 1 0 0 | {1} | 0 1 0 | {1} | 0 0 1 | o6 : ComplexMap i7 : D^[0] * D_[0] == 1 o7 = true i8 : D^[1] * D_[1] == 1 o8 = true i9 : D^[0] * D_[1] == 0 o9 = true i10 : D^[1] * D_[0] == 0 o10 = true i11 : D_[0] * D^[0] + D_[1] * D^[1] == 1 o11 = true

The default names for the components are the non-negative integers. However, one can choose any name.

 i12 : E = (mike => C1) ++ (greg => C2) 3 3 1 o12 = image | 1 0 0 0 | <-- S <-- S <-- S | 0 a b c | 1 2 3 0 o12 : Complex i13 : E_[mike] 1 o13 = 0 : image | 1 0 0 0 | <------------- S : 0 | 0 a b c | {0} | 1 | {1} | 0 | {1} | 0 | {1} | 0 | 3 3 1 : S <----------------- S : 1 {1} | 1 0 0 | {1} | 0 1 0 | {1} | 0 0 1 | 3 3 2 : S <----------------- S : 2 {2} | 1 0 0 | {2} | 0 1 0 | {2} | 0 0 1 | 1 1 3 : S <------------- S : 3 {3} | 1 | o13 : ComplexMap i14 : E_[greg] o14 = 0 : image | 1 0 0 0 | <----------------- image | a b c | : 0 | 0 a b c | {0} | 0 0 0 | {1} | 1 0 0 | {1} | 0 1 0 | {1} | 0 0 1 | o14 : ComplexMap i15 : E^[mike] * E_[mike] == 1 o15 = true i16 : E^[greg] * E_[greg] == 1 o16 = true i17 : E^[mike] * E_[greg] == 0 o17 = true i18 : E^[greg] * E_[mike] == 0 o18 = true i19 : E_[mike] * E^[mike] + E_[greg] * E^[greg] == 1 o19 = true

One can also access inclusion and projection maps of sub-direct sums.

 i20 : F = directSum(C1, C2, (complex S^13)[-4]) 3 3 1 13 o20 = image | 1 0 0 0 | <-- S <-- S <-- S <-- S | 0 a b c | 1 2 3 4 0 o20 : Complex i21 : F^[0,1] o21 = 0 : image | 1 0 0 0 | <------------------- image | 1 0 0 0 | : 0 | 0 a b c | {0} | 1 0 0 0 | | 0 a b c | {1} | 0 1 0 0 | {1} | 0 0 1 0 | {1} | 0 0 0 1 | 3 3 1 : S <----------------- S : 1 {1} | 1 0 0 | {1} | 0 1 0 | {1} | 0 0 1 | 3 3 2 : S <----------------- S : 2 {2} | 1 0 0 | {2} | 0 1 0 | {2} | 0 0 1 | 1 1 3 : S <------------- S : 3 {3} | 1 | 13 4 : 0 <----- S : 4 0 o21 : ComplexMap i22 : F_[0,2] 1 o22 = 0 : image | 1 0 0 0 | <------------- S : 0 | 0 a b c | {0} | 1 | {1} | 0 | {1} | 0 | {1} | 0 | 3 3 1 : S <----------------- S : 1 {1} | 1 0 0 | {1} | 0 1 0 | {1} | 0 0 1 | 3 3 2 : S <----------------- S : 2 {2} | 1 0 0 | {2} | 0 1 0 | {2} | 0 0 1 | 1 1 3 : S <------------- S : 3 {3} | 1 | 13 13 4 : S <--------------------------------- S : 4 | 1 0 0 0 0 0 0 0 0 0 0 0 0 | | 0 1 0 0 0 0 0 0 0 0 0 0 0 | | 0 0 1 0 0 0 0 0 0 0 0 0 0 | | 0 0 0 1 0 0 0 0 0 0 0 0 0 | | 0 0 0 0 1 0 0 0 0 0 0 0 0 | | 0 0 0 0 0 1 0 0 0 0 0 0 0 | | 0 0 0 0 0 0 1 0 0 0 0 0 0 | | 0 0 0 0 0 0 0 1 0 0 0 0 0 | | 0 0 0 0 0 0 0 0 1 0 0 0 0 | | 0 0 0 0 0 0 0 0 0 1 0 0 0 | | 0 0 0 0 0 0 0 0 0 0 1 0 0 | | 0 0 0 0 0 0 0 0 0 0 0 1 0 | | 0 0 0 0 0 0 0 0 0 0 0 0 1 | o22 : ComplexMap