Description
The factorization of homomorphisms is a ZZ/d-graded factorization $D$ whose $i$th component is the direct sum of $Hom(C1_j, C2_{k})$ over all $k-j = i \mod d$. The differential on $Hom(C1_j, C2_{k})$ is the differential $Hom(id_{C1}, dd^{C2}) + t^j Hom(dd^{C1}, id_{C2})$ where $t$ is a primitive $d$th root of unity.
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 \texttt{adjoinRoot} command. In general, if $C1$ is a factorizations of $f$ and $C2$ is a factorization of $g$, then the Hom factorization $\operatorname{Hom} (C1,C2)$ is a factorization of the difference $g-f$.
i1 : S = ZZ/101[a..c];
|
i2 : f = a^3 + b^3 + c^3
3 3 3
o2 = a + b + c
o2 : S
|
i3 : C = randomTailMF(f)
6 6 6
o3 = S <-- S <-- S
0 1 0
o3 : ZZdFactorization
|
i4 : D = Hom(C,C)
72 72 72
o4 = S <-- S <-- S
0 1 0
o4 : ZZdFactorization
|
i5 : isZZdComplex D
o5 = true
|
i6 : Q = ZZ/101[x,y];
|
i7 : F = randomLinearMF(2,Q)
4 4 4
o7 = Q <-- Q <-- Q
0 1 0
o7 : ZZdFactorization
|
i8 : E = Hom(F,F)
32 32 32
o8 = Q <-- Q <-- Q
0 1 0
o8 : ZZdFactorization
|
i9 : diffs = E.dd
32 32
o9 = 1 : Q <--------------------------------------------------------------------------------------------------------------------------------------------------------------- Q : 0
| -y 0 -30y -38x 0 0 0 0 0 0 0 0 0 0 0 0 y 0 0 0 0 0 0 0 x 0 0 0 x 0 0 0 |
| 0 -y -x x 0 0 0 0 0 0 0 0 0 0 0 0 0 y 0 0 0 0 0 0 0 x 0 0 0 x 0 0 |
| -x -38x -y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 y 0 0 0 0 0 0 0 x 0 0 0 x 0 |
| -x 30y 0 -y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 y 0 0 0 0 0 0 0 x 0 0 0 x |
| 0 0 0 0 -y 0 -30y -38x 0 0 0 0 0 0 0 0 0 0 0 0 y 0 0 0 38x 0 0 0 -30y 0 0 0 |
| 0 0 0 0 0 -y -x x 0 0 0 0 0 0 0 0 0 0 0 0 0 y 0 0 0 38x 0 0 0 -30y 0 0 |
| 0 0 0 0 -x -38x -y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 y 0 0 0 38x 0 0 0 -30y 0 |
| 0 0 0 0 -x 30y 0 -y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 y 0 0 0 38x 0 0 0 -30y |
| 0 0 0 0 0 0 0 0 -y 0 -30y -38x 0 0 0 0 30y 0 0 0 x 0 0 0 y 0 0 0 0 0 0 0 |
| 0 0 0 0 0 0 0 0 0 -y -x x 0 0 0 0 0 30y 0 0 0 x 0 0 0 y 0 0 0 0 0 0 |
| 0 0 0 0 0 0 0 0 -x -38x -y 0 0 0 0 0 0 0 30y 0 0 0 x 0 0 0 y 0 0 0 0 0 |
| 0 0 0 0 0 0 0 0 -x 30y 0 -y 0 0 0 0 0 0 0 30y 0 0 0 x 0 0 0 y 0 0 0 0 |
| 0 0 0 0 0 0 0 0 0 0 0 0 -y 0 -30y -38x 38x 0 0 0 -x 0 0 0 0 0 0 0 y 0 0 0 |
| 0 0 0 0 0 0 0 0 0 0 0 0 0 -y -x x 0 38x 0 0 0 -x 0 0 0 0 0 0 0 y 0 0 |
| 0 0 0 0 0 0 0 0 0 0 0 0 -x -38x -y 0 0 0 38x 0 0 0 -x 0 0 0 0 0 0 0 y 0 |
| 0 0 0 0 0 0 0 0 0 0 0 0 -x 30y 0 -y 0 0 0 38x 0 0 0 -x 0 0 0 0 0 0 0 y |
| -y 0 0 0 0 0 0 0 x 0 0 0 x 0 0 0 y 0 -30y -38x 0 0 0 0 0 0 0 0 0 0 0 0 |
| 0 -y 0 0 0 0 0 0 0 x 0 0 0 x 0 0 0 y -x x 0 0 0 0 0 0 0 0 0 0 0 0 |
| 0 0 -y 0 0 0 0 0 0 0 x 0 0 0 x 0 -x -38x y 0 0 0 0 0 0 0 0 0 0 0 0 0 |
| 0 0 0 -y 0 0 0 0 0 0 0 x 0 0 0 x -x 30y 0 y 0 0 0 0 0 0 0 0 0 0 0 0 |
| 0 0 0 0 -y 0 0 0 38x 0 0 0 -30y 0 0 0 0 0 0 0 y 0 -30y -38x 0 0 0 0 0 0 0 0 |
| 0 0 0 0 0 -y 0 0 0 38x 0 0 0 -30y 0 0 0 0 0 0 0 y -x x 0 0 0 0 0 0 0 0 |
| 0 0 0 0 0 0 -y 0 0 0 38x 0 0 0 -30y 0 0 0 0 0 -x -38x y 0 0 0 0 0 0 0 0 0 |
| 0 0 0 0 0 0 0 -y 0 0 0 38x 0 0 0 -30y 0 0 0 0 -x 30y 0 y 0 0 0 0 0 0 0 0 |
| 30y 0 0 0 x 0 0 0 -y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 y 0 -30y -38x 0 0 0 0 |
| 0 30y 0 0 0 x 0 0 0 -y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 y -x x 0 0 0 0 |
| 0 0 30y 0 0 0 x 0 0 0 -y 0 0 0 0 0 0 0 0 0 0 0 0 0 -x -38x y 0 0 0 0 0 |
| 0 0 0 30y 0 0 0 x 0 0 0 -y 0 0 0 0 0 0 0 0 0 0 0 0 -x 30y 0 y 0 0 0 0 |
| 38x 0 0 0 -x 0 0 0 0 0 0 0 -y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 y 0 -30y -38x |
| 0 38x 0 0 0 -x 0 0 0 0 0 0 0 -y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 y -x x |
| 0 0 38x 0 0 0 -x 0 0 0 0 0 0 0 -y 0 0 0 0 0 0 0 0 0 0 0 0 0 -x -38x y 0 |
| 0 0 0 38x 0 0 0 -x 0 0 0 0 0 0 0 -y 0 0 0 0 0 0 0 0 0 0 0 0 -x 30y 0 y |
32 32
0 : Q <--------------------------------------------------------------------------------------------------------------------------------------------------- Q : 1
| -y 0 30y 38x 0 0 0 0 0 0 0 0 0 0 0 0 y 0 0 0 0 0 0 0 x 0 0 0 x 0 0 0 |
| 0 -y x -x 0 0 0 0 0 0 0 0 0 0 0 0 0 y 0 0 0 0 0 0 0 x 0 0 0 x 0 0 |
| x 38x -y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 y 0 0 0 0 0 0 0 x 0 0 0 x 0 |
| x -30y 0 -y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 y 0 0 0 0 0 0 0 x 0 0 0 x |
| 0 0 0 0 -y 0 30y 38x 0 0 0 0 0 0 0 0 0 0 0 0 y 0 0 0 38x 0 0 0 -30y 0 0 0 |
| 0 0 0 0 0 -y x -x 0 0 0 0 0 0 0 0 0 0 0 0 0 y 0 0 0 38x 0 0 0 -30y 0 0 |
| 0 0 0 0 x 38x -y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 y 0 0 0 38x 0 0 0 -30y 0 |
| 0 0 0 0 x -30y 0 -y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 y 0 0 0 38x 0 0 0 -30y |
| 0 0 0 0 0 0 0 0 -y 0 30y 38x 0 0 0 0 30y 0 0 0 x 0 0 0 y 0 0 0 0 0 0 0 |
| 0 0 0 0 0 0 0 0 0 -y x -x 0 0 0 0 0 30y 0 0 0 x 0 0 0 y 0 0 0 0 0 0 |
| 0 0 0 0 0 0 0 0 x 38x -y 0 0 0 0 0 0 0 30y 0 0 0 x 0 0 0 y 0 0 0 0 0 |
| 0 0 0 0 0 0 0 0 x -30y 0 -y 0 0 0 0 0 0 0 30y 0 0 0 x 0 0 0 y 0 0 0 0 |
| 0 0 0 0 0 0 0 0 0 0 0 0 -y 0 30y 38x 38x 0 0 0 -x 0 0 0 0 0 0 0 y 0 0 0 |
| 0 0 0 0 0 0 0 0 0 0 0 0 0 -y x -x 0 38x 0 0 0 -x 0 0 0 0 0 0 0 y 0 0 |
| 0 0 0 0 0 0 0 0 0 0 0 0 x 38x -y 0 0 0 38x 0 0 0 -x 0 0 0 0 0 0 0 y 0 |
| 0 0 0 0 0 0 0 0 0 0 0 0 x -30y 0 -y 0 0 0 38x 0 0 0 -x 0 0 0 0 0 0 0 y |
| -y 0 0 0 0 0 0 0 x 0 0 0 x 0 0 0 y 0 30y 38x 0 0 0 0 0 0 0 0 0 0 0 0 |
| 0 -y 0 0 0 0 0 0 0 x 0 0 0 x 0 0 0 y x -x 0 0 0 0 0 0 0 0 0 0 0 0 |
| 0 0 -y 0 0 0 0 0 0 0 x 0 0 0 x 0 x 38x y 0 0 0 0 0 0 0 0 0 0 0 0 0 |
| 0 0 0 -y 0 0 0 0 0 0 0 x 0 0 0 x x -30y 0 y 0 0 0 0 0 0 0 0 0 0 0 0 |
| 0 0 0 0 -y 0 0 0 38x 0 0 0 -30y 0 0 0 0 0 0 0 y 0 30y 38x 0 0 0 0 0 0 0 0 |
| 0 0 0 0 0 -y 0 0 0 38x 0 0 0 -30y 0 0 0 0 0 0 0 y x -x 0 0 0 0 0 0 0 0 |
| 0 0 0 0 0 0 -y 0 0 0 38x 0 0 0 -30y 0 0 0 0 0 x 38x y 0 0 0 0 0 0 0 0 0 |
| 0 0 0 0 0 0 0 -y 0 0 0 38x 0 0 0 -30y 0 0 0 0 x -30y 0 y 0 0 0 0 0 0 0 0 |
| 30y 0 0 0 x 0 0 0 -y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 y 0 30y 38x 0 0 0 0 |
| 0 30y 0 0 0 x 0 0 0 -y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 y x -x 0 0 0 0 |
| 0 0 30y 0 0 0 x 0 0 0 -y 0 0 0 0 0 0 0 0 0 0 0 0 0 x 38x y 0 0 0 0 0 |
| 0 0 0 30y 0 0 0 x 0 0 0 -y 0 0 0 0 0 0 0 0 0 0 0 0 x -30y 0 y 0 0 0 0 |
| 38x 0 0 0 -x 0 0 0 0 0 0 0 -y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 y 0 30y 38x |
| 0 38x 0 0 0 -x 0 0 0 0 0 0 0 -y 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 y x -x |
| 0 0 38x 0 0 0 -x 0 0 0 0 0 0 0 -y 0 0 0 0 0 0 0 0 0 0 0 0 0 x 38x y 0 |
| 0 0 0 38x 0 0 0 -x 0 0 0 0 0 0 0 -y 0 0 0 0 0 0 0 0 0 0 0 0 x -30y 0 y |
o9 : ZZdFactorizationMap
|
i10 : diffs^2
o10 = 0
o10 : ZZdFactorizationMap
|
The homology of $E$ actually computes the stable Ext of the maximal Cohen-Macaulay module defined by the matrix factorization (up to twists).
i11 : R = Q/(potential F)
o11 = R
o11 : QuotientRing
|
i12 : M = coker (F.dd_0**R)
o12 = cokernel {3} | y 0 30y 38x |
{3} | 0 y x -x |
{3} | x 38x y 0 |
{3} | x -30y 0 y |
4
o12 : R-module, quotient of R
|
i13 : prune Ext^1(M,M)
o13 = cokernel {-1} | y x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{-1} | 0 0 y x 0 0 0 0 0 0 0 0 0 0 0 0 |
{-1} | 0 0 0 0 y x 0 0 0 0 0 0 0 0 0 0 |
{-1} | 0 0 0 0 0 0 y x 0 0 0 0 0 0 0 0 |
{-1} | 0 0 0 0 0 0 0 0 y x 0 0 0 0 0 0 |
{-1} | 0 0 0 0 0 0 0 0 0 0 y x 0 0 0 0 |
{-1} | 0 0 0 0 0 0 0 0 0 0 0 0 y x 0 0 |
{-1} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 y x |
8
o13 : R-module, quotient of R
|
i14 : prune Ext^2(M,M)
o14 = cokernel {-2} | y x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{-2} | 0 0 y x 0 0 0 0 0 0 0 0 0 0 0 0 |
{-2} | 0 0 0 0 y x 0 0 0 0 0 0 0 0 0 0 |
{-2} | 0 0 0 0 0 0 y x 0 0 0 0 0 0 0 0 |
{-2} | 0 0 0 0 0 0 0 0 y x 0 0 0 0 0 0 |
{-2} | 0 0 0 0 0 0 0 0 0 0 y x 0 0 0 0 |
{-2} | 0 0 0 0 0 0 0 0 0 0 0 0 y x 0 0 |
{-2} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 y x |
8
o14 : R-module, quotient of R
|
i15 : prune HH E
o15 = cokernel | y x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | <-- cokernel | y x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | <-- cokernel | y x 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
| 0 0 y x 0 0 0 0 0 0 0 0 0 0 0 0 | | 0 0 y x 0 0 0 0 0 0 0 0 0 0 0 0 | | 0 0 y x 0 0 0 0 0 0 0 0 0 0 0 0 |
| 0 0 0 0 y x 0 0 0 0 0 0 0 0 0 0 | | 0 0 0 0 y x 0 0 0 0 0 0 0 0 0 0 | | 0 0 0 0 y x 0 0 0 0 0 0 0 0 0 0 |
| 0 0 0 0 0 0 y x 0 0 0 0 0 0 0 0 | | 0 0 0 0 0 0 y x 0 0 0 0 0 0 0 0 | | 0 0 0 0 0 0 y x 0 0 0 0 0 0 0 0 |
| 0 0 0 0 0 0 0 0 y x 0 0 0 0 0 0 | | 0 0 0 0 0 0 0 0 y x 0 0 0 0 0 0 | | 0 0 0 0 0 0 0 0 y x 0 0 0 0 0 0 |
| 0 0 0 0 0 0 0 0 0 0 y x 0 0 0 0 | | 0 0 0 0 0 0 0 0 0 0 y x 0 0 0 0 | | 0 0 0 0 0 0 0 0 0 0 y x 0 0 0 0 |
| 0 0 0 0 0 0 0 0 0 0 0 0 y x 0 0 | | 0 0 0 0 0 0 0 0 0 0 0 0 y x 0 0 | | 0 0 0 0 0 0 0 0 0 0 0 0 y x 0 0 |
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 y x | | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 y x | | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 y x |
0 1 0
o15 : ZZdFactorization
|
If one of the arguments is a module or a ring, it is considered as a factorization concentrated in degree 0.
i16 : E = Hom(C, S^2)
12 12 12
o16 = S <-- S <-- S
0 1 0
o16 : ZZdFactorization
|
i17 : isdFactorization E
3 3 3
o17 = (true, a + b + c )
o17 : Sequence
|
There is a simple relationship between Hom factorizations and shifts. Specifically, shifting the first argument is the same as the negative shift of the result. But shifting the second argument is only the same as the positive shift of the result up to a sign.
i18 : Hom(C[3], C) == D[-3]
o18 = false
|
i19 : Hom(C, C[-2]) == D[-2]
o19 = true
|
i20 : Hom(C, C[-3]) != D[-3]
o20 = true
|
Specific maps and morphisms between complexes can be obtained with the homomorphism command.
Because the Hom factorization can be regarded as the totalization of a d-periodic double complex, each term comes with pairs of indices, labelling the summands.
i21 : indices D_-1
o21 = {{0, 1}, {1, 0}}
o21 : List
|
i22 : components D_-1
36 36
o22 = {S , S }
o22 : List
|
i23 : indices D_-2
o23 = {{0, 0}, {1, 1}}
o23 : List
|
i24 : components D_-2
36 36
o24 = {S , S }
o24 : List
|