// Example code from paper 9: // _When is projectivity detected on subalgebras?_ by Jon F. Carlson // print "Examples from: When is projectivity detected on subalgebras?"; load "Paper09_funcs"; ei := GetEchoInput(); SetEchoInput(true); // Section 6: An algebra whose projective modules are detected on // proper subalgebras F := FreeGroup(3); R := [ x^3 = 1, y^3 = z, z^3 = 1, z^x = z, z^y = z, y^x = y*z ]; G := quo< GrpPC : F | R >; A := BasicAlgebra(G, GF(3)); Z := Generators(A)[4]; P := ProjectiveModule(A, 1); M := quo< P | [ Basis(P)[i] * Z^2 : i in [1..#Basis(P)] ] >; PathTree(A, 1); PT := [ PathTree(A, 1)[i]: i in [1..18] ]; B := BasicAlgebra([ ]); S := SimpleModule(B, 1); P := CompactProjectiveResolution(S, 20); SimpleHomologyDimensions(S); cg := CohomologyRingGenerators(P); DegreesOfCohomologyGenerators(cg); PP := ProjectiveResolution(P); PP; g1 := CohomologyGeneratorToChainMap(PP, cg, 1); g2 := CohomologyGeneratorToChainMap(PP, cg, 2); g3 := CohomologyGeneratorToChainMap(PP, cg, 3); g4 := CohomologyGeneratorToChainMap(PP, cg, 4); Rank(ModuleMap(g1*g1, 2)); Rank(ModuleMap(g1*g2 + g2*g1, 2)); Rank(ModuleMap(g2*g2, 2)); Rank(ModuleMap(g3*g4 + (-1)*g4*g3, 4)); // Section 7: An example in which projectivity is not detected on // subalgebras gf := GF(3); F := FreeAlgebra(gf, 3); Rel := [ X^3, Y^3, Z^2, X*Z - Z*X, Y*Z - Z*Y, (1 + X)*(1 + Y) - (1 + Y)*(1 + X)*(1 + Z) ]; B := BasicAlgebra(F, Rel); S := SimpleModule(B, 1); P := CompactProjectiveResolution(S, 12); cg := CohomologyRingGenerators(P); SimpleHomologyDimensions(S); DegreesOfCohomologyGenerators(cg); OO := SyzygyModule(S, 2); HH := AHom(OO, S); flag := true; while flag do theta := Random(HH); N := Kernel(theta); if IsProjective(N, [ ActionGenerator(N, 4) ], 2) then flag := false; end if; end while; Rank(ActionGenerator(N,4)); Dimension(N); F1 := FreeAlgebra(gf, 2); p := 3; Rel1 := [ a^p, b^p, a*b - b*a ]; C := BasicAlgebra(F1, Rel1); T := SimpleModule(C, 1); O8 := SyzygyModule(T, 8); HH1 := AHom(O8, T); flag := true; while flag do mu := Random(HH1); N1 := Kernel(mu); XX := ActionGenerator(N1, 2); YY := ActionGenerator(N1, 3); LL := [ XX, XX + YY + XX*YY, XX - YY + YY^2 - XX*YY + XX*YY^2, YY ]; if forall(t){ IsProjective(N1, x, 3) : x in LL } then flag := false; end if; end while; G := ExtraSpecialGroup(3, 1); Mat1 := MatrixAlgebra(gf, Dimension(N1)); L2 := GModule(G, [ ActionGenerator(N1, i) + Mat1 ! 1 : i in [2..3] ] cat [ Mat1 ! 1 ]); Mat := MatrixAlgebra(gf, Dimension(N)); L1 := GModule(G, [ ActionGenerator(N, i) + Mat ! 1 : i in [2..4] ]); L := TensorProduct(L1, L2); ll := Dimension(L); a := ActionGenerator(L, 1) - MatrixAlgebra(gf, ll) ! 1; b := ActionGenerator(L, 2) - MatrixAlgebra(gf, ll) ! 1; c := ActionGenerator(L, 3) - MatrixAlgebra(gf, ll) ! 1; [ IsProjective(L, [ a, c ], 6), IsProjective(L, [ a + b + a*b, c ], 6), IsProjective(L, [ a - b + b^2 - a*b + a*b^2, c ], 6), IsProjective(L, [ b, c ], 6) ]; print " Note: If some element of the sequence is false, then run again."; IsProjective(L, [ a, b, c ], 18); SetEchoInput(ei);