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

branchedToMF -- Converts a maximal Cohen-Macaulay module over a d-fold branched cover into a d-fold factorization

Description

This method converts a maximal Cohen-Macaulay module over a d-fold branched cover into a ZZ/d-graded factorization. This method is designed to try to order the rows and columns of the matrices in such a way that one can deduce the decomposable block structure, should one exist. We first illustrate how to obtain a factorization from a high syzygy of a module over a branched cover. In the following, the zeroOutDegrees function is used to ensure that modules over the resulting branched cover are well-behaved with respect to the pushforward along the natural map $S \to S[z]/(z^d + f)$.

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

o1 = S

o1 : PolynomialRing
i2 : f = a^3 + b^3 + c^3;
i3 : bS = S[z]/(z^2 + f)

o3 = bS

o3 : QuotientRing
i4 : F = freeResolution(ideal(a,b,c,z), LengthLimit => 4)

       1       4       7       9       9
o4 = bS  <-- bS  <-- bS  <-- bS  <-- bS
                                      
     0       1       2       3       4

o4 : Complex
i5 : C = branchedToMF F.dd_4

      8      8      8
o5 = S  <-- S  <-- S
                    
     0      1      0

o5 : ZZdFactorization
i6 : isdFactorization C

               3    3    3
o6 = (true, - a  - b  - c )

o6 : Sequence
i7 : C.dd

          8                                        8
o7 = 1 : S  <------------------------------------ S  : 0
               | 0   0  0   0   a  -b2 c2  0  |
               | 0   0  0   0   -b -a2 0   c2 |
               | 0   0  0   0   c  0   -a2 b2 |
               | 0   0  0   0   0  c   b   a  |
               | -a2 b2 -c2 0   0  0   0   0  |
               | b   a  0   -c2 0  0   0   0  |
               | -c  0  a   -b2 0  0   0   0  |
               | 0   -c -b  -a2 0  0   0   0  |

          8                                        8
     0 : S  <------------------------------------ S  : 1
               | 0   0  0   0   a  -b2 c2  0  |
               | 0   0  0   0   -b -a2 0   c2 |
               | 0   0  0   0   c  0   -a2 b2 |
               | 0   0  0   0   0  c   b   a  |
               | -a2 b2 -c2 0   0  0   0   0  |
               | b   a  0   -c2 0  0   0   0  |
               | -c  0  a   -b2 0  0   0   0  |
               | 0   -c -b  -a2 0  0   0   0  |

o7 : ZZdFactorizationMap
i8 : K = higherHomotopyFactorization(f, koszulComplex vars S)

      4      4      4
o8 = S  <-- S  <-- S
                    
     0      1      0

o8 : ZZdFactorization
i9 : K.dd

          4                        4
o9 = 1 : S  <-------------------- S  : 0
               | a2 -b -c  0  |
               | b2 a  0   -c |
               | c2 0  a   b  |
               | 0  c2 -b2 a2 |

          4                         4
     0 : S  <--------------------- S  : 1
               | a   b   c  0  |
               | -b2 a2  0  c  |
               | -c2 0   a2 -b |
               | 0   -c2 b2 a  |

o9 : ZZdFactorizationMap

In the above example, we see that the factorization obtained by taking a high syzygy of the residue field over the branched cover is remarkably similar to a fold of the factorization obtained by taking a high syzygy of the residue field over the original ring. We can obtain other examples of factorizations by taking other modules:

i10 : F2 = freeResolution(trim (ideal(a,b,c,z))^2, LengthLimit => 4)

        1       9       20       24       24
o10 = bS  <-- bS  <-- bS   <-- bS   <-- bS
                                         
      0       1       2        3        4

o10 : Complex
i11 : C2 = branchedToMF F2.dd_4

       24      24      24
o11 = S   <-- S   <-- S
                       
      0       1       0

o11 : ZZdFactorization
i12 : C2.dd

           24                                                                                                   24
o12 = 1 : S   <----------------------------------------------------------------------------------------------- S   : 0
                 | 0   0  0   0   0   0  0   0   0   0  0   0    a  0  0  -b2 c2  0  0   0   0  0   ac  0  |
                 | 0   0  0   0   0   0  0   0   0   0  0   0    -b 0  0  -a2 0   c2 0   0   0  0   -bc 0  |
                 | 0   0  0   0   0   0  0   0   0   0  0   0    c  0  0  0   -a2 b2 0   0   0  0   c2  0  |
                 | 0   0  0   0   0   0  0   0   0   0  0   0    0  0  0  c   b   a  0   0   0  0   0   0  |
                 | 0   0  0   0   0   0  0   0   0   0  0   0    0  a  0  0   0   0  -b2 c2  0  -ab 0   0  |
                 | 0   0  0   0   0   0  0   0   0   0  0   0    0  -b 0  0   0   0  -a2 0   c2 b2  0   0  |
                 | 0   0  0   0   0   0  0   0   0   0  0   0    0  c  0  0   0   0  0   -a2 b2 -bc 0   0  |
                 | 0   0  0   0   0   0  0   0   0   0  0   0    0  0  0  0   0   0  c   b   a  0   0   0  |
                 | 0   0  0   0   0   0  0   0   0   0  0   0    0  0  a  0   0   0  0   0   0  -b2 c2  0  |
                 | 0   0  0   0   0   0  0   0   0   0  0   0    0  0  -b 0   0   0  0   0   0  -a2 0   c2 |
                 | 0   0  0   0   0   0  0   0   0   0  0   0    0  0  c  0   0   0  0   0   0  0   -a2 b2 |
                 | 0   0  0   0   0   0  0   0   0   0  0   0    0  0  0  0   0   0  0   0   0  c   b   a  |
                 | -a2 b2 -c2 0   0   0  0   0   c2  0  -ac b2c  0  0  0  0   0   0  0   0   0  0   0   0  |
                 | 0   0  0   0   -a2 b2 -c2 0   b2  ab 0   -bc2 0  0  0  0   0   0  0   0   0  0   0   0  |
                 | 0   0  0   0   0   0  0   0   -a2 b2 -c2 0    0  0  0  0   0   0  0   0   0  0   0   0  |
                 | b   a  0   -c2 0   0  0   0   0   0  0   0    0  0  0  0   0   0  0   0   0  0   0   0  |
                 | -c  0  a   -b2 0   0  0   0   0   0  0   0    0  0  0  0   0   0  0   0   0  0   0   0  |
                 | 0   -c -b  -a2 0   0  0   0   0   0  0   0    0  0  0  0   0   0  0   0   0  0   0   0  |
                 | 0   0  0   0   b   a  0   -c2 0   0  0   0    0  0  0  0   0   0  0   0   0  0   0   0  |
                 | 0   0  0   0   -c  0  a   -b2 0   0  0   0    0  0  0  0   0   0  0   0   0  0   0   0  |
                 | 0   0  0   0   0   -c -b  -a2 0   0  0   0    0  0  0  0   0   0  0   0   0  0   0   0  |
                 | 0   0  0   0   0   0  0   0   b   a  0   -c2  0  0  0  0   0   0  0   0   0  0   0   0  |
                 | 0   0  0   0   0   0  0   0   -c  0  a   -b2  0  0  0  0   0   0  0   0   0  0   0   0  |
                 | 0   0  0   0   0   0  0   0   0   -c -b  -a2  0  0  0  0   0   0  0   0   0  0   0   0  |

           24                                                                                                   24
      0 : S   <----------------------------------------------------------------------------------------------- S   : 1
                 | 0   0  0   0   0   0  0   0   0   0  0   0    a  0  0  -b2 c2  0  0   0   0  0   ac  0  |
                 | 0   0  0   0   0   0  0   0   0   0  0   0    -b 0  0  -a2 0   c2 0   0   0  0   -bc 0  |
                 | 0   0  0   0   0   0  0   0   0   0  0   0    c  0  0  0   -a2 b2 0   0   0  0   c2  0  |
                 | 0   0  0   0   0   0  0   0   0   0  0   0    0  0  0  c   b   a  0   0   0  0   0   0  |
                 | 0   0  0   0   0   0  0   0   0   0  0   0    0  a  0  0   0   0  -b2 c2  0  -ab 0   0  |
                 | 0   0  0   0   0   0  0   0   0   0  0   0    0  -b 0  0   0   0  -a2 0   c2 b2  0   0  |
                 | 0   0  0   0   0   0  0   0   0   0  0   0    0  c  0  0   0   0  0   -a2 b2 -bc 0   0  |
                 | 0   0  0   0   0   0  0   0   0   0  0   0    0  0  0  0   0   0  c   b   a  0   0   0  |
                 | 0   0  0   0   0   0  0   0   0   0  0   0    0  0  a  0   0   0  0   0   0  -b2 c2  0  |
                 | 0   0  0   0   0   0  0   0   0   0  0   0    0  0  -b 0   0   0  0   0   0  -a2 0   c2 |
                 | 0   0  0   0   0   0  0   0   0   0  0   0    0  0  c  0   0   0  0   0   0  0   -a2 b2 |
                 | 0   0  0   0   0   0  0   0   0   0  0   0    0  0  0  0   0   0  0   0   0  c   b   a  |
                 | -a2 b2 -c2 0   0   0  0   0   c2  0  -ac b2c  0  0  0  0   0   0  0   0   0  0   0   0  |
                 | 0   0  0   0   -a2 b2 -c2 0   b2  ab 0   -bc2 0  0  0  0   0   0  0   0   0  0   0   0  |
                 | 0   0  0   0   0   0  0   0   -a2 b2 -c2 0    0  0  0  0   0   0  0   0   0  0   0   0  |
                 | b   a  0   -c2 0   0  0   0   0   0  0   0    0  0  0  0   0   0  0   0   0  0   0   0  |
                 | -c  0  a   -b2 0   0  0   0   0   0  0   0    0  0  0  0   0   0  0   0   0  0   0   0  |
                 | 0   -c -b  -a2 0   0  0   0   0   0  0   0    0  0  0  0   0   0  0   0   0  0   0   0  |
                 | 0   0  0   0   b   a  0   -c2 0   0  0   0    0  0  0  0   0   0  0   0   0  0   0   0  |
                 | 0   0  0   0   -c  0  a   -b2 0   0  0   0    0  0  0  0   0   0  0   0   0  0   0   0  |
                 | 0   0  0   0   0   -c -b  -a2 0   0  0   0    0  0  0  0   0   0  0   0   0  0   0   0  |
                 | 0   0  0   0   0   0  0   0   b   a  0   -c2  0  0  0  0   0   0  0   0   0  0   0   0  |
                 | 0   0  0   0   0   0  0   0   -c  0  a   -b2  0  0  0  0   0   0  0   0   0  0   0   0  |
                 | 0   0  0   0   0   0  0   0   0   -c -b  -a2  0  0  0  0   0   0  0   0   0  0   0   0  |

o12 : ZZdFactorizationMap
i13 : M = toBranchedCover(C,z)

o13 = | z   0  0   0   0  0   0   0  0   0  0   0   a  -b2 c2  0  |
      | 0   z  0   0   0  0   0   0  0   0  0   0   -b -a2 0   c2 |
      | 0   0  z   0   0  0   0   0  0   0  0   0   c  0   -a2 b2 |
      | 0   0  0   z   0  0   0   0  0   0  0   0   0  c   b   a  |
      | 0   0  0   0   z  0   0   0  -a2 b2 -c2 0   0  0   0   0  |
      | 0   0  0   0   0  z   0   0  b   a  0   -c2 0  0   0   0  |
      | 0   0  0   0   0  0   z   0  -c  0  a   -b2 0  0   0   0  |
      | 0   0  0   0   0  0   0   z  0   -c -b  -a2 0  0   0   0  |
      | 0   0  0   0   a  -b2 c2  0  -z  0  0   0   0  0   0   0  |
      | 0   0  0   0   -b -a2 0   c2 0   -z 0   0   0  0   0   0  |
      | 0   0  0   0   c  0   -a2 b2 0   0  -z  0   0  0   0   0  |
      | 0   0  0   0   0  c   b   a  0   0  0   -z  0  0   0   0  |
      | -a2 b2 -c2 0   0  0   0   0  0   0  0   0   -z 0   0   0  |
      | b   a  0   -c2 0  0   0   0  0   0  0   0   0  -z  0   0  |
      | -c  0  a   -b2 0  0   0   0  0   0  0   0   0  0   -z  0  |
      | 0   -c -b  -a2 0  0   0   0  0   0  0   0   0  0   0   -z |

             /       S[z]      \16     /       S[z]      \16
o13 : Matrix |-----------------|   <-- |-----------------|
             | 2    3    3    3|       | 2    3    3    3|
             \z  - a  - b  - c /       \z  - a  - b  - c /
i14 : liftM = sub(M, ambient ring M)

o14 = | z   0  0   0   0  0   0   0  0   0  0   0   a  -b2 c2  0  |
      | 0   z  0   0   0  0   0   0  0   0  0   0   -b -a2 0   c2 |
      | 0   0  z   0   0  0   0   0  0   0  0   0   c  0   -a2 b2 |
      | 0   0  0   z   0  0   0   0  0   0  0   0   0  c   b   a  |
      | 0   0  0   0   z  0   0   0  -a2 b2 -c2 0   0  0   0   0  |
      | 0   0  0   0   0  z   0   0  b   a  0   -c2 0  0   0   0  |
      | 0   0  0   0   0  0   z   0  -c  0  a   -b2 0  0   0   0  |
      | 0   0  0   0   0  0   0   z  0   -c -b  -a2 0  0   0   0  |
      | 0   0  0   0   a  -b2 c2  0  -z  0  0   0   0  0   0   0  |
      | 0   0  0   0   -b -a2 0   c2 0   -z 0   0   0  0   0   0  |
      | 0   0  0   0   c  0   -a2 b2 0   0  -z  0   0  0   0   0  |
      | 0   0  0   0   0  c   b   a  0   0  0   -z  0  0   0   0  |
      | -a2 b2 -c2 0   0  0   0   0  0   0  0   0   -z 0   0   0  |
      | b   a  0   -c2 0  0   0   0  0   0  0   0   0  -z  0   0  |
      | -c  0  a   -b2 0  0   0   0  0   0  0   0   0  0   -z  0  |
      | 0   -c -b  -a2 0  0   0   0  0   0  0   0   0  0   0   -z |

                   16           16
o14 : Matrix (S[z])   <-- (S[z])
i15 : prune ker liftM == 0 --this implies that the cokernel is MCM over the hypersurface

o15 = true

This method works for d-fold factorizations with d > 2 in the same way:

i16 : Q = adjoinRoot(4, zeroOutDegrees (ZZ/101[a..b]), t)

o16 = Q

o16 : QuotientRing
i17 : g = a^4+b^4

       4    4
o17 = a  + b

       ZZ
o17 : ---[a..b]
      101
i18 : bQ = Q[z]/(z^4 + g)

o18 = bQ

o18 : QuotientRing
i19 : G = freeResolution(ideal(a,b,z), LengthLimit => 3)

        1       3       4       4
o19 = bQ  <-- bQ  <-- bQ  <-- bQ
                               
      0       1       2       3

o19 : Complex
i20 : D = branchedToMF G.dd_3

       8      8      8      8      8
o20 = Q  <-- Q  <-- Q  <-- Q  <-- Q
                                   
      0      1      2      3      0

o20 : ZZdFactorization
i21 : D.dd

           8                                 8
o21 = 3 : Q  <----------------------------- Q  : 0
                | 0  0   0 0 0 0 -a3 b3 |
                | 0  0   0 0 0 0 b   a  |
                | a  -b3 0 0 0 0 0   0  |
                | -b -a3 0 0 0 0 0   0  |
                | 0  0   1 0 0 0 0   0  |
                | 0  0   0 1 0 0 0   0  |
                | 0  0   0 0 1 0 0   0  |
                | 0  0   0 0 0 1 0   0  |

           8                                 8
      0 : Q  <----------------------------- Q  : 1
                | 0  0   0 0 0 0 -a3 b3 |
                | 0  0   0 0 0 0 b   a  |
                | a  -b3 0 0 0 0 0   0  |
                | -b -a3 0 0 0 0 0   0  |
                | 0  0   1 0 0 0 0   0  |
                | 0  0   0 1 0 0 0   0  |
                | 0  0   0 0 1 0 0   0  |
                | 0  0   0 0 0 1 0   0  |

           8                                 8
      1 : Q  <----------------------------- Q  : 2
                | 0  0   0 0 0 0 -a3 b3 |
                | 0  0   0 0 0 0 b   a  |
                | a  -b3 0 0 0 0 0   0  |
                | -b -a3 0 0 0 0 0   0  |
                | 0  0   1 0 0 0 0   0  |
                | 0  0   0 1 0 0 0   0  |
                | 0  0   0 0 1 0 0   0  |
                | 0  0   0 0 0 1 0   0  |

           8                                 8
      2 : Q  <----------------------------- Q  : 3
                | 0  0   0 0 0 0 -a3 b3 |
                | 0  0   0 0 0 0 b   a  |
                | a  -b3 0 0 0 0 0   0  |
                | -b -a3 0 0 0 0 0   0  |
                | 0  0   1 0 0 0 0   0  |
                | 0  0   0 1 0 0 0   0  |
                | 0  0   0 0 1 0 0   0  |
                | 0  0   0 0 0 1 0   0  |

o21 : ZZdFactorizationMap

In this case, we obtain something that looks like a fold of the Koszul factorization of the potential, but padded with additional identity maps so that the resulting period is 4.

See also

Ways to use branchedToMF:

  • branchedToMF(Matrix)
  • branchedToMF(Matrix,Ring)
  • branchedToMF(Module)
  • branchedToMF(Module,Ring)

For the programmer

The object branchedToMF is a method function.


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