The map $f : C \to D$ of chain complexes over the ring $S$ induces the map $h = Hom(f, S^1) : Hom(D, S^1) \to Hom(C,S^1)$ defined by $\phi \mapsto \phi f$.
i1 : S = ZZ/101[a..c]
o1 = S
o1 : PolynomialRing
|
i2 : C = freeResolution coker vars S
1 3 3 1
o2 = S <-- S <-- S <-- S
0 1 2 3
o2 : Complex
|
i3 : D = (freeResolution coker matrix{{a^2,a*b,b^3}})[-1]
1 3 2
o3 = S <-- S <-- S
1 2 3
o3 : Complex
|
i4 : f = randomComplexMap(D,C)
1
o4 = 0 : 0 <----- S : 0
0
1 3
1 : S <-------------------------------------------- S : 1
| 24a-36b-30c -29a+19b+19c -10a-29b-8c |
3 3
2 : S <----------------------- S : 2
{2} | -22 -24 -16 |
{2} | -29 -38 39 |
{3} | 0 0 0 |
2 1
3 : S <-------------- S : 3
{3} | 21 |
{4} | 0 |
o4 : ComplexMap
|
i5 : h = dual f
1 2
o5 = -3 : S <----------------- S : -3
{-3} | 21 0 |
3 3
-2 : S <---------------------- S : -2
{-2} | -22 -29 0 |
{-2} | -24 -38 0 |
{-2} | -16 39 0 |
3 1
-1 : S <------------------------- S : -1
{-1} | 24a-36b-30c |
{-1} | -29a+19b+19c |
{-1} | -10a-29b-8c |
o5 : ComplexMap
|
i6 : assert isWellDefined h
|
i7 : assert(h == Hom(f, S^1))
|
i8 : assert(source h == Hom(D,S^1))
|
i9 : assert(target h == Hom(C,S^1))
|