Macaulay2 » Documentation
Packages » MatrixFactorizations :: tensorCommutativity(ZZdFactorization,ZZdFactorization)
next | previous | forward | backward | up | index | toc

tensorCommutativity(ZZdFactorization,ZZdFactorization) -- make the canonical isomorphism arising from commutativity of the tensor product operation

Description

The commutativity of tensor products of modules induces the commutativity of tensor products of ZZ/2-graded factorizations. The main difference for factorizations is that there are coefficients depending on the degrees of the terms being commuted. This method implements this isomorphism for ZZ/2-graded factorizations.

Using two term complexes of small rank, we see that this isomorphism need not be the identity map.

i1 : S = ZZ/101[a,b];
i2 : R = S/(a^3+b^3);
i3 : m = ideal vars R

o3 = ideal (a, b)

o3 : Ideal of R
i4 : C = tailMF m

      2      2      2
o4 = S  <-- S  <-- S
                    
     0      1      0

o4 : ZZdFactorization
i5 : D = tailMF (m^2)

      3      3      3
o5 = S  <-- S  <-- S
                    
     0      1      0

o5 : ZZdFactorization
i6 : F = C**D

      12      12      12
o6 = S   <-- S   <-- S
                      
     0       1       0

o6 : ZZdFactorization
i7 : G = D**C

      12      12      12
o7 = S   <-- S   <-- S
                      
     0       1       0

o7 : ZZdFactorization
i8 : f = tensorCommutativity(C,D)

          12                                             12
o8 = 0 : S   <----------------------------------------- S   : 0
                {5} | 1 0 0 0 0 0 0  0  0  0  0  0  |
                {6} | 0 0 0 1 0 0 0  0  0  0  0  0  |
                {5} | 0 1 0 0 0 0 0  0  0  0  0  0  |
                {6} | 0 0 0 0 1 0 0  0  0  0  0  0  |
                {5} | 0 0 1 0 0 0 0  0  0  0  0  0  |
                {6} | 0 0 0 0 0 1 0  0  0  0  0  0  |
                {9} | 0 0 0 0 0 0 -1 0  0  0  0  0  |
                {9} | 0 0 0 0 0 0 0  0  0  -1 0  0  |
                {9} | 0 0 0 0 0 0 0  -1 0  0  0  0  |
                {9} | 0 0 0 0 0 0 0  0  0  0  -1 0  |
                {9} | 0 0 0 0 0 0 0  0  -1 0  0  0  |
                {9} | 0 0 0 0 0 0 0  0  0  0  0  -1 |

          12                                       12
     1 : S   <----------------------------------- S   : 1
                {7} | 0 0 0 0 0 0 1 0 0 0 0 0 |
                {7} | 0 0 0 0 0 0 0 0 0 1 0 0 |
                {7} | 0 0 0 0 0 0 0 1 0 0 0 0 |
                {7} | 0 0 0 0 0 0 0 0 0 0 1 0 |
                {7} | 0 0 0 0 0 0 0 0 1 0 0 0 |
                {7} | 0 0 0 0 0 0 0 0 0 0 0 1 |
                {7} | 1 0 0 0 0 0 0 0 0 0 0 0 |
                {8} | 0 0 0 1 0 0 0 0 0 0 0 0 |
                {7} | 0 1 0 0 0 0 0 0 0 0 0 0 |
                {8} | 0 0 0 0 1 0 0 0 0 0 0 0 |
                {7} | 0 0 1 0 0 0 0 0 0 0 0 0 |
                {8} | 0 0 0 0 0 1 0 0 0 0 0 0 |

o8 : ZZdFactorizationMap
i9 : assert isWellDefined f
i10 : assert isFactorizationMorphism f
i11 : assert(source f === F)
i12 : assert(target f === G)
i13 : assert(f_1 != id_(source f_1))
i14 : assert(prune ker f == 0)
i15 : assert(prune coker f == 0)
i16 : g = f^-1

           12                                             12
o16 = 0 : S   <----------------------------------------- S   : 0
                 {5} | 1 0 0 0 0 0 0  0  0  0  0  0  |
                 {5} | 0 0 1 0 0 0 0  0  0  0  0  0  |
                 {5} | 0 0 0 0 1 0 0  0  0  0  0  0  |
                 {6} | 0 1 0 0 0 0 0  0  0  0  0  0  |
                 {6} | 0 0 0 1 0 0 0  0  0  0  0  0  |
                 {6} | 0 0 0 0 0 1 0  0  0  0  0  0  |
                 {9} | 0 0 0 0 0 0 -1 0  0  0  0  0  |
                 {9} | 0 0 0 0 0 0 0  0  -1 0  0  0  |
                 {9} | 0 0 0 0 0 0 0  0  0  0  -1 0  |
                 {9} | 0 0 0 0 0 0 0  -1 0  0  0  0  |
                 {9} | 0 0 0 0 0 0 0  0  0  -1 0  0  |
                 {9} | 0 0 0 0 0 0 0  0  0  0  0  -1 |

           12                                       12
      1 : S   <----------------------------------- S   : 1
                 {7} | 0 0 0 0 0 0 1 0 0 0 0 0 |
                 {7} | 0 0 0 0 0 0 0 0 1 0 0 0 |
                 {7} | 0 0 0 0 0 0 0 0 0 0 1 0 |
                 {8} | 0 0 0 0 0 0 0 1 0 0 0 0 |
                 {8} | 0 0 0 0 0 0 0 0 0 1 0 0 |
                 {8} | 0 0 0 0 0 0 0 0 0 0 0 1 |
                 {7} | 1 0 0 0 0 0 0 0 0 0 0 0 |
                 {7} | 0 0 1 0 0 0 0 0 0 0 0 0 |
                 {7} | 0 0 0 0 1 0 0 0 0 0 0 0 |
                 {7} | 0 1 0 0 0 0 0 0 0 0 0 0 |
                 {7} | 0 0 0 1 0 0 0 0 0 0 0 0 |
                 {7} | 0 0 0 0 0 1 0 0 0 0 0 0 |

o16 : ZZdFactorizationMap
i17 : assert isWellDefined g
i18 : assert(g * f == 1)
i19 : assert(f * g == 1)

This isomorphism works even when the modules of the factorization are not necessarily free.

i20 : h2 = tensorCommutativity(C**(coker vars S), D**(coker vars S));
i21 : assert isWellDefined h2
i22 : assert isFactorizationMorphism h2
i23 : assert(ker h2 == 0)
i24 : assert(coker h2 == 0)
i25 : k = h2^-1;
i26 : assert(h2*k == 1)
i27 : assert(k*h2 == 1)
i28 : h2_2

o28 = {5} | 1 0 0 0 0 0 0  0  0  0  0  0  |
      {6} | 0 0 0 1 0 0 0  0  0  0  0  0  |
      {5} | 0 1 0 0 0 0 0  0  0  0  0  0  |
      {6} | 0 0 0 0 1 0 0  0  0  0  0  0  |
      {5} | 0 0 1 0 0 0 0  0  0  0  0  0  |
      {6} | 0 0 0 0 0 1 0  0  0  0  0  0  |
      {9} | 0 0 0 0 0 0 -1 0  0  0  0  0  |
      {9} | 0 0 0 0 0 0 0  0  0  -1 0  0  |
      {9} | 0 0 0 0 0 0 0  -1 0  0  0  0  |
      {9} | 0 0 0 0 0 0 0  0  0  0  -1 0  |
      {9} | 0 0 0 0 0 0 0  0  -1 0  0  0  |
      {9} | 0 0 0 0 0 0 0  0  0  0  0  -1 |

o28 : Matrix
i29 : assert(source h2_2 != target h2_2)

Interchanging the arguments gives the inverse map.

i30 : h1 = tensorCommutativity(D, C)

           12                                             12
o30 = 0 : S   <----------------------------------------- S   : 0
                 {5} | 1 0 0 0 0 0 0  0  0  0  0  0  |
                 {5} | 0 0 1 0 0 0 0  0  0  0  0  0  |
                 {5} | 0 0 0 0 1 0 0  0  0  0  0  0  |
                 {6} | 0 1 0 0 0 0 0  0  0  0  0  0  |
                 {6} | 0 0 0 1 0 0 0  0  0  0  0  0  |
                 {6} | 0 0 0 0 0 1 0  0  0  0  0  0  |
                 {9} | 0 0 0 0 0 0 -1 0  0  0  0  0  |
                 {9} | 0 0 0 0 0 0 0  0  -1 0  0  0  |
                 {9} | 0 0 0 0 0 0 0  0  0  0  -1 0  |
                 {9} | 0 0 0 0 0 0 0  -1 0  0  0  0  |
                 {9} | 0 0 0 0 0 0 0  0  0  -1 0  0  |
                 {9} | 0 0 0 0 0 0 0  0  0  0  0  -1 |

           12                                       12
      1 : S   <----------------------------------- S   : 1
                 {7} | 0 0 0 0 0 0 1 0 0 0 0 0 |
                 {7} | 0 0 0 0 0 0 0 0 1 0 0 0 |
                 {7} | 0 0 0 0 0 0 0 0 0 0 1 0 |
                 {8} | 0 0 0 0 0 0 0 1 0 0 0 0 |
                 {8} | 0 0 0 0 0 0 0 0 0 1 0 0 |
                 {8} | 0 0 0 0 0 0 0 0 0 0 0 1 |
                 {7} | 1 0 0 0 0 0 0 0 0 0 0 0 |
                 {7} | 0 0 1 0 0 0 0 0 0 0 0 0 |
                 {7} | 0 0 0 0 1 0 0 0 0 0 0 0 |
                 {7} | 0 1 0 0 0 0 0 0 0 0 0 0 |
                 {7} | 0 0 0 1 0 0 0 0 0 0 0 0 |
                 {7} | 0 0 0 0 0 1 0 0 0 0 0 0 |

o30 : ZZdFactorizationMap
i31 : assert isFactorizationMorphism h1
i32 : assert(h1*f == id_(C**D))
i33 : assert(f*h1 == id_(D**C))

Caveat

This method will still run when the factorizations have period > 2, but the resulting map will not be a well-defined morphism of factorizations.

See also

Ways to use this method:


The source of this document is in MatrixFactorizations/MatrixFactorizationsDOC.m2:4788:0.