In this package, each complex has a concentration (lo, hi) such that lo <= hi. When lo <= i <= hi, the module C_i might be zero. The methods max and min applied to the complex C return lo and hi, respectively.
This function is mainly used in programming, to loop over all non-zero modules or maps in the complex. This should not be confused with the support of a complex.
i1 : S = ZZ/101[a..c]; |
i2 : C = freeResolution coker vars S 1 3 3 1 o2 = S <-- S <-- S <-- S 0 1 2 3 o2 : Complex |
i3 : concentration C o3 = (0, 3) o3 : Sequence |
i4 : D = C ++ C[5] 1 3 3 1 1 3 3 1 o4 = S <-- S <-- S <-- S <-- 0 <-- S <-- S <-- S <-- S -5 -4 -3 -2 -1 0 1 2 3 o4 : Complex |
i5 : concentration D o5 = (-5, 3) o5 : Sequence |
i6 : min D o6 = -5 |
i7 : max D o7 = 3 |
i8 : assert((min D, max D) === concentration D) |
Indices that are outside of the concentration automatically return the zero object.
i9 : C_-1 o9 = 0 o9 : S-module |
i10 : D_4 o10 = 0 o10 : S-module |
The function concentration does no computation. To eliminate extraneous zeros, use prune(Complex).
i11 : f1 = a*id_C 1 1 o11 = 0 : S <--------- S : 0 | a | 3 3 1 : S <----------------- S : 1 {1} | a 0 0 | {1} | 0 a 0 | {1} | 0 0 a | 3 3 2 : S <----------------- S : 2 {2} | a 0 0 | {2} | 0 a 0 | {2} | 0 0 a | 1 1 3 : S <------------- S : 3 {3} | a | o11 : ComplexMap |
i12 : E = ker f1 o12 = image 0 <-- image 0 <-- image 0 <-- image 0 0 1 2 3 o12 : Complex |
i13 : concentration E o13 = (0, 3) o13 : Sequence |
i14 : concentration prune E o14 = (0, 0) o14 : Sequence |
The concentration of a zero complex can be arbitrary, however, after pruning, its concentration will be (0,0).
i15 : C0 = (complex S^0)[4] o15 = 0 -4 o15 : Complex |
i16 : concentration C0 o16 = (-4, -4) o16 : Sequence |
i17 : prune C0 o17 = 0 0 o17 : Complex |
i18 : concentration oo o18 = (0, 0) o18 : Sequence |
The object concentration is a method function.