next | previous | forward | backward | up | top | index | toc | Macaulay2 website
Complexes :: truncate(List,Complex)

truncate(List,Complex) -- truncation of a complex at a specified degree or set of degrees

Synopsis

Description

Truncation of homogeneous (graded) modules induces a natural operation on chain complexes.

In the singly graded case, the truncation of a homogeneous module $M$ at degree $d$ is generated by all homogeneous elements of degree at least $d$ in $M$. This method applies this operation to each term in a chain complex.

i1 : R = QQ[a,b,c];
i2 : I = ideal(a*b, a*c, b*c)

o2 = ideal (a*b, a*c, b*c)

o2 : Ideal of R
i3 : C = freeResolution I

      1      3      2
o3 = R  <-- R  <-- R
                    
     0      1      2

o3 : Complex
i4 : D = truncate(3,C)

                                                                                             2
o4 = image | c3 bc2 ac2 b2c abc a2c b3 ab2 a2b a3 | <-- image {2} | c b a 0 0 0 0 0 0 | <-- R
                                                              {2} | 0 0 0 c b a 0 0 0 |      
     0                                                        {2} | 0 0 0 0 0 0 c b a |     2
                                                         
                                                        1

o4 : Complex
i5 : assert isWellDefined D
i6 : prune HH D

o6 = cokernel {3} | b a 0 0 0 0 |
              {3} | 0 0 c a 0 0 |
              {3} | 0 0 0 0 c b |
      
     0

o6 : Complex

Truncating at a degree less than the minimal generators is the identity operation.

i7 : assert(C == truncate(0, C))

In the multi-graded case, the truncation of a homogeneous module at a list of degrees is generated by all homogeneous elements of degree that are component-wise greater than or equal to at least one of the degrees.

i8 : A = ZZ/101[x_0, x_1, y_0, y_1, y_2, Degrees => {2:{1,0}, 3:{0,1}}];
i9 : I = intersect(ideal(x_0, x_1), ideal(y_0, y_1, y_2))

o9 = ideal (x y , x y , x y , x y , x y , x y )
             1 2   0 2   1 1   0 1   1 0   0 0

o9 : Ideal of A
i10 : C = freeResolution I

       1      6      9      5      1
o10 = A  <-- A  <-- A  <-- A  <-- A
                                   
      0      1      2      3      4

o10 : Complex
i11 : D1 = prune truncate({{1,1}}, C)

                                                                            6      9      5      1
o11 = cokernel {1, 1} | x_0  y_1  0    0    y_0  0    0    0    0    | <-- A  <-- A  <-- A  <-- A
               {1, 1} | -x_1 0    y_1  0    0    0    y_0  0    0    |                           
               {1, 1} | 0    -y_2 0    x_0  0    y_0  0    0    0    |     1      2      3      4
               {1, 1} | 0    0    -y_2 -x_1 0    0    0    y_0  0    |
               {1, 1} | 0    0    0    0    -y_2 -y_1 0    0    x_0  |
               {1, 1} | 0    0    0    0    0    0    -y_2 -y_1 -x_1 |
       
      0

o11 : Complex
i12 : D2 = truncate({{1,0}}, C)

o12 = image | x_1 x_0 | <-- image {1, 1} | 1 0 0 0 0 0 | <-- image {2, 1} | 1 0 0 0 0 0 0 0 0 | <-- image {2, 2} | 1 0 0 0 0 | <-- image {2, 3} | 1 |
                                  {1, 1} | 0 1 0 0 0 0 |           {2, 1} | 0 1 0 0 0 0 0 0 0 |           {2, 2} | 0 1 0 0 0 |      
      0                           {1, 1} | 0 0 1 0 0 0 |           {1, 2} | 0 0 1 0 0 0 0 0 0 |           {2, 2} | 0 0 1 0 0 |     4
                                  {1, 1} | 0 0 0 1 0 0 |           {1, 2} | 0 0 0 1 0 0 0 0 0 |           {1, 3} | 0 0 0 1 0 |
                                  {1, 1} | 0 0 0 0 1 0 |           {2, 1} | 0 0 0 0 1 0 0 0 0 |           {1, 3} | 0 0 0 0 1 |
                                  {1, 1} | 0 0 0 0 0 1 |           {1, 2} | 0 0 0 0 0 1 0 0 0 |      
                                                                   {1, 2} | 0 0 0 0 0 0 1 0 0 |     3
                            1                                      {1, 2} | 0 0 0 0 0 0 0 1 0 |
                                                                   {1, 2} | 0 0 0 0 0 0 0 0 1 |
                                                              
                                                             2

o12 : Complex
i13 : D3 = truncate({{0,1}}, C)

o13 = image | y_2 y_1 y_0 | <-- image {1, 1} | 1 0 0 0 0 0 | <-- image {2, 1} | 1 0 0 0 0 0 0 0 0 | <-- image {2, 2} | 1 0 0 0 0 | <-- image {2, 3} | 1 |
                                      {1, 1} | 0 1 0 0 0 0 |           {2, 1} | 0 1 0 0 0 0 0 0 0 |           {2, 2} | 0 1 0 0 0 |      
      0                               {1, 1} | 0 0 1 0 0 0 |           {1, 2} | 0 0 1 0 0 0 0 0 0 |           {2, 2} | 0 0 1 0 0 |     4
                                      {1, 1} | 0 0 0 1 0 0 |           {1, 2} | 0 0 0 1 0 0 0 0 0 |           {1, 3} | 0 0 0 1 0 |
                                      {1, 1} | 0 0 0 0 1 0 |           {2, 1} | 0 0 0 0 1 0 0 0 0 |           {1, 3} | 0 0 0 0 1 |
                                      {1, 1} | 0 0 0 0 0 1 |           {1, 2} | 0 0 0 0 0 1 0 0 0 |      
                                                                       {1, 2} | 0 0 0 0 0 0 1 0 0 |     3
                                1                                      {1, 2} | 0 0 0 0 0 0 0 1 0 |
                                                                       {1, 2} | 0 0 0 0 0 0 0 0 1 |
                                                                  
                                                                 2

o13 : Complex
i14 : D4 = truncate({{1,0},{0,1}}, C)

o14 = image | y_2 y_1 y_0 x_1 x_0 | <-- image {1, 1} | 1 0 0 0 0 0 | <-- image {2, 1} | 1 0 0 0 0 0 0 0 0 | <-- image {2, 2} | 1 0 0 0 0 | <-- image {2, 3} | 1 |
                                              {1, 1} | 0 1 0 0 0 0 |           {2, 1} | 0 1 0 0 0 0 0 0 0 |           {2, 2} | 0 1 0 0 0 |      
      0                                       {1, 1} | 0 0 1 0 0 0 |           {1, 2} | 0 0 1 0 0 0 0 0 0 |           {2, 2} | 0 0 1 0 0 |     4
                                              {1, 1} | 0 0 0 1 0 0 |           {1, 2} | 0 0 0 1 0 0 0 0 0 |           {1, 3} | 0 0 0 1 0 |
                                              {1, 1} | 0 0 0 0 1 0 |           {2, 1} | 0 0 0 0 1 0 0 0 0 |           {1, 3} | 0 0 0 0 1 |
                                              {1, 1} | 0 0 0 0 0 1 |           {1, 2} | 0 0 0 0 0 1 0 0 0 |      
                                                                               {1, 2} | 0 0 0 0 0 0 1 0 0 |     3
                                        1                                      {1, 2} | 0 0 0 0 0 0 0 1 0 |
                                                                               {1, 2} | 0 0 0 0 0 0 0 0 1 |
                                                                          
                                                                         2

o14 : Complex
i15 : D5 = truncate({{2,2}}, C)

o15 = image | x_1^2y_2^2 x_0x_1y_2^2 x_0^2y_2^2 x_1^2y_1y_2 x_0x_1y_1y_2 x_0^2y_1y_2 x_1^2y_0y_2 x_0x_1y_0y_2 x_0^2y_0y_2 x_1^2y_1^2 x_0x_1y_1^2 x_0^2y_1^2 x_1^2y_0y_1 x_0x_1y_0y_1 x_0^2y_0y_1 x_1^2y_0^2 x_0x_1y_0^2 x_0^2y_0^2 | <-- image {1, 1} | x_1y_2 x_0y_2 x_1y_1 x_0y_1 x_1y_0 x_0y_0 0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      | <-- image {2, 1} | y_2 y_1 y_0 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   | <-- image {2, 2} | 1 0 0 0   0   0   0   | <-- image {2, 3} | 1 |
                                                                                                                                                                                                                                               {1, 1} | 0      0      0      0      0      0      x_1y_2 x_0y_2 x_1y_1 x_0y_1 x_1y_0 x_0y_0 0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      |           {2, 1} | 0   0   0   y_2 y_1 y_0 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   |           {2, 2} | 0 1 0 0   0   0   0   |      
      0                                                                                                                                                                                                                                        {1, 1} | 0      0      0      0      0      0      0      0      0      0      0      0      x_1y_2 x_0y_2 x_1y_1 x_0y_1 x_1y_0 x_0y_0 0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      |           {1, 2} | 0   0   0   0   0   0   x_1 x_0 0   0   0   0   0   0   0   0   0   0   0   0   0   |           {2, 2} | 0 0 1 0   0   0   0   |     4
                                                                                                                                                                                                                                               {1, 1} | 0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      x_1y_2 x_0y_2 x_1y_1 x_0y_1 x_1y_0 x_0y_0 0      0      0      0      0      0      0      0      0      0      0      0      |           {1, 2} | 0   0   0   0   0   0   0   0   x_1 x_0 0   0   0   0   0   0   0   0   0   0   0   |           {1, 3} | 0 0 0 x_1 x_0 0   0   |
                                                                                                                                                                                                                                               {1, 1} | 0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      x_1y_2 x_0y_2 x_1y_1 x_0y_1 x_1y_0 x_0y_0 0      0      0      0      0      0      |           {2, 1} | 0   0   0   0   0   0   0   0   0   0   y_2 y_1 y_0 0   0   0   0   0   0   0   0   |           {1, 3} | 0 0 0 0   0   x_1 x_0 |
                                                                                                                                                                                                                                               {1, 1} | 0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      0      x_1y_2 x_0y_2 x_1y_1 x_0y_1 x_1y_0 x_0y_0 |           {1, 2} | 0   0   0   0   0   0   0   0   0   0   0   0   0   x_1 x_0 0   0   0   0   0   0   |      
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {1, 2} | 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   x_1 x_0 0   0   0   0   |     3
                                                                                                                                                                                                                                         1                                                                                                                                                                                                                                                                                      {1, 2} | 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   x_1 x_0 0   0   |
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                {1, 2} | 0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0   x_1 x_0 |
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          2

o15 : Complex
i16 : assert all({D1,D2,D3,D4,D5}, isWellDefined)

See also