To directly obtain the $n$-th map in $h$, use HH_n f or HH^n f. By definition HH^n f === HH_(-n) f. This can be more efficient, as it will compute only the desired induced map. Note that this method does not check whether the differentials in the factorization compose to 0, so the user should verify this for themselves using isZZdComplex or a direct check.
i1 : S = ZZ/101[a,b];
|
i2 : R = S/(a^3+b^3);
|
i3 : m = ideal vars R
o3 = ideal (a, b)
o3 : Ideal of R
|
i4 : C = tailMF m
2 2 2
o4 = S <-- S <-- S
0 1 0
o4 : ZZdFactorization
|
i5 : D = tailMF (m^2)
3 3 3
o5 = S <-- S <-- S
0 1 0
o5 : ZZdFactorization
|
i6 : f = randomFactorizationMap(D,C, Cycle => true, InternalDegree => 1)
3 2
o6 = 0 : S <----------------------- S : 0
{3} | 36 24a-30b |
{3} | 30 36a+24b |
{3} | 24 -30a-36b |
3 2
1 : S <------------------- S : 1
{5} | 36 24 |
{5} | -30 -36 |
{5} | 24 -30 |
o6 : ZZdFactorizationMap
|
i7 : g = Hom(f,C)
8 12
o7 = 0 : S <-------------------------------------------------------------------------------------- S : 0
{0} | -36 0 -30 0 -24 0 0 0 0 0 0 0 |
{1} | 0 -36 0 -30 0 -24 0 0 0 0 0 0 |
{-1} | -24a+30b 0 -36a-24b 0 30a+36b 0 0 0 0 0 0 0 |
{0} | 0 -24a+30b 0 -36a-24b 0 30a+36b 0 0 0 0 0 0 |
{0} | 0 0 0 0 0 0 -36 0 30 0 -24 0 |
{0} | 0 0 0 0 0 0 0 -36 0 30 0 -24 |
{0} | 0 0 0 0 0 0 -24 0 36 0 30 0 |
{0} | 0 0 0 0 0 0 0 -24 0 36 0 30 |
8 12
1 : S <-------------------------------------------------------------------------------------- S : 1
{2} | -36 0 -30 0 -24 0 0 0 0 0 0 0 |
{2} | 0 -36 0 -30 0 -24 0 0 0 0 0 0 |
{1} | -24a+30b 0 -36a-24b 0 30a+36b 0 0 0 0 0 0 0 |
{1} | 0 -24a+30b 0 -36a-24b 0 30a+36b 0 0 0 0 0 0 |
{-2} | 0 0 0 0 0 0 -36 0 30 0 -24 0 |
{-1} | 0 0 0 0 0 0 0 -36 0 30 0 -24 |
{-2} | 0 0 0 0 0 0 -24 0 36 0 30 0 |
{-1} | 0 0 0 0 0 0 0 -24 0 36 0 30 |
o7 : ZZdFactorizationMap
|
i8 : assert isCommutative g
|
i9 : (isZZdComplex source g, isZZdComplex target g)
o9 = (true, true)
o9 : Sequence
|
i10 : h = HH(g)
o10 = 0 : subquotient ({0} | 1 0 -b 0 |, {0} | a2 -b2 0 0 a 0 -b 0 |) <----------------------------- subquotient ({-1} | -a -b a 0 0 -b |, {-1} | a2 -b2 0 0 0 0 a 0 b 0 0 0 |) : 0
{1} | 0 1 0 0 | {1} | b a 0 0 0 a 0 -b | {0} | 0 0 0 0 0 0 | {0} | 0 0 0 0 1 0 | {0} | b a 0 0 0 0 0 a 0 b 0 0 |
{-1} | 0 -ab a2 -b2 | {-1} | 0 0 a2 -b2 b2 0 a2 0 | {1} | 0 0 -30 0 -36 -24 | {-1} | 0 a 0 b -b 0 | {-1} | 0 0 a2 -b2 0 0 0 0 -a 0 b 0 |
{0} | 1 0 0 a | {0} | 0 0 b a 0 b2 0 a2 | {1} | 0 0 0 0 0 0 | {0} | 0 0 1 0 0 0 | {0} | 0 0 b a 0 0 0 0 0 -a 0 b |
{0} | 1 0 0 0 | {0} | a2 0 b 0 a b2 0 0 | {1} | 0 0 0 0 0 0 | {-1} | b 0 0 a 0 0 | {-1} | 0 0 0 0 a2 -b2 -b 0 0 0 a 0 |
{0} | 0 a 0 b | {0} | 0 a2 0 b -b a2 0 0 | {0} | 0 0 0 0 0 1 | {0} | 0 0 0 0 b a 0 -b 0 0 0 a |
{0} | 0 -b a 0 | {0} | -b2 0 a 0 0 0 a b2 | {-1} | -a 0 a 0 0 -b | {-1} | a2 0 ab 0 -b2 0 a b2 0 0 0 0 |
{0} | 1 0 -b a | {0} | 0 -b2 0 a 0 0 -b a2 | {-1} | b 0 0 0 a 0 | {-1} | 0 a2 0 ab 0 -b2 -b a2 0 0 0 0 |
{-1} | 0 -a 0 0 b 0 | {-1} | b2 0 -a2 0 ab 0 0 0 a b2 0 0 |
{-1} | 0 b -a 0 0 b | {-1} | 0 b2 0 -a2 0 ab 0 0 -b a2 0 0 |
{-1} | 0 0 b a 0 0 | {-1} | ab 0 b2 0 a2 0 0 0 0 0 a b2 |
{-1} | 0 0 0 -b b a | {-1} | 0 ab 0 b2 0 a2 0 0 0 0 -b a2 |
1 : subquotient ({2} | 0 0 1 a |, {2} | -a -b2 0 0 a 0 -b 0 |) <---------------------------- subquotient ({1} | -1 0 0 0 0 -a |, {1} | -a -b2 0 0 0 0 a 0 b 0 0 0 |) : 1
{2} | -1 0 0 -b | {2} | b -a2 0 0 0 a 0 -b | {2} | 30 -36 -24 0 0 0 | {1} | 0 -1 0 -a 0 b | {1} | b -a2 0 0 0 0 0 a 0 b 0 0 |
{1} | -b a 0 0 | {1} | 0 0 -a -b2 b2 0 a2 0 | {2} | 0 0 0 0 0 0 | {1} | 0 0 -1 0 a 0 | {1} | 0 0 -a -b2 0 0 0 0 -a 0 b 0 |
{1} | 0 -b -a 0 | {1} | 0 0 b -a2 0 b2 0 a2 | {2} | 36 -24 30 0 0 0 | {1} | 1 0 0 0 -b 0 | {1} | 0 0 b -a2 0 0 0 0 0 -a 0 b |
{-2} | 0 -b -a -a2 | {-2} | a2 0 b 0 -a2 b2 0 0 | {3} | 0 0 0 0 0 0 | {1} | 0 1 0 0 0 0 | {1} | 0 0 0 0 -a -b2 -b 0 0 0 a 0 |
{-1} | 1 0 0 0 | {-1} | 0 a2 0 b -b -a 0 0 | {1} | 0 0 -1 b 0 0 | {1} | 0 0 0 0 b -a2 0 -b 0 0 0 a |
{-2} | b -a 0 b2 | {-2} | -b2 0 a 0 0 0 -a2 b2 | {-3} | a 0 b -b2 -ab a2 | {-3} | a2 0 ab 0 -b2 0 -a2 b2 0 0 0 0 |
{-1} | 0 0 1 0 | {-1} | 0 -b2 0 a 0 0 -b -a | {-2} | 0 1 0 a 0 0 | {-2} | 0 a2 0 ab 0 -b2 -b -a 0 0 0 0 |
{-3} | 0 -b -a 0 a2 b2 | {-3} | b2 0 -a2 0 ab 0 0 0 -a2 b2 0 0 |
{-2} | 1 0 0 0 0 0 | {-2} | 0 b2 0 -a2 0 ab 0 0 -b -a 0 0 |
{-3} | b -a 0 0 -b2 ab | {-3} | ab 0 b2 0 a2 0 0 0 0 0 -a2 b2 |
{-2} | 0 0 1 0 0 0 | {-2} | 0 ab 0 b2 0 a2 0 0 0 0 -b -a |
o10 : ZZdFactorizationMap
|
i11 : assert isWellDefined h
|
i12 : prune h
o12 = 0 : cokernel | b a 0 0 | <------------------- cokernel | b a 0 0 0 0 | : 0
| 0 0 b a | | 0 0 0 | | 0 0 b a 0 0 |
| -30 -36 -24 | | 0 0 0 0 b a |
1 : cokernel | b a 0 0 | <------------------ cokernel | b a 0 0 0 0 | : 1
| 0 0 b a | | 30 -36 -24 | | 0 0 b a 0 0 |
| 36 -24 30 | | 0 0 0 0 b a |
o12 : ZZdFactorizationMap
|
i13 : assert(source h == HH Hom(D,C))
|
i14 : assert(target h == HH Hom(C,C))
|
i15 : f2 = randomFactorizationMap(C, D, Cycle => true, Degree => 1, InternalDegree => 1)
2 3
o15 = 1 : S <----------------------- S : 0
{4} | 29 -19 19 |
{4} | -19 -29 -19 |
2 3
0 : S <-------------------------------------- S : 1
{2} | -29a+19b -19a-19b -19a-29b |
{3} | 19 -29 19 |
o15 : ZZdFactorizationMap
|
i16 : h2 = HH Hom(C,f2)
o16 = 1 : subquotient ({2} | 0 0 1 a |, {2} | -a -b2 0 0 a 0 -b 0 |) <---------------------------- subquotient ({1} | 0 -1 0 a 0 0 |, {1} | a2 b2 ab 0 0 0 a 0 0 -b 0 0 |) : 0
{2} | -1 0 0 -b | {2} | b -a2 0 0 0 a 0 -b | {2} | -19 19 29 0 0 0 | {1} | 0 0 -1 0 -a 0 | {1} | ab -a2 b2 0 0 0 0 a 0 0 -b 0 |
{1} | -b a 0 0 | {1} | 0 0 -a -b2 b2 0 a2 0 | {2} | 0 0 0 0 0 0 | {1} | 1 0 0 0 0 -a | {1} | -b2 ab a2 0 0 0 0 0 a 0 0 -b |
{1} | 0 -b -a 0 | {1} | 0 0 b -a2 0 b2 0 a2 | {2} | -19 29 -19 0 0 0 | {0} | a 0 b b2 0 0 | {0} | 0 0 0 a2 b2 ab b2 0 0 a2 0 0 |
{-2} | 0 -b -a -a2 | {-2} | a2 0 b 0 -a2 b2 0 0 | {3} | 0 0 0 0 0 0 | {0} | b -a 0 0 -b2 0 | {0} | 0 0 0 ab -a2 b2 0 b2 0 0 a2 0 |
{-1} | 1 0 0 0 | {-1} | 0 a2 0 b -b -a 0 0 | {0} | 0 b a 0 0 -b2 | {0} | 0 0 0 -b2 ab a2 0 0 b2 0 0 a2 |
{-2} | b -a 0 b2 | {-2} | -b2 0 a 0 0 0 -a2 b2 | {1} | 0 -1 0 a 0 b | {1} | a2 0 0 b 0 0 a 0 -b 0 0 0 |
{-1} | 0 0 1 0 | {-1} | 0 -b2 0 a 0 0 -b -a | {1} | 0 0 1 b a 0 | {1} | 0 a2 0 0 b 0 b -a 0 0 0 0 |
{1} | 1 0 0 0 -b -a | {1} | 0 0 a2 0 0 b 0 b a 0 0 0 |
{1} | 1 0 0 0 0 0 | {1} | -b2 0 0 a 0 0 0 0 0 a 0 -b |
{1} | 0 1 0 0 0 0 | {1} | 0 -b2 0 0 a 0 0 0 0 b -a 0 |
{1} | 0 0 1 0 0 0 | {1} | 0 0 -b2 0 0 a 0 0 0 0 b a |
0 : subquotient ({0} | 1 0 -b 0 |, {0} | a2 -b2 0 0 a 0 -b 0 |) <---------------------------- subquotient ({3} | 0 0 0 0 1 0 |, {3} | -a 0 b 0 0 0 a 0 0 -b 0 0 |) : 1
{1} | 0 1 0 0 | {1} | b a 0 0 0 a 0 -b | {0} | 0 0 0 0 0 0 | {3} | 1 0 0 0 0 0 | {3} | -b a 0 0 0 0 0 a 0 0 -b 0 |
{-1} | 0 -ab a2 -b2 | {-1} | 0 0 a2 -b2 b2 0 a2 0 | {1} | 29 0 -19 0 -19 0 | {3} | 0 0 1 0 0 0 | {3} | 0 -b -a 0 0 0 0 0 a 0 0 -b |
{0} | 1 0 0 a | {0} | 0 0 b a 0 b2 0 a2 | {1} | 0 0 0 0 0 0 | {2} | -b a -a 0 0 -b | {2} | 0 0 0 -a 0 b b2 0 0 a2 0 0 |
{0} | 1 0 0 0 | {0} | a2 0 b 0 a b2 0 0 | {1} | 0 0 0 0 0 0 | {2} | 0 b 0 -a a 0 | {2} | 0 0 0 -b a 0 0 b2 0 0 a2 0 |
{0} | 0 a 0 b | {0} | 0 a2 0 b -b a2 0 0 | {2} | 0 0 0 b 0 a | {2} | 0 0 0 0 -b -a 0 0 b2 0 0 a2 |
{0} | 0 -b a 0 | {0} | -b2 0 a 0 0 0 a b2 | {-1} | 0 -b 0 0 -a 0 | {-1} | a2 0 0 b 0 0 -a2 -b2 -ab 0 0 0 |
{0} | 1 0 -b a | {0} | 0 -b2 0 a 0 0 -b a2 | {-1} | a 0 0 -b 0 0 | {-1} | 0 a2 0 0 b 0 -ab a2 -b2 0 0 0 |
{-1} | -b 0 -a 0 0 -b | {-1} | 0 0 a2 0 0 b b2 -ab -a2 0 0 0 |
{-1} | b -a a 0 0 0 | {-1} | -b2 0 0 a 0 0 0 0 0 -a2 -b2 -ab |
{-1} | 0 0 b -a a 0 | {-1} | 0 -b2 0 0 a 0 0 0 0 -ab a2 -b2 |
{-1} | 0 0 0 0 -b -a | {-1} | 0 0 -b2 0 0 a 0 0 0 b2 -ab -a2 |
o16 : ZZdFactorizationMap
|
i17 : assert isWellDefined h2
|
i18 : prune h2
o18 = 1 : cokernel | b a 0 0 | <------------------ cokernel | b a 0 0 0 0 | : 0
| 0 0 b a | | -19 19 29 | | 0 0 b a 0 0 |
| -19 29 -19 | | 0 0 0 0 b a |
0 : cokernel | b a 0 0 | <------------------ cokernel | b a 0 0 0 0 | : 1
| 0 0 b a | | 0 0 0 | | 0 0 b a 0 0 |
| 29 -19 -19 | | 0 0 0 0 b a |
o18 : ZZdFactorizationMap
|