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
|
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.