We illustrate the image of a complex under a ring map.
i1 : R = QQ[x,y,z] o1 = R o1 : PolynomialRing |
i2 : S = QQ[s,t] o2 = S o2 : PolynomialRing |
i3 : phi = map(S, R, {s, s+t, t}) o3 = map (S, R, {s, s + t, t}) o3 : RingMap S <--- R |
i4 : I = ideal(x^3, x^2*y, x*y^4, y*z^5) 3 2 4 5 o4 = ideal (x , x y, x*y , y*z ) o4 : Ideal of R |
i5 : C = freeResolution I 1 4 4 1 o5 = R <-- R <-- R <-- R 0 1 2 3 o5 : Complex |
i6 : D = phi C 1 4 4 1 o6 = S <-- S <-- S <-- S 0 1 2 3 o6 : Complex |
i7 : isWellDefined D o7 = true |
i8 : dd^D 1 4 o8 = 0 : S <------------------------------------------------ S : 1 | s3 s3+s2t s5+4s4t+6s3t2+4s2t3+st4 st5+t6 | 4 4 1 : S <------------------------------------------------------- S : 2 {3} | -s-t 0 0 0 | {3} | s -s3-3s2t-3st2-t3 -t5 0 | {5} | 0 s 0 -t5 | {6} | 0 0 s2 s4+3s3t+3s2t2+st3 | 4 1 2 : S <----------------------------- S : 3 {4} | 0 | {6} | t5 | {8} | -s3-3s2t-3st2-t3 | {10} | s | o8 : ComplexMap |
i9 : prune HH D o9 = cokernel | s2t s3 st4 t6 | <-- cokernel {7} | s t3 | 0 1 o9 : Complex |
When the ring map doesn't preserve homogeneity, the DegreeMap option is needed to determine the degrees of the image free modules in the complex.
i10 : R = ZZ/101[a..d] o10 = R o10 : PolynomialRing |
i11 : S = ZZ/101[s,t] o11 = S o11 : PolynomialRing |
i12 : phi = map(S, R, {s^4, s^3*t, s*t^3, t^4}, DegreeMap => i -> 4*i) 4 3 3 4 o12 = map (S, R, {s , s t, s*t , t }) o12 : RingMap S <--- R |
i13 : C = freeResolution coker vars R 1 4 6 4 1 o13 = R <-- R <-- R <-- R <-- R 0 1 2 3 4 o13 : Complex |
i14 : D = phi C 1 4 6 4 1 o14 = S <-- S <-- S <-- S <-- S 0 1 2 3 4 o14 : Complex |
i15 : assert isWellDefined D |
i16 : assert isHomogeneous D |
i17 : prune HH D o17 = cokernel | t4 st3 s3t s4 | <-- cokernel {5} | s3 0 t3 0 0 st2 | <-- cokernel {10} | s2 0 0 t2 | {5} | 0 t3 s3 s2t 0 0 | {11} | t s 0 0 | 0 {6} | 0 0 0 t2 st s2 | {11} | 0 0 t s | 1 2 o17 : Complex |
Every term in the complex must be free or a submodule of a free module. Otherwise, use tensor(RingMap,Complex).