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

MatrixFactorizations -- A package for creating and computing objects in the category of ZZ/d-graded factorizations, such as matrix factorizations

Description

A ZZ/d-graded factorization F of a ring element f is a ZZ/d-graded complex of free R-modules equipped with a degree -1 (mod d) endomorphism $\text{d}^F$ such that $(\text{d}^F)^d = f * id_F$. In practice, a ZZdFactorization may be visualized as a sequence of R-module maps:

$$F_0 \leftarrow F_1 \leftarrow \cdots \leftarrow F_{d-1}$$

with the caveat that $d^F_0 : F_0 \to F_{d-1}$, since one should count degree modulo d. Any 2-periodic complex may be reinterpretted as a ZZ/2-graded factorization of 0, and likewise a matrix factorization of a ring element f is equivalently a ZZ/2-graded factorization of f. Because of their similarity with complexes, much of the functionality and syntax for this package closely resembles the Complexes package, with some key differences.

Firstly, the output string of a ZZdFactorization and ZZdFactorizationMap is meant to illustrate the periodic nature of a ZZ/d-graded factorization.

i1 : S = ZZ/101[a..c];
i2 : K = koszulMF({a,b,c}, a^2 + b^2 + c^2)

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

o2 : ZZdFactorization
i3 : diffs = K.dd

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

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

o3 : ZZdFactorizationMap
i4 : K.dd^2

          4                                               4
o4 = 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 |

o4 : ZZdFactorizationMap

A ZZ/d-graded factorization does not have a concentration, but instead has a period. The period is a very important invariant, since almost all of the methods implemented depend on the period of the factorization, and will give legitimately different outputs as the period varies.

i5 : period K

o5 = 2
i6 : K' = linearMF(a^3 + b^3 + c^3, t) --we have to adjoin a root of unity t

     /   S[t]   \9     /   S[t]   \9     /   S[t]   \9     /   S[t]   \9
o6 = |----------|  <-- |----------|  <-- |----------|  <-- |----------|
     | 2        |      | 2        |      | 2        |      | 2        |
     \t  + t + 1/      \t  + t + 1/      \t  + t + 1/      \t  + t + 1/
                                                            
     0                 1                 2                 0

o6 : ZZdFactorization
i7 : period K'

o7 = 3
i8 : diffs' = K'.dd

         /   S[t]   \9                                                          /   S[t]   \9
o8 = 2 : |----------|  <------------------------------------------------------- |----------|  : 0
         | 2        |     {0, 3} | c 0  0     b  a  0     0     0     0     |   | 2        |
         \t  + t + 1/     {0, 3} | 0 c  0     0  bt a     0     0     0     |   \t  + t + 1/
                          {0, 3} | 0 0  c     a  0  -bt-b 0     0     0     |
                          {0, 3} | 0 0  0     ct 0  0     b     a     0     |
                          {0, 3} | 0 0  0     0  ct 0     0     bt    a     |
                          {0, 3} | 0 0  0     0  0  ct    a     0     -bt-b |
                          {0, 3} | b a  0     0  0  0     -ct-c 0     0     |
                          {0, 3} | 0 bt a     0  0  0     0     -ct-c 0     |
                          {0, 3} | a 0  -bt-b 0  0  0     0     0     -ct-c |

         /   S[t]   \9                                                          /   S[t]   \9
     0 : |----------|  <------------------------------------------------------- |----------|  : 1
         | 2        |     {0, 3} | c 0  0     b  a  0     0     0     0     |   | 2        |
         \t  + t + 1/     {0, 3} | 0 c  0     0  bt a     0     0     0     |   \t  + t + 1/
                          {0, 3} | 0 0  c     a  0  -bt-b 0     0     0     |
                          {0, 3} | 0 0  0     ct 0  0     b     a     0     |
                          {0, 3} | 0 0  0     0  ct 0     0     bt    a     |
                          {0, 3} | 0 0  0     0  0  ct    a     0     -bt-b |
                          {0, 3} | b a  0     0  0  0     -ct-c 0     0     |
                          {0, 3} | 0 bt a     0  0  0     0     -ct-c 0     |
                          {0, 3} | a 0  -bt-b 0  0  0     0     0     -ct-c |

         /   S[t]   \9                                                          /   S[t]   \9
     1 : |----------|  <------------------------------------------------------- |----------|  : 2
         | 2        |     {0, 3} | c 0  0     b  a  0     0     0     0     |   | 2        |
         \t  + t + 1/     {0, 3} | 0 c  0     0  bt a     0     0     0     |   \t  + t + 1/
                          {0, 3} | 0 0  c     a  0  -bt-b 0     0     0     |
                          {0, 3} | 0 0  0     ct 0  0     b     a     0     |
                          {0, 3} | 0 0  0     0  ct 0     0     bt    a     |
                          {0, 3} | 0 0  0     0  0  ct    a     0     -bt-b |
                          {0, 3} | b a  0     0  0  0     -ct-c 0     0     |
                          {0, 3} | 0 bt a     0  0  0     0     -ct-c 0     |
                          {0, 3} | a 0  -bt-b 0  0  0     0     0     -ct-c |

o8 : ZZdFactorizationMap
i9 : (diffs')^3

         /   S[t]   \9                                                                                                  /   S[t]   \9
o9 = 0 : |----------|  <----------------------------------------------------------------------------------------------- |----------|  : 0
         | 2        |     {0, 3} | a3+b3+c3 0        0        0        0        0        0        0        0        |   | 2        |
         \t  + t + 1/     {0, 3} | 0        a3+b3+c3 0        0        0        0        0        0        0        |   \t  + t + 1/
                          {0, 3} | 0        0        a3+b3+c3 0        0        0        0        0        0        |
                          {0, 3} | 0        0        0        a3+b3+c3 0        0        0        0        0        |
                          {0, 3} | 0        0        0        0        a3+b3+c3 0        0        0        0        |
                          {0, 3} | 0        0        0        0        0        a3+b3+c3 0        0        0        |
                          {0, 3} | 0        0        0        0        0        0        a3+b3+c3 0        0        |
                          {0, 3} | 0        0        0        0        0        0        0        a3+b3+c3 0        |
                          {0, 3} | 0        0        0        0        0        0        0        0        a3+b3+c3 |

         /   S[t]   \9                                                                                                  /   S[t]   \9
     1 : |----------|  <----------------------------------------------------------------------------------------------- |----------|  : 1
         | 2        |     {0, 3} | a3+b3+c3 0        0        0        0        0        0        0        0        |   | 2        |
         \t  + t + 1/     {0, 3} | 0        a3+b3+c3 0        0        0        0        0        0        0        |   \t  + t + 1/
                          {0, 3} | 0        0        a3+b3+c3 0        0        0        0        0        0        |
                          {0, 3} | 0        0        0        a3+b3+c3 0        0        0        0        0        |
                          {0, 3} | 0        0        0        0        a3+b3+c3 0        0        0        0        |
                          {0, 3} | 0        0        0        0        0        a3+b3+c3 0        0        0        |
                          {0, 3} | 0        0        0        0        0        0        a3+b3+c3 0        0        |
                          {0, 3} | 0        0        0        0        0        0        0        a3+b3+c3 0        |
                          {0, 3} | 0        0        0        0        0        0        0        0        a3+b3+c3 |

         /   S[t]   \9                                                                                                  /   S[t]   \9
     2 : |----------|  <----------------------------------------------------------------------------------------------- |----------|  : 2
         | 2        |     {0, 3} | a3+b3+c3 0        0        0        0        0        0        0        0        |   | 2        |
         \t  + t + 1/     {0, 3} | 0        a3+b3+c3 0        0        0        0        0        0        0        |   \t  + t + 1/
                          {0, 3} | 0        0        a3+b3+c3 0        0        0        0        0        0        |
                          {0, 3} | 0        0        0        a3+b3+c3 0        0        0        0        0        |
                          {0, 3} | 0        0        0        0        a3+b3+c3 0        0        0        0        |
                          {0, 3} | 0        0        0        0        0        a3+b3+c3 0        0        0        |
                          {0, 3} | 0        0        0        0        0        0        a3+b3+c3 0        0        |
                          {0, 3} | 0        0        0        0        0        0        0        a3+b3+c3 0        |
                          {0, 3} | 0        0        0        0        0        0        0        0        a3+b3+c3 |

o9 : ZZdFactorizationMap

As seen in the above, many constructions of factorizations with periods $>2$ require the user to adjoin or specify a primitive root of unity. For an in-depth discussion on all the methods implemented for accomplishing this, see adjoinRoot.

Finally, every factorization (assuming it is well-defined) has an associated potential, which is the polynomial $f$ such that all $d$-fold compositions of the differentials are equal to $f$ times the identity. This potential can be accessed as follows:

i10 : potential K

       2    2    2
o10 = a  + b  + c

o10 : S
i11 : isdFactorization K

              2    2    2
o11 = (true, a  + b  + c )

o11 : Sequence
i12 : potential K'

       3    3    3
o12 = a  + b  + c

         S[t]
o12 : ----------
       2
      t  + t + 1
i13 : isdFactorization K'

              3    3    3
o13 = (true, a  + b  + c )

o13 : Sequence

Much of the syntax and functionality of the types ZZdFactorization and ZZdFactorizationMap are based on current functionalities for the analogous objects in the Complexes package, so there should be essentially no learning curve for users already familiar with working with chain complexes.

See also

Authors

Version

This documentation describes version 0.1 of MatrixFactorizations, released August 13, 2025.

Citation

If you have used this package in your research, please cite it as follows:

@misc{MatrixFactorizationsSource,
  title = {{MatrixFactorizations: computing with matrix factorizations of different lengths. Version~0.1}},
  author = {David Favero and Sasha Pevzner and Timothy Tribone and Keller VandeBogert},
  howpublished = {A \emph{Macaulay2} package available at
    \url{https://github.com/Macaulay2/M2/tree/stable/M2/Macaulay2/packages}}
}

Exports

For the programmer

The object MatrixFactorizations is a package, defined in MatrixFactorizations.m2, with auxiliary files in MatrixFactorizations/.


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