Macaulay2 » Documentation
Packages » SimplicialModules :: extPower
next | previous | forward | backward | up | index | toc

extPower -- compute the Dold-Puppe extension of the exterior power functor to simplicial modules

Description

This function computes the Dold-Puppe extension of the exterior power functor to the category of chain complexes. It can be applied to a simplicial module, a complex, or maps thereof. This method is equivalent to using schurMap for the partition $(1, 1, \dots , 1)$, but is generally much faster.

i1 : Q = ZZ/2[a,b]

o1 = Q

o1 : PolynomialRing
i2 : K = koszulComplex vars Q

      1      2      1
o2 = Q  <-- Q  <-- Q
                    
     0      1      2

o2 : Complex
i3 : w3K = elapsedTime prune extPower(3, K)
 -- 5.24106s elapsed

      1      18      63      91      60      15
o3 = Q  <-- Q   <-- Q   <-- Q   <-- Q   <-- Q
                                             
     1      2       3       4       5       6

o3 : Complex
i4 : (minimize w3K).dd

          3                              7
o4 = 2 : Q  <-------------------------- Q  : 3
               {2} | a b 0 0 0 0 b2 |
               {2} | 0 a b 0 a b ab |
               {2} | 0 0 a b 0 0 a2 |

          7                             6
     3 : Q  <------------------------- Q  : 4
               {3} | b 0 0 0 b2 0  |
               {3} | a 0 0 0 0  b2 |
               {3} | 0 0 b 0 a2 0  |
               {3} | 0 0 a 0 0  a2 |
               {3} | a b 0 b 0  0  |
               {3} | 0 a b a 0  0  |
               {4} | 0 0 0 0 a  b  |

          6                      3
     4 : Q  <------------------ Q  : 5
               {4} | 0 0 b2 |
               {4} | a b ab |
               {4} | 0 0 a2 |
               {4} | a b 0  |
               {5} | 0 0 b  |
               {5} | 0 0 a  |

          3                 1
     5 : Q  <------------- Q  : 6
               {5} | b |
               {5} | a |
               {6} | 0 |

o4 : ComplexMap
i5 : prune HH w3K

o5 = cokernel {2} | b a 0 0 0 0 | <-- cokernel {4} | b a | <-- cokernel {4} | b a |
              {2} | 0 0 b a 0 0 |                               
              {2} | 0 0 0 0 b a |     3                        4
      
     2

o5 : Complex

This method is also implemented in a functorial way:

i6 : F = freeResolution( (ideal vars Q)^2)

      1      3      2
o6 = Q  <-- Q  <-- Q
                    
     0      1      2

o6 : Complex
i7 : phi = extend(K, F, id_(K_0))

          1             1
o7 = 0 : Q  <--------- Q  : 0
               | 1 |

          2                     3
     1 : Q  <----------------- Q  : 1
               {1} | a b 0 |
               {1} | 0 0 b |

          1                   2
     2 : Q  <--------------- Q  : 2
               {2} | 0 b |

o7 : ComplexMap
i8 : f = elapsedTime prune extPower(2, phi)
 -- .648911s elapsed

          3                             6
o8 = 1 : Q  <------------------------- Q  : 1
               {1} | a b 0 0 0  0  |
               {1} | 0 0 0 b 0  0  |
               {2} | 0 0 0 0 ab b2 |

          9                                                                             24
     2 : Q  <------------------------------------------------------------------------- Q   : 2
               {2} | 0 0 a2 0 b2 ab 0  0  0  0  0  0 0 0 0 0 0 0  0  0  0  0  0  0 |
               {2} | 0 0 0  0 0  0  ab b2 0  0  0  0 0 0 0 0 0 0  0  0  0  0  0  0 |
               {2} | 0 0 0  0 0  0  0  0  b2 0  0  0 0 0 0 0 0 0  0  0  0  0  0  0 |
               {2} | 0 0 0  0 0  0  0  0  0  ab b2 0 0 0 0 0 0 0  0  0  0  0  0  0 |
               {2} | 0 b 0  0 0  0  0  0  0  0  0  0 0 0 0 0 0 0  0  0  0  0  0  0 |
               {3} | 0 0 0  0 0  0  0  0  0  0  0  0 0 0 0 0 0 ab b2 0  0  0  0  0 |
               {3} | 0 0 0  0 0  0  0  0  0  0  0  0 0 0 0 0 0 0  0  b2 0  0  0  0 |
               {3} | 0 0 0  0 0  0  0  0  0  0  0  0 0 0 0 0 0 0  0  0  ab b2 0  0 |
               {3} | 0 0 0  0 0  0  0  0  0  0  0  0 0 0 0 0 0 0  0  0  0  0  b2 0 |

          9                                                                                       30
     3 : Q  <----------------------------------------------------------------------------------- Q   : 3
               {3} | 0 0 0 0 0 0 0 0 0 ab b2 0  0  0  0  0  0  0  0 0 0  0 0 0 0 0 0  0 0  0 |
               {3} | 0 0 0 0 0 0 0 0 0 0  0  b2 0  0  0  0  0  0  0 0 0  0 0 0 0 0 0  0 0  0 |
               {3} | 0 0 0 0 0 0 0 0 0 0  0  0  ab b2 0  0  0  0  0 0 0  0 0 0 0 0 0  0 0  0 |
               {3} | 0 0 0 0 0 0 0 0 0 0  0  0  0  0  b2 0  0  0  0 0 0  0 0 0 0 0 0  0 0  0 |
               {3} | 0 0 0 0 0 0 0 0 0 0  0  0  0  0  0  ab b2 0  0 0 0  0 0 0 0 0 0  0 0  0 |
               {3} | 0 0 0 0 0 0 0 0 0 0  0  0  0  0  0  0  0  b2 0 0 0  0 0 0 0 0 0  0 0  0 |
               {4} | 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  0 0  0 |
               {4} | 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 |
               {4} | 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 |

          3                                          12
     4 : Q  <-------------------------------------- Q   : 4
               {4} | 0 0 0 0 0 0 0 b2 0 0  0 0  |
               {4} | 0 0 0 0 0 0 0 0  0 b2 0 0  |
               {4} | 0 0 0 0 0 0 0 0  0 0  0 b2 |

o8 : ComplexMap
i9 : prune HH f

o9 = 1 : cokernel {1} | a 0 b | <----------------- cokernel {2} | b 0 b2 a2 0  | : 1
                  {1} | 0 b a |    {1} | 0 b 0 |            {2} | a b 0  0  0  |
                                   {1} | 0 0 0 |            {2} | 0 a 0  0  b2 |

o9 : ComplexMap

Since this method runs significantly faster than using schurMap, we can compute the full exterior power complex of a longer complex:

i10 : Q = ZZ/2[a..c];
i11 : K = koszulComplex vars Q

       1      3      3      1
o11 = Q  <-- Q  <-- Q  <-- Q
                            
      0      1      2      3

o11 : Complex
i12 : w2K = prune extPower(2, K)

       6      33      73      81      45      10
o12 = Q  <-- Q   <-- Q   <-- Q   <-- Q   <-- Q
                                              
      1      2       3       4       5       6

o12 : Complex
i13 : (minimize w2K).dd

           3                                 9
o13 = 1 : Q  <----------------------------- Q  : 2
                {1} | a b 0 c 0 0 b c 0 |
                {1} | 0 a b 0 c 0 a 0 c |
                {1} | 0 0 0 a b c 0 a b |

           9                                            13
      2 : Q  <---------------------------------------- Q   : 3
                {2} | 0 0 0 0 0 0 0 0 0 0 b2 c2 0  |
                {2} | a b 0 0 c 0 c 0 0 0 ab 0  0  |
                {2} | 0 0 0 0 0 0 0 0 0 0 a2 0  c2 |
                {2} | 0 0 b a 0 c b 0 0 0 0  ac 0  |
                {2} | 0 0 a 0 a 0 0 b c 0 0  0  bc |
                {2} | 0 0 0 0 0 0 0 0 0 0 0  a2 b2 |
                {2} | a b c 0 0 0 0 0 0 c 0  0  0  |
                {2} | 0 0 0 a b c 0 0 0 b 0  0  0  |
                {2} | 0 0 0 0 0 0 a b c a 0  0  0  |

           13                                     10
      3 : Q   <--------------------------------- Q   : 4
                 {3} | b c 0 0 0 0 c 0 0 bc2 |
                 {3} | a 0 0 c 0 0 0 c 0 ac2 |
                 {3} | 0 a 0 b 0 0 0 0 c 0   |
                 {3} | 0 b c 0 0 0 b 0 0 0   |
                 {3} | 0 a 0 0 c 0 0 b 0 abc |
                 {3} | 0 0 a 0 b 0 0 0 b ab2 |
                 {3} | 0 0 0 b c 0 a 0 0 0   |
                 {3} | 0 0 0 a 0 c 0 a 0 0   |
                 {3} | 0 0 0 0 a b 0 0 a 0   |
                 {3} | 0 0 0 0 0 0 a b c 0   |
                 {4} | 0 0 0 0 0 0 0 0 0 c2  |
                 {4} | 0 0 0 0 0 0 0 0 0 b2  |
                 {4} | 0 0 0 0 0 0 0 0 0 a2  |

           10                        4
      4 : Q   <-------------------- Q  : 5
                 {4} | 0 0 0 c2 |
                 {4} | b c 0 bc |
                 {4} | 0 0 0 b2 |
                 {4} | a 0 c ac |
                 {4} | 0 a b ab |
                 {4} | 0 0 0 a2 |
                 {4} | b c 0 0  |
                 {4} | a 0 c 0  |
                 {4} | 0 a b 0  |
                 {6} | 0 0 0 0  |

           4                 1
      5 : Q  <------------- Q  : 6
                {5} | c |
                {5} | b |
                {5} | a |
                {6} | 0 |

o13 : ComplexMap
i14 : prune HH w2K --has more interesting homology than in the nonmodular case

o14 = cokernel {1} | a 0 b 0 0 c | <-- cokernel {2} | b a 0 c 0 0 0 c | <-- cokernel {3} | c b a |
               {1} | 0 b a 0 c 0 |              {2} | 0 0 c b a 0 0 0 |      
               {1} | 0 0 0 c b a |              {2} | 0 0 0 0 0 c b a |     3
                                        
      1                                2

o14 : Complex
i15 : needsPackage "ChainComplexOperations"

o15 = ChainComplexOperations

o15 : Package
i16 : Q = ZZ/3[a..c]

o16 = Q

o16 : PolynomialRing
i17 : K = koszulComplex vars Q

       1      3      3      1
o17 = Q  <-- Q  <-- Q  <-- Q
                            
      0      1      2      3

o17 : Complex
i18 : prune HH wedge2 K --notice: homology concentrated in odd degrees

o18 = cokernel {1} | c b a 0 0 0 0 0 0 | <-- 0 <-- cokernel {3} | c b a |
               {1} | 0 0 0 c b a 0 0 0 |            
               {1} | 0 0 0 0 0 0 c b a |     2     3
       
      1

o18 : Complex

Caveat

This method may take a very long time to run if the user inputs a large/long complex. Use the option TopDegree => d to only run the computation up to a certain degree.

See also

Ways to use extPower:

  • extPower(ZZ,Complex)
  • extPower(ZZ,ComplexMap)
  • extPower(ZZ,SimplicialModule)
  • extPower(ZZ,SimplicialModuleMap)

For the programmer

The object extPower is a method function with options.


The source of this document is in /build/reproducible-path/macaulay2-1.26.05+ds/M2/Macaulay2/packages/SimplicialModules/SimplicialModuleDOC.m2:3612:0.