Macaulay2 » Documentation
Packages » Complexes :: concentration
next | previous | forward | backward | up | index | toc

# concentration -- indices on which a complex may be non-zero

- Usage:
    `(lo,hi) = concentration C`
- Inputs:
  - C, a complex,
- Outputs:
  - lo, an integer,
  - hi, an integer, a pair of integers lo, hi such that C_i = 0 for i < lo or i > hi.

## Description

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

## See also

- Basic invariants and properties -- information about accessing basic features
- Complex _ ZZ -- access individual object in a complex
- concentration(ComplexMap) -- indices on which a complex map may be non-zero

## Ways to use concentration:

- `concentration(Complex)`
- concentration(ComplexMap) -- indices on which a complex map may be non-zero

## For the programmer

The object concentration is a method function.

The source of this document is in /build/macaulay2-88fgJW/macaulay2-1.25.11+ds/M2/Macaulay2/packages/Complexes/ChainComplexDoc.m2:338:0.