next | previous | forward | backward | up | top | index | toc | Macaulay2 website
CompleteIntersectionResolutions :: layeredResolution

layeredResolution -- layered finite and infinite layered resolutions of CM modules

Synopsis

Description

The resolutions computed are those described in the paper "Layered Resolutions of Cohen-Macaulay modules" by Eisenbud and Peeva. They are both minimal when M is a suffiently high syzygy of a module N. If the option Verbose=>true is set, then (in the case of the resolution over S) the ranks of the modules B_s in the resolution are output.

Here is an example computing 5 terms of an infinite resolution:

i1 : S = ZZ/101[a,b,c]

o1 = S

o1 : PolynomialRing
i2 : ff = matrix"a3, b3, c3"

o2 = | a3 b3 c3 |

             1       3
o2 : Matrix S  <--- S
i3 : R = S/ideal ff

o3 = R

o3 : QuotientRing
i4 : M = syzygyModule(2,coker vars R)

o4 = cokernel {2} | a  0 -c2 0   b2 0 0   0  0  0 |
              {2} | -b 0 0   -c2 0  0 0   a2 0  0 |
              {2} | c  0 0   0   0  0 -b2 0  a2 0 |
              {3} | 0  c b   a   0  0 0   0  0  0 |
              {3} | 0  0 0   0   c  b a   0  0  0 |
              {3} | 0  0 0   0   0  0 0   c  b  a |

                            6
o4 : R-module, quotient of R
i5 : (FF, aug) = layeredResolution(ff,M,5)
       0 1 2 3 4 5
total: 4 4 4 4 4 4
    2: 3 1 . . . .
    3: 1 3 3 1 . .
    4: . . 1 3 3 1
    5: . . . . 1 3
       0 1 2  3  4  5
total: 5 7 9 11 13 15
    2: 3 1 .  .  .  .
    3: 2 6 6  2  .  .
    4: . . 3  9  9  3
    5: . . .  .  4 12
       0  1  2  3  4  5
total: 6 10 15 21 28 36
    2: 3  1  .  .  .  .
    3: 3  9  9  3  .  .
    4: .  .  6 18 18  6
    5: .  .  .  . 10 30

       6      10      15      21      28      36
o5 = (R  <-- R   <-- R   <-- R   <-- R   <-- R  , {2} | 0 0  0  1 0 0 |)
                                                  {2} | 0 -1 0  0 0 0 |
      0      1       2       3       4       5    {2} | 0 0  -1 0 0 0 |
                                                  {3} | 0 0  0  0 0 1 |
                                                  {3} | 0 0  0  0 1 0 |
                                                  {3} | 1 0  0  0 0 0 |

o5 : Sequence
i6 : betti FF

            0  1  2  3  4  5
o6 = total: 6 10 15 21 28 36
         2: 3  1  .  .  .  .
         3: 3  9  9  3  .  .
         4: .  .  6 18 18  6
         5: .  .  .  . 10 30

o6 : BettiTally
i7 : betti res(M, LengthLimit=>5)

            0  1  2  3  4  5
o7 = total: 6 10 15 21 28 36
         2: 3  1  .  .  .  .
         3: 3  9  9  3  .  .
         4: .  .  6 18 18  6
         5: .  .  .  . 10 30

o7 : BettiTally
i8 : C = chainComplex flatten {{aug} |apply(4, i-> FF.dd_(i+1))}

                                                         6      10      15      21      28
o8 = cokernel {2} | a  0 -c2 0   b2 0 0   0  0  0 | <-- R  <-- R   <-- R   <-- R   <-- R
              {2} | -b 0 0   -c2 0  0 0   a2 0  0 |                                     
              {2} | c  0 0   0   0  0 -b2 0  a2 0 |     1      2       3       4       5
              {3} | 0  c b   a   0  0 0   0  0  0 |
              {3} | 0  0 0   0   c  b a   0  0  0 |
              {3} | 0  0 0   0   0  0 0   c  b  a |
      
     0

o8 : ChainComplex
i9 : apply(4, i ->FF.dd_(i+1))

o9 = {{3} | 0  a -c -b 0  0 0  0 0  0  |, {3} | 0   0  -c2 0 0   0  0   b2 0 
      {2} | b  0 a2 0  0  0 0  0 0  c2 |  {4} | 0   0  0   0 0   0  0   0  0 
      {2} | -c 0 0  a2 0  0 b2 0 0  0  |  {4} | -c2 0  0   0 0   0  0   0  0 
      {2} | a  0 0  0  b2 0 0  0 c2 0  |  {4} | 0   0  0   0 0   0  -b2 0  0 
      {3} | 0  0 0  0  c  b a  0 0  0  |  {4} | 0   0  0   0 c2  0  0   -a 0 
      {3} | 0  0 0  0  0  0 0  c -b a  |  {4} | 0   0  0   0 0   0  0   0  -a
                                          {4} | 0   0  0   0 0   0  a2  c  b 
                                          {4} | 0   -a 0   b 0   c2 0   0  0 
                                          {4} | 0   0  a   c -b2 0  0   0  0 
                                          {4} | a2  c  b   0 0   0  0   0  0 
                                                                             
                                                                             
                                                                             
                                                                             
                                                                             
                                                                             
                                                                             
                                                                             
                                                                             
                                                                             
                                                                             
     ------------------------------------------------------------------------
     0  0  0  0 0 a2 |, {6} | 0  a  -c -b 0  0   0  0 0  0  0  0  0   0  0  0
     0  0  a2 c b 0  |  {5} | b  0  a2 0  0  0   0  0 0  c2 0  0  0   0  0  0
     0  0  0  a 0 -b |  {5} | -c 0  0  a2 0  0   b2 0 0  0  0  0  0   0  0  0
     0  0  0  0 a c  |  {5} | a  0  0  0  b2 0   0  0 c2 0  0  0  0   0  0  0
     b  0  0  0 0 0  |  {6} | 0  0  0  0  c  b   a  0 0  0  0  0  0   0  0  0
     -c b2 0  0 0 0  |  {6} | 0  0  0  0  0  0   0  c -b a  0  0  0   0  0  0
     0  0  0  0 0 0  |  {6} | 0  0  0  0  0  0   0  0 0  0  0  a  -c  -b 0  0
     0  0  0  0 0 0  |  {5} | 0  0  0  0  0  0   c2 0 0  0  b  0  a2  0  0  0
     0  0  0  0 0 0  |  {5} | 0  0  0  0  0  0   0  0 0  0  -c 0  0   a2 0  0
     0  0  0  0 0 0  |  {5} | 0  0  0  0  0  -c2 0  0 0  0  a  0  0   0  b2 0
                        {6} | 0  0  0  0  0  0   0  0 0  0  0  0  0   0  c  b
                        {6} | 0  0  0  0  0  0   0  0 0  0  0  0  0   0  0  0
                        {5} | 0  c2 0  0  0  0   0  0 0  0  0  0  0   0  0  0
                        {5} | 0  0  0  0  0  0   0  0 0  0  0  b2 0   0  0  0
                        {5} | 0  0  0  c2 0  0   0  0 0  0  0  0  -b2 0  0  0
                                                                             
                                                                             
                                                                             
                                                                             
                                                                             
                                                                             
     ------------------------------------------------------------------------
     0  0  0 0  0  |, {6} | 0   0  -c2 0 0   0  0   b2 0   0  0  0   0 0   a2
     0  0  0 0  0  |  {7} | 0   0  0   0 0   0  0   0  0   0  0  a2  c b   0 
     0  0  0 0  0  |  {7} | -c2 0  0   0 0   0  0   0  0   0  0  0   a 0   -b
     0  0  0 0  0  |  {7} | 0   0  0   0 0   0  -b2 0  0   0  0  0   0 a   c 
     0  0  0 0  0  |  {7} | 0   0  0   0 c2  0  0   -a 0   b  0  0   0 0   0 
     0  0  0 0  0  |  {7} | 0   0  0   0 0   0  0   0  -a  -c b2 0   0 0   0 
     0  0  0 0  0  |  {7} | 0   0  0   0 0   0  a2  c  b   0  0  0   0 0   0 
     0  0  0 0  0  |  {7} | 0   -a 0   b 0   c2 0   0  0   0  0  0   0 0   0 
     b2 0  0 0  0  |  {7} | 0   0  a   c -b2 0  0   0  0   0  0  0   0 0   0 
     0  0  0 0  0  |  {7} | a2  c  b   0 0   0  0   0  0   0  0  0   0 0   0 
     a  0  0 0  0  |  {6} | 0   0  0   0 0   0  0   0  -c2 0  0  0   0 0   0 
     0  0  a -c -b |  {7} | 0   0  0   0 0   0  0   0  0   0  0  0   0 0   0 
     0  b  0 a2 0  |  {7} | 0   0  0   0 0   0  -c2 0  0   0  0  0   0 0   0 
     0  -c 0 0  a2 |  {7} | 0   0  0   0 0   0  0   0  0   0  0  0   0 0   0 
     0  a  0 0  0  |  {7} | 0   0  0   0 0   0  0   0  0   0  c2 0   0 0   0 
                      {7} | 0   0  0   0 0   0  0   0  0   0  0  0   0 0   0 
                      {7} | 0   0  0   0 0   0  0   0  0   0  0  0   0 0   0 
                      {6} | 0   0  0   0 0   0  0   0  0   0  0  0   0 -c2 0 
                      {7} | 0   0  0   0 0   0  0   0  0   0  0  0   0 0   0 
                      {7} | 0   0  0   0 0   0  0   0  0   0  0  -c2 0 0   0 
                      {7} | 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  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 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  |
     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  0   0  0 0  0  0 0 0  |
     0   0  0  0  0  0   0  0 0  0  0 0 0  |
     0   b2 0  0  0  0   0  0 a2 0  0 0 0  |
     0   0  0  0  0  a2  c  b 0  0  0 0 0  |
     0   0  0  0  0  0   a  0 -b 0  0 0 0  |
     -b2 0  0  0  0  0   0  a c  0  0 0 0  |
     0   -a 0  b  0  0   0  0 0  0  0 0 0  |
     0   0  -a -c b2 0   0  0 0  0  0 0 0  |
     a2  c  b  0  0  0   0  0 0  0  0 0 0  |
     0   0  0  0  0  0   b2 0 0  0  0 0 a2 |
     0   0  0  0  0  0   0  0 0  a2 c b 0  |
     0   0  0  0  0  0   0  0 0  0  a 0 -b |
     0   0  0  0  0  -b2 0  0 0  0  0 a c  |

o9 : List
i10 : apply(5, j-> prune HH_j C == 0)

o10 = {true, true, true, true, true}

o10 : List

And one computing the whole finite resolution:

i11 : MS = pushForward(map(R,S), M);
i12 : (GG, aug) = layeredResolution(ff,MS)

        6      13      10      3
o12 = (S  <-- S   <-- S   <-- S , {2} | 0 0  0  1 0 0 |)
                                  {2} | 0 -1 0  0 0 0 |
       0      1       2       3   {2} | 0 0  -1 0 0 0 |
                                  {3} | 0 0  0  0 0 1 |
                                  {3} | 0 0  0  0 1 0 |
                                  {3} | 1 0  0  0 0 0 |

o12 : Sequence
i13 : (GG, aug) = layeredResolution(ff,MS, Verbose =>true)
{3, 1} in codimension 3
{3, 1} in codimension 2

        6      13      10      3
o13 = (S  <-- S   <-- S   <-- S , {2} | 0 0  0  1 0 0 |)
                                  {2} | 0 -1 0  0 0 0 |
       0      1       2       3   {2} | 0 0  -1 0 0 0 |
                                  {3} | 0 0  0  0 0 1 |
                                  {3} | 0 0  0  0 1 0 |
                                  {3} | 1 0  0  0 0 0 |

o13 : Sequence
i14 : betti GG

             0  1  2 3
o14 = total: 6 13 10 3
          2: 3  1  . .
          3: 3  9  . .
          4: .  .  . .
          5: .  3  9 .
          6: .  .  . .
          7: .  .  1 3

o14 : BettiTally
i15 : betti res MS

             0  1  2 3
o15 = total: 6 13 10 3
          2: 3  1  . .
          3: 3  9  . .
          4: .  .  . .
          5: .  3  9 .
          6: .  .  . .
          7: .  .  1 3

o15 : BettiTally
i16 : C = chainComplex flatten {{aug} |apply(length GG -1, i-> GG.dd_(i+1))}

                                                                6      13      10
o16 = cokernel {2} | a  0 c2 0  b2 0 0  0  0  0 0  0  0  | <-- S  <-- S   <-- S
               {2} | -b 0 0  c2 0  0 0  a2 0  0 0  0  0  |                     
               {2} | c  0 0  0  0  0 b2 0  a2 0 0  0  0  |     1      2       3
               {3} | 0  c -b -a 0  0 0  0  0  0 0  0  0  |
               {3} | 0  0 0  0  c  b -a 0  0  0 c3 0  0  |
               {3} | 0  0 0  0  0  0 0  c  b  a 0  c3 b3 |
       
      0

o16 : ChainComplex
i17 : apply(length GG +1 , j-> prune HH_j C == 0)

o17 = {true, true, true, false}

o17 : List

Ways to use layeredResolution :

For the programmer

The object layeredResolution is a method function with options.