Macaulay2 » Documentation
Packages » MatrixFactorizations :: ZZdFactorization ** ZZdFactorization
next | previous | forward | backward | up | index | toc

ZZdFactorization ** ZZdFactorization -- tensor product of ZZ/d-graded factorizations

Description

The tensor product is a ZZ/d-graded factorization $D$ whose $i$th component is the direct sum of $C1_j \otimes C2_k$ over all $i = j+k \mod d$. The differential on $C1_j \otimes C2_k$ is the differential $dd^{C1} \otimes id_{C2} + t^j id_{C1} \otimes dd^{C2}$, where $t$ is some primitive $d$th root of unity (assuming both factorizations have period $d$).

The use of a primitive $d$th root of unity adds some subtlety to this construction, since for $d > 2$ the user may need to adjoin a root of unity using the adjoinRoot command. In general, if $C1$ is a factorizations of $f$ and $C2$ is a factorization of $g$, then the tensor product $C1 \otimes C2$ is a factorization of the sum $f + g$. As the next example illustrates, this allows one to always construct matrix factorizations by taking the tensor product of "trivial" factorizations.

i1 : S = ZZ/101[a..c]

o1 = S

o1 : PolynomialRing
i2 : Ca = ZZdfactorization {a,a}

      1      1      1
o2 = S  <-- S  <-- S
                    
     0      1      0

o2 : ZZdFactorization
i3 : Cb = ZZdfactorization {b,b}

      1      1      1
o3 = S  <-- S  <-- S
                    
     0      1      0

o3 : ZZdFactorization
i4 : Cc = ZZdfactorization {c,c}

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

o4 : ZZdFactorization
i5 : Cab = Cb ** Ca

      2      2      2
o5 = S  <-- S  <-- S
                    
     0      1      0

o5 : ZZdFactorization
i6 : diffs = dd^Cab

          2                2
o6 = 1 : S  <------------ S  : 0
               | a b  |
               | b -a |

          2                2
     0 : S  <------------ S  : 1
               | a b  |
               | b -a |

o6 : ZZdFactorizationMap
i7 : diffs^2

          2                       2
o7 = 0 : S  <------------------- S  : 0
               | a2+b2 0     |
               | 0     a2+b2 |

          2                       2
     1 : S  <------------------- S  : 1
               | a2+b2 0     |
               | 0     a2+b2 |

o7 : ZZdFactorizationMap
i8 : potential Ca

      2
o8 = a

o8 : S
i9 : potential Cb

      2
o9 = b

o9 : S
i10 : potential Cab

       2    2
o10 = a  + b

o10 : S
i11 : Cabc = Cc ** Cab

       4      4      4
o11 = S  <-- S  <-- S
                     
      0      1      0

o11 : ZZdFactorization
i12 : Cc ** Cb ** Ca

       4      4      4
o12 = S  <-- S  <-- S
                     
      0      1      0

o12 : ZZdFactorization
i13 : diffs2 = dd^Cabc

           4                      4
o13 = 1 : S  <------------------ S  : 0
                | a b  c  0  |
                | b -a 0  c  |
                | c 0  -a -b |
                | 0 c  -b a  |

           4                      4
      0 : S  <------------------ S  : 1
                | a b  c  0  |
                | b -a 0  c  |
                | c 0  -a -b |
                | 0 c  -b a  |

o13 : ZZdFactorizationMap
i14 : diffs2^2

           4                                               4
o14 = 0 : S  <------------------------------------------- S  : 0
                | a2+b2+c2 0        0        0        |
                | 0        a2+b2+c2 0        0        |
                | 0        0        a2+b2+c2 0        |
                | 0        0        0        a2+b2+c2 |

           4                                               4
      1 : S  <------------------------------------------- S  : 1
                | a2+b2+c2 0        0        0        |
                | 0        a2+b2+c2 0        0        |
                | 0        0        a2+b2+c2 0        |
                | 0        0        0        a2+b2+c2 |

o14 : ZZdFactorizationMap

Let us see an example of a longer factorization and tensor products of these objects. In the following example, we use the notation $t$ to denote a primitive $3$rd root of unity:

i15 : St = adjoinRoot(3,S,t)

o15 = St

o15 : QuotientRing
i16 : t^3

o16 = 1

o16 : St
i17 : St.rootOfUnity

o17 = t

o17 : St
i18 : D1 = (ZZdfactorization {a,a,a})**St

        1       1       1       1
o18 = St  <-- St  <-- St  <-- St
                               
      0       1       2       0

o18 : ZZdFactorization
i19 : D2 = (ZZdfactorization {b,b,b})**St

        1       1       1       1
o19 = St  <-- St  <-- St  <-- St
                               
      0       1       2       0

o19 : ZZdFactorization
i20 : D12 = D1**D2

        3       3       3       3
o20 = St  <-- St  <-- St  <-- St
                               
      0       1       2       0

o20 : ZZdFactorization
i21 : diffs = D12.dd

            3                       3
o21 = 2 : St  <------------------ St  : 0
                 | b a  0     |
                 | 0 bt a     |
                 | a 0  -bt-b |

            3                       3
      0 : St  <------------------ St  : 1
                 | b a  0     |
                 | 0 bt a     |
                 | a 0  -bt-b |

            3                       3
      1 : St  <------------------ St  : 2
                 | b a  0     |
                 | 0 bt a     |
                 | a 0  -bt-b |

o21 : ZZdFactorizationMap
i22 : diffs^3

            3                              3
o22 = 0 : St  <------------------------- St  : 0
                 | a3+b3 0     0     |
                 | 0     a3+b3 0     |
                 | 0     0     a3+b3 |

            3                              3
      1 : St  <------------------------- St  : 1
                 | a3+b3 0     0     |
                 | 0     a3+b3 0     |
                 | 0     0     a3+b3 |

            3                              3
      2 : St  <------------------------- St  : 2
                 | a3+b3 0     0     |
                 | 0     a3+b3 0     |
                 | 0     0     a3+b3 |

o22 : ZZdFactorizationMap
i23 : potential D1

       3
o23 = a

o23 : St
i24 : potential D2

       3
o24 = b

o24 : St
i25 : potential D12

       3    3
o25 = a  + b

o25 : St

If one of the arguments is a module, it is considered as a ZZ/d-graded factorization concentrated in homological degree 0.

i26 : Cabc ** (S^1/(a,b,c))

o26 = cokernel | a b c 0 0 0 0 0 0 0 0 0 | <-- cokernel | a b c 0 0 0 0 0 0 0 0 0 | <-- cokernel | a b c 0 0 0 0 0 0 0 0 0 |
               | 0 0 0 a b c 0 0 0 0 0 0 |              | 0 0 0 a b c 0 0 0 0 0 0 |              | 0 0 0 a b c 0 0 0 0 0 0 |
               | 0 0 0 0 0 0 a b c 0 0 0 |              | 0 0 0 0 0 0 a b c 0 0 0 |              | 0 0 0 0 0 0 a b c 0 0 0 |
               | 0 0 0 0 0 0 0 0 0 a b c |              | 0 0 0 0 0 0 0 0 0 a b c |              | 0 0 0 0 0 0 0 0 0 a b c |
                                                                                         
      0                                        1                                        0

o26 : ZZdFactorization
i27 : isdFactorization oo

o27 = (true, 0)

o27 : Sequence
i28 : S^2 ** Cabc

       8      8      8
o28 = S  <-- S  <-- S
                     
      0      1      0

o28 : ZZdFactorization

If one of the arguments is a complex, the function will automatically Fold the complex and then take the tensor product. Since we are tensoring with a complex, the potential will remain unchanged.

i29 : K = koszulComplex vars S;
i30 : KCa = K**Ca

       8      8      8
o30 = S  <-- S  <-- S
                     
      0      1      0

o30 : ZZdFactorization
i31 : assert isWellDefined KCa
i32 : potential KCa

       2
o32 = a

o32 : S

Because the tensor product can be regarded as the totalization of a bifactorization, each term of the tensor product comes with pairs of indices, labelling the summands.

i33 : indices Cabc_1

o33 = {{0, 1}, {1, 0}}

o33 : List
i34 : components Cabc_1

        2   2
o34 = {S , S }

o34 : List
i35 : Cabc_1_[{1,0}]

o35 = | 0 0 |
      | 0 0 |
      | 1 0 |
      | 0 1 |

              4      2
o35 : Matrix S  <-- S
i36 : indices Cabc_2

o36 = {{0, 0}, {1, 1}}

o36 : List
i37 : components Cabc_2

        2   2
o37 = {S , S }

o37 : List
i38 : indices D12_0

o38 = {{0, 0}, {1, 2}, {2, 1}}

o38 : List
i39 : indices D12_1

o39 = {{0, 1}, {1, 0}, {2, 2}}

o39 : List
i40 : indices D12_2

o40 = {{0, 2}, {1, 1}, {2, 0}}

o40 : List

Note in the above how the ZZ/d-graded tensor product differs from the standard tensor product of complexes. Since the indices are taken modulo the period, we see that both $\{ 0, 0 \}$ and $\{ 1, 1 \}$ are indices in degree $0$ (and likewise the indices for $D12$ are taken modulo $3$).

See also

Ways to use this method:

  • Complex ** ZZdFactorization
  • Module ** ZZdFactorization
  • ZZdFactorization ** Complex
  • ZZdFactorization ** Module
  • ZZdFactorization ** ZZdFactorization -- tensor product of ZZ/d-graded factorizations

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