i1 : R = ZZ/101[a,b,c,d,e];
|
i2 : I = intersect(ideal(a,b),ideal(c,d,e))
o2 = ideal (b*e, a*e, b*d, a*d, b*c, a*c)
o2 : Ideal of R
|
i3 : C = (dual freeResolution I)[-4]
1 5 9 6 1
o3 = R <-- R <-- R <-- R <-- R
0 1 2 3 4
o3 : Complex
|
i4 : C1 = canonicalTruncation(C, 1, 2)
o4 = image {-4} | d c 0 b 0 0 a 0 0 0 | <-- cokernel {-3} | -b a 0 0 0 0 |
{-4} | e 0 c 0 b 0 0 a 0 0 | {-3} | 0 0 -b a 0 0 |
{-4} | 0 -e d 0 0 b 0 0 a 0 | {-3} | -d 0 c 0 0 0 |
{-4} | 0 0 0 -e d -c 0 0 0 a | {-3} | 0 -d 0 c 0 0 |
{-4} | 0 0 0 0 0 0 e -d c b | {-3} | 0 0 0 0 -b a |
{-3} | -e 0 0 0 c 0 |
1 {-3} | 0 -e 0 0 0 c |
{-3} | 0 0 -e 0 d 0 |
{-3} | 0 0 0 -e 0 d |
2
o4 : Complex
|
i5 : assert isWellDefined C1
|
i6 : HH C1
o6 = subquotient ({-4} | d c 0 b 0 0 a 0 0 0 |, {-4} | d -c -b a 0 0 0 0 0 |) <-- subquotient ({-3} | c b a 0 0 0 0 |, {-3} | -b a 0 0 0 0 |)
{-4} | e 0 c 0 b 0 0 a 0 0 | {-4} | e 0 0 0 -c -b a 0 0 | {-3} | d 0 0 b 0 a 0 | {-3} | 0 0 -b a 0 0 |
{-4} | 0 -e d 0 0 b 0 0 a 0 | {-4} | 0 e 0 0 -d 0 0 -b a | {-3} | 0 d 0 -c 0 0 0 | {-3} | -d 0 c 0 0 0 |
{-4} | 0 0 0 -e d -c 0 0 0 a | {-4} | 0 0 e 0 0 -d 0 c 0 | {-3} | 0 0 -d 0 0 c 0 | {-3} | 0 -d 0 c 0 0 |
{-4} | 0 0 0 0 0 0 e -d c b | {-4} | 0 0 0 e 0 0 -d 0 c | {-3} | e 0 0 0 b 0 a | {-3} | 0 0 0 0 -b a |
{-3} | 0 e 0 0 -c 0 0 | {-3} | -e 0 0 0 c 0 |
1 {-3} | 0 0 -e 0 0 0 c | {-3} | 0 -e 0 0 0 c |
{-3} | 0 0 0 e -d 0 0 | {-3} | 0 0 -e 0 d 0 |
{-3} | 0 0 0 0 0 -e d | {-3} | 0 0 0 -e 0 d |
2
o6 : Complex
|
i7 : naiveTruncation(HH C, 1, 2) == HH C1
o7 = true
|
i8 : prune HH C1
o8 = cokernel {-3} | e d c | <-- cokernel {-2} | b a |
1 2
o8 : Complex
|
i9 : C2 = canonicalTruncation(C, 1, 6)
9 6 1
o9 = image {-4} | d c 0 b 0 0 a 0 0 0 | <-- R <-- R <-- R
{-4} | e 0 c 0 b 0 0 a 0 0 |
{-4} | 0 -e d 0 0 b 0 0 a 0 | 2 3 4
{-4} | 0 0 0 -e d -c 0 0 0 a |
{-4} | 0 0 0 0 0 0 e -d c b |
1
o9 : Complex
|
i10 : assert isWellDefined C2
|
i11 : C3 = canonicalTruncation(C, 1, infinity)
9 6 1
o11 = image {-4} | d c 0 b 0 0 a 0 0 0 | <-- R <-- R <-- R
{-4} | e 0 c 0 b 0 0 a 0 0 |
{-4} | 0 -e d 0 0 b 0 0 a 0 | 2 3 4
{-4} | 0 0 0 -e d -c 0 0 0 a |
{-4} | 0 0 0 0 0 0 e -d c b |
1
o11 : Complex
|
i12 : C2 == C3
o12 = true
|
i13 : C4 = canonicalTruncation(C, -13, 2)
1 5
o13 = R <-- R <-- cokernel {-3} | -b a 0 0 0 0 |
{-3} | 0 0 -b a 0 0 |
0 1 {-3} | -d 0 c 0 0 0 |
{-3} | 0 -d 0 c 0 0 |
{-3} | 0 0 0 0 -b a |
{-3} | -e 0 0 0 c 0 |
{-3} | 0 -e 0 0 0 c |
{-3} | 0 0 -e 0 d 0 |
{-3} | 0 0 0 -e 0 d |
2
o13 : Complex
|
i14 : C5 = canonicalTruncation(C, -infinity, 2)
1 5
o14 = R <-- R <-- cokernel {-3} | -b a 0 0 0 0 |
{-3} | 0 0 -b a 0 0 |
0 1 {-3} | -d 0 c 0 0 0 |
{-3} | 0 -d 0 c 0 0 |
{-3} | 0 0 0 0 -b a |
{-3} | -e 0 0 0 c 0 |
{-3} | 0 -e 0 0 0 c |
{-3} | 0 0 -e 0 d 0 |
{-3} | 0 0 0 -e 0 d |
2
o14 : Complex
|
i15 : C4 == C5
o15 = true
|
i16 : C6 = canonicalTruncation(C, , 2)
1 5
o16 = R <-- R <-- cokernel {-3} | -b a 0 0 0 0 |
{-3} | 0 0 -b a 0 0 |
0 1 {-3} | -d 0 c 0 0 0 |
{-3} | 0 -d 0 c 0 0 |
{-3} | 0 0 0 0 -b a |
{-3} | -e 0 0 0 c 0 |
{-3} | 0 -e 0 0 0 c |
{-3} | 0 0 -e 0 d 0 |
{-3} | 0 0 0 -e 0 d |
2
o16 : Complex
|
i17 : C4 == C6
o17 = true
|
If we truncate only from below, then we get an injection from the truncation into the original complex, whereas if we truncate only from above, we get a surjection onto the truncated complex.
i19 : f = inducedMap(C, C3)
5
o19 = 1 : R <------------------------------------ image {-4} | d c 0 b 0 0 a 0 0 0 | : 1
{-4} | d c 0 b 0 0 a 0 0 0 | {-4} | e 0 c 0 b 0 0 a 0 0 |
{-4} | e 0 c 0 b 0 0 a 0 0 | {-4} | 0 -e d 0 0 b 0 0 a 0 |
{-4} | 0 -e d 0 0 b 0 0 a 0 | {-4} | 0 0 0 -e d -c 0 0 0 a |
{-4} | 0 0 0 -e d -c 0 0 0 a | {-4} | 0 0 0 0 0 0 e -d c b |
{-4} | 0 0 0 0 0 0 e -d c b |
9 9
2 : R <------------------------------ R : 2
{-3} | 1 0 0 0 0 0 0 0 0 |
{-3} | 0 1 0 0 0 0 0 0 0 |
{-3} | 0 0 1 0 0 0 0 0 0 |
{-3} | 0 0 0 1 0 0 0 0 0 |
{-3} | 0 0 0 0 1 0 0 0 0 |
{-3} | 0 0 0 0 0 1 0 0 0 |
{-3} | 0 0 0 0 0 0 1 0 0 |
{-3} | 0 0 0 0 0 0 0 1 0 |
{-3} | 0 0 0 0 0 0 0 0 1 |
6 6
3 : R <------------------------ R : 3
{-2} | 1 0 0 0 0 0 |
{-2} | 0 1 0 0 0 0 |
{-2} | 0 0 1 0 0 0 |
{-2} | 0 0 0 1 0 0 |
{-2} | 0 0 0 0 1 0 |
{-2} | 0 0 0 0 0 1 |
1 1
4 : R <--------- R : 4
| 1 |
o19 : ComplexMap
|
i20 : assert isWellDefined f
|
i21 : assert(ker f == 0)
|
i22 : prune coker f
1
o22 = R <-- cokernel {-4} | d c 0 b 0 0 a 0 0 0 |
{-4} | e 0 c 0 b 0 0 a 0 0 |
0 {-4} | 0 -e d 0 0 b 0 0 a 0 |
{-4} | 0 0 0 -e d -c 0 0 0 a |
{-4} | 0 0 0 0 0 0 e -d c b |
1
o22 : Complex
|
i23 : C7 = canonicalTruncation(C, -infinity, 1)
1
o23 = R <-- cokernel {-4} | d -c -b a 0 0 0 0 0 |
{-4} | e 0 0 0 -c -b a 0 0 |
0 {-4} | 0 e 0 0 -d 0 0 -b a |
{-4} | 0 0 e 0 0 -d 0 c 0 |
{-4} | 0 0 0 e 0 0 -d 0 c |
1
o23 : Complex
|
i24 : C7 != coker f
o24 = true
|
i25 : g = inducedMap(C5, C)
1 1
o25 = 0 : R <-------------- R : 0
{-5} | 1 |
5 5
1 : R <---------------------- R : 1
{-4} | 1 0 0 0 0 |
{-4} | 0 1 0 0 0 |
{-4} | 0 0 1 0 0 |
{-4} | 0 0 0 1 0 |
{-4} | 0 0 0 0 1 |
9
2 : cokernel {-3} | -b a 0 0 0 0 | <------------------------------ R : 2
{-3} | 0 0 -b a 0 0 | {-3} | 1 0 0 0 0 0 0 0 0 |
{-3} | -d 0 c 0 0 0 | {-3} | 0 1 0 0 0 0 0 0 0 |
{-3} | 0 -d 0 c 0 0 | {-3} | 0 0 1 0 0 0 0 0 0 |
{-3} | 0 0 0 0 -b a | {-3} | 0 0 0 1 0 0 0 0 0 |
{-3} | -e 0 0 0 c 0 | {-3} | 0 0 0 0 1 0 0 0 0 |
{-3} | 0 -e 0 0 0 c | {-3} | 0 0 0 0 0 1 0 0 0 |
{-3} | 0 0 -e 0 d 0 | {-3} | 0 0 0 0 0 0 1 0 0 |
{-3} | 0 0 0 -e 0 d | {-3} | 0 0 0 0 0 0 0 1 0 |
{-3} | 0 0 0 0 0 0 0 0 1 |
o25 : ComplexMap
|
i26 : assert isWellDefined g
|
i27 : assert(coker g == 0)
|
i28 : C8 = canonicalTruncation(C, 2, infinity)
6 1
o28 = image {-3} | c b a 0 0 0 0 | <-- R <-- R
{-3} | d 0 0 b 0 a 0 |
{-3} | 0 d 0 -c 0 0 0 | 3 4
{-3} | 0 0 -d 0 0 c 0 |
{-3} | e 0 0 0 b 0 a |
{-3} | 0 e 0 0 -c 0 0 |
{-3} | 0 0 -e 0 0 0 c |
{-3} | 0 0 0 e -d 0 0 |
{-3} | 0 0 0 0 0 -e d |
2
o28 : Complex
|
i29 : prune C8
6 1
o29 = cokernel {-2} | b a | <-- R <-- R
{-2} | -c 0 |
{-2} | 0 -c | 3 4
{-2} | -d 0 |
{-2} | -e 0 |
{-2} | 0 -d |
{-2} | 0 -e |
2
o29 : Complex
|
i30 : prune ker g
6 1
o30 = cokernel {-2} | ac | <-- R <-- R
{-2} | -bc |
{-2} | ad | 3 4
{-2} | ae |
{-2} | -bd |
{-2} | -be |
2
o30 : Complex
|