i1 : S = ZZ/101[x_0..x_11]
o1 = S
o1 : PolynomialRing
|
i2 : C = complex{genericMatrix(S,x_0,2,1)}
2 1
o2 = S <-- S
0 1
o2 : Complex
|
i3 : D = complex{genericMatrix(S,x_4,1,2)}
1 2
o3 = S <-- S
0 1
o3 : Complex
|
i4 : E = complex{genericMatrix(S,x_8,2,2)}
2 2
o4 = S <-- S
0 1
o4 : Complex
|
i5 : F = (C ** D) ** E
4 14 14 4
o5 = S <-- S <-- S <-- S
0 1 2 3
o5 : Complex
|
i6 : G = C ** (D ** E)
4 14 14 4
o6 = S <-- S <-- S <-- S
0 1 2 3
o6 : Complex
|
i7 : f = tensorAssociativity(C,D,E)
4 4
o7 = 0 : S <--------------- S : 0
| 1 0 0 0 |
| 0 1 0 0 |
| 0 0 1 0 |
| 0 0 0 1 |
14 14
1 : S <--------------------------------------- S : 1
{1} | 1 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{1} | 0 1 0 0 0 0 0 0 0 0 0 0 0 0 |
{1} | 0 0 0 0 0 0 1 0 0 0 0 0 0 0 |
{1} | 0 0 0 0 0 0 0 1 0 0 0 0 0 0 |
{1} | 0 0 1 0 0 0 0 0 0 0 0 0 0 0 |
{1} | 0 0 0 1 0 0 0 0 0 0 0 0 0 0 |
{1} | 0 0 0 0 1 0 0 0 0 0 0 0 0 0 |
{1} | 0 0 0 0 0 1 0 0 0 0 0 0 0 0 |
{1} | 0 0 0 0 0 0 0 0 1 0 0 0 0 0 |
{1} | 0 0 0 0 0 0 0 0 0 1 0 0 0 0 |
{1} | 0 0 0 0 0 0 0 0 0 0 1 0 0 0 |
{1} | 0 0 0 0 0 0 0 0 0 0 0 1 0 0 |
{1} | 0 0 0 0 0 0 0 0 0 0 0 0 1 0 |
{1} | 0 0 0 0 0 0 0 0 0 0 0 0 0 1 |
14 14
2 : S <--------------------------------------- S : 2
{2} | 1 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{2} | 0 1 0 0 0 0 0 0 0 0 0 0 0 0 |
{2} | 0 0 1 0 0 0 0 0 0 0 0 0 0 0 |
{2} | 0 0 0 1 0 0 0 0 0 0 0 0 0 0 |
{2} | 0 0 0 0 1 0 0 0 0 0 0 0 0 0 |
{2} | 0 0 0 0 0 1 0 0 0 0 0 0 0 0 |
{2} | 0 0 0 0 0 0 1 0 0 0 0 0 0 0 |
{2} | 0 0 0 0 0 0 0 1 0 0 0 0 0 0 |
{2} | 0 0 0 0 0 0 0 0 1 0 0 0 0 0 |
{2} | 0 0 0 0 0 0 0 0 0 1 0 0 0 0 |
{2} | 0 0 0 0 0 0 0 0 0 0 1 0 0 0 |
{2} | 0 0 0 0 0 0 0 0 0 0 0 1 0 0 |
{2} | 0 0 0 0 0 0 0 0 0 0 0 0 1 0 |
{2} | 0 0 0 0 0 0 0 0 0 0 0 0 0 1 |
4 4
3 : S <------------------- S : 3
{3} | 1 0 0 0 |
{3} | 0 1 0 0 |
{3} | 0 0 1 0 |
{3} | 0 0 0 1 |
o7 : ComplexMap
|
i8 : assert isWellDefined f
|
i9 : assert(source f === G)
|
i10 : assert(target f === F)
|
i11 : f_1
o11 = {1} | 1 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{1} | 0 1 0 0 0 0 0 0 0 0 0 0 0 0 |
{1} | 0 0 0 0 0 0 1 0 0 0 0 0 0 0 |
{1} | 0 0 0 0 0 0 0 1 0 0 0 0 0 0 |
{1} | 0 0 1 0 0 0 0 0 0 0 0 0 0 0 |
{1} | 0 0 0 1 0 0 0 0 0 0 0 0 0 0 |
{1} | 0 0 0 0 1 0 0 0 0 0 0 0 0 0 |
{1} | 0 0 0 0 0 1 0 0 0 0 0 0 0 0 |
{1} | 0 0 0 0 0 0 0 0 1 0 0 0 0 0 |
{1} | 0 0 0 0 0 0 0 0 0 1 0 0 0 0 |
{1} | 0 0 0 0 0 0 0 0 0 0 1 0 0 0 |
{1} | 0 0 0 0 0 0 0 0 0 0 0 1 0 0 |
{1} | 0 0 0 0 0 0 0 0 0 0 0 0 1 0 |
{1} | 0 0 0 0 0 0 0 0 0 0 0 0 0 1 |
14 14
o11 : Matrix S <-- S
|
i12 : assert(f_1 != id_(source f_1))
|
i13 : assert(prune ker f == 0)
|
i14 : assert(prune coker f == 0)
|
i15 : g = f^-1
4 4
o15 = 0 : S <--------------- S : 0
| 1 0 0 0 |
| 0 1 0 0 |
| 0 0 1 0 |
| 0 0 0 1 |
14 14
1 : S <--------------------------------------- S : 1
{1} | 1 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{1} | 0 1 0 0 0 0 0 0 0 0 0 0 0 0 |
{1} | 0 0 0 0 1 0 0 0 0 0 0 0 0 0 |
{1} | 0 0 0 0 0 1 0 0 0 0 0 0 0 0 |
{1} | 0 0 0 0 0 0 1 0 0 0 0 0 0 0 |
{1} | 0 0 0 0 0 0 0 1 0 0 0 0 0 0 |
{1} | 0 0 1 0 0 0 0 0 0 0 0 0 0 0 |
{1} | 0 0 0 1 0 0 0 0 0 0 0 0 0 0 |
{1} | 0 0 0 0 0 0 0 0 1 0 0 0 0 0 |
{1} | 0 0 0 0 0 0 0 0 0 1 0 0 0 0 |
{1} | 0 0 0 0 0 0 0 0 0 0 1 0 0 0 |
{1} | 0 0 0 0 0 0 0 0 0 0 0 1 0 0 |
{1} | 0 0 0 0 0 0 0 0 0 0 0 0 1 0 |
{1} | 0 0 0 0 0 0 0 0 0 0 0 0 0 1 |
14 14
2 : S <--------------------------------------- S : 2
{2} | 1 0 0 0 0 0 0 0 0 0 0 0 0 0 |
{2} | 0 1 0 0 0 0 0 0 0 0 0 0 0 0 |
{2} | 0 0 1 0 0 0 0 0 0 0 0 0 0 0 |
{2} | 0 0 0 1 0 0 0 0 0 0 0 0 0 0 |
{2} | 0 0 0 0 1 0 0 0 0 0 0 0 0 0 |
{2} | 0 0 0 0 0 1 0 0 0 0 0 0 0 0 |
{2} | 0 0 0 0 0 0 1 0 0 0 0 0 0 0 |
{2} | 0 0 0 0 0 0 0 1 0 0 0 0 0 0 |
{2} | 0 0 0 0 0 0 0 0 1 0 0 0 0 0 |
{2} | 0 0 0 0 0 0 0 0 0 1 0 0 0 0 |
{2} | 0 0 0 0 0 0 0 0 0 0 1 0 0 0 |
{2} | 0 0 0 0 0 0 0 0 0 0 0 1 0 0 |
{2} | 0 0 0 0 0 0 0 0 0 0 0 0 1 0 |
{2} | 0 0 0 0 0 0 0 0 0 0 0 0 0 1 |
4 4
3 : S <------------------- S : 3
{3} | 1 0 0 0 |
{3} | 0 1 0 0 |
{3} | 0 0 1 0 |
{3} | 0 0 0 1 |
o15 : ComplexMap
|
i16 : assert isWellDefined g
|
i17 : assert(g * f == 1)
|
i18 : assert(f * g == 1)
|
i19 : ses = (I,J) -> (
complex{
map(S^1/(I+J), S^1/I ++ S^1/J, {{1,1}}),
map(S^1/I ++ S^1/J, S^1/(intersect(I,J)), {{1},{-1}})
}
)
o19 = ses
o19 : FunctionClosure
|
i20 : C = ses(ideal(x_0,x_1), ideal(x_1,x_2))
o20 = cokernel | x_0 x_1 x_1 x_2 | <-- cokernel | x_0 x_1 0 0 | <-- cokernel | x_1 x_0x_2 |
| 0 0 x_1 x_2 |
0 2
1
o20 : Complex
|
i21 : D = ses(ideal(x_3,x_4,x_5), ideal(x_6,x_7,x_8))
o21 = cokernel | x_3 x_4 x_5 x_6 x_7 x_8 | <-- cokernel | x_3 x_4 x_5 0 0 0 | <-- cokernel | x_5x_8 x_4x_8 x_3x_8 x_5x_7 x_4x_7 x_3x_7 x_5x_6 x_4x_6 x_3x_6 |
| 0 0 0 x_6 x_7 x_8 |
0 2
1
o21 : Complex
|
i22 : E = ses(ideal(x_1^2, x_1*x_2), ideal(x_1*x_3,x_9^2))
o22 = cokernel | x_1^2 x_1x_2 x_1x_3 x_9^2 | <-- cokernel | x_1^2 x_1x_2 0 0 | <-- cokernel | x_1x_2x_3 x_1^2x_3 x_1x_2x_9^2 x_1^2x_9^2 |
| 0 0 x_1x_3 x_9^2 |
0 2
1
o22 : Complex
|
i23 : h = tensorAssociativity(C, D, E);
|
i24 : assert isWellDefined h
|
i25 : assert(ker h == 0)
|
i26 : assert(coker h == 0)
|
i27 : k = h^-1;
|
i28 : assert(h*k == 1)
|
i29 : assert(k*h == 1)
|
i30 : h_2
o30 = | 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 |
| 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 |
| 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 |
| 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 |
| 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 |
| 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 |
| 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 |
| 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 |
| 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 |
| 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 |
| 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 |
| 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 |
| 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 |
| 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 |
| 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 |
o30 : Matrix
|
i31 : assert(source h_2 != target h_2)
|