These methods implement the base change of rings. As input, one can either give a ring map $\phi$, or the ring $S$ (when there is a canonical map from $R$ to $S$).
i1 : R = QQ[x,y,z];
|
i2 : S = QQ[s,t];
|
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 : assert isWellDefined D
|
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
|
i15 : use R
o15 = R
o15 : PolynomialRing
|
i16 : I = ideal(x*y, x*z, y*z);
o16 : Ideal of R
|
i17 : J = I + ideal(x^2, y^2);
o17 : Ideal of R
|
i18 : g = inducedMap(module J, module I)
o18 = {2} | 1 0 0 |
{2} | 0 1 0 |
{2} | 0 0 1 |
{2} | 0 0 0 |
{2} | 0 0 0 |
o18 : Matrix
|
i19 : assert isWellDefined g
|
i20 : C = complex {g}
o20 = image | xy xz yz x2 y2 | <-- image | xy xz yz |
0 1
o20 : Complex
|
i21 : D1 = phi C
o21 = image | s2+st st st+t2 s2 s2+2st+t2 | <-- image | s2+st st st+t2 |
0 1
o21 : Complex
|
i22 : assert isWellDefined D1
|
i23 : D2 = phi ** C
o23 = image | s2+st st st+t2 s2 s2+2st+t2 | <-- image | s2+st st st+t2 |
0 1
o23 : Complex
|
i24 : assert isWellDefined D2
|
i25 : prune D1
o25 = cokernel {2} | s+t t | <-- cokernel {2} | -t -t |
{2} | 0 -s-t | {2} | s+t 0 |
{2} | -t s-t | {2} | 0 s |
0 1
o25 : Complex
|
i26 : prune D2
o26 = cokernel {2} | s+t t | <-- cokernel {2} | -t -t |
{2} | 0 -s-t | {2} | s+t 0 |
{2} | -t s-t | {2} | 0 s |
0 1
o26 : Complex
|
i27 : R = ZZ/101[a..d];
|
i28 : S = ZZ/101[s,t];
|
i29 : f = map(S, R, {s^4, s^3*t, s*t^3, t^4}, DegreeMap => i -> 4*i)
4 3 3 4
o29 = map (S, R, {s , s t, s*t , t })
o29 : RingMap S <-- R
|
i30 : C = freeResolution coker vars R
1 4 6 4 1
o30 = R <-- R <-- R <-- R <-- R
0 1 2 3 4
o30 : Complex
|
i31 : D = f ** C
1 4 6 4 1
o31 = S <-- S <-- S <-- S <-- S
0 1 2 3 4
o31 : Complex
|
i32 : D == f C
o32 = true
|
i33 : assert isWellDefined D
|
i34 : assert isHomogeneous D
|
i35 : prune HH D
o35 = 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
o35 : Complex
|
i36 : C1 = Hom(C, image vars R)
o36 = image {-4} | d c b a | <-- image {-3} | d c b a 0 0 0 0 0 0 0 0 0 0 0 0 | <-- image {-2} | d c b a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | <-- image {-1} | d c b a 0 0 0 0 0 0 0 0 0 0 0 0 | <-- image | d c b a |
{-3} | 0 0 0 0 d c b a 0 0 0 0 0 0 0 0 | {-2} | 0 0 0 0 d c b a 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {-1} | 0 0 0 0 d c b a 0 0 0 0 0 0 0 0 |
-4 {-3} | 0 0 0 0 0 0 0 0 d c b a 0 0 0 0 | {-2} | 0 0 0 0 0 0 0 0 d c b a 0 0 0 0 0 0 0 0 0 0 0 0 | {-1} | 0 0 0 0 0 0 0 0 d c b a 0 0 0 0 | 0
{-3} | 0 0 0 0 0 0 0 0 0 0 0 0 d c b a | {-2} | 0 0 0 0 0 0 0 0 0 0 0 0 d c b a 0 0 0 0 0 0 0 0 | {-1} | 0 0 0 0 0 0 0 0 0 0 0 0 d c b a |
{-2} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 d c b a 0 0 0 0 |
-3 {-2} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 d c b a | -1
-2
o36 : Complex
|
i37 : D1 = f ** C1
o37 = image {-16} | t4 st3 s3t s4 | <-- image {-12} | t4 st3 s3t s4 0 0 0 0 0 0 0 0 0 0 0 0 | <-- image {-8} | t4 st3 s3t s4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | <-- image {-4} | t4 st3 s3t s4 0 0 0 0 0 0 0 0 0 0 0 0 | <-- image | t4 st3 s3t s4 |
{-12} | 0 0 0 0 t4 st3 s3t s4 0 0 0 0 0 0 0 0 | {-8} | 0 0 0 0 t4 st3 s3t s4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 | {-4} | 0 0 0 0 t4 st3 s3t s4 0 0 0 0 0 0 0 0 |
-4 {-12} | 0 0 0 0 0 0 0 0 t4 st3 s3t s4 0 0 0 0 | {-8} | 0 0 0 0 0 0 0 0 t4 st3 s3t s4 0 0 0 0 0 0 0 0 0 0 0 0 | {-4} | 0 0 0 0 0 0 0 0 t4 st3 s3t s4 0 0 0 0 | 0
{-12} | 0 0 0 0 0 0 0 0 0 0 0 0 t4 st3 s3t s4 | {-8} | 0 0 0 0 0 0 0 0 0 0 0 0 t4 st3 s3t s4 0 0 0 0 0 0 0 0 | {-4} | 0 0 0 0 0 0 0 0 0 0 0 0 t4 st3 s3t s4 |
{-8} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 t4 st3 s3t s4 0 0 0 0 |
-3 {-8} | 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 t4 st3 s3t s4 | -1
-2
o37 : Complex
|
i38 : isWellDefined D1
o38 = true
|
i39 : assert isHomogeneous D1
|