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.