SetLogFile ("queenstown-2.log"); SetEchoInput (true); /* setting up a finite polycyclic group -- Sym (4) */ G := PolycyclicGroup ; G; // does every element have unique normal form? IsConsistent (G); #G; flag, phi := IsIsomorphic (G, Sym (4)); flag; phi (G.1); phi (G.2); // normal form? g := G.3 * G.2^-1 * G.1^-1 * G.2 * G.4; g; // normal subgroups N := NormalSubgroups (G); N; // centraliser in G of g C := Centraliser (G, g); // subgroup generated by g H := sub< G | g >; H; N := Normaliser (G, H); N; IdentifyGroup (N); /* set up infinite dihedral group */ D := PolycyclicGroup; D; b^-2 * a * b^-1 * a^-1; /* exploring quotients of a finitely presented group */ G := Group ; AbelianQuotientInvariants (G); H, phi := pQuotient (G, 3, 0:Print:=1); H; phi (a * b * a); IdentifyGroup (H); // aut gp of H A := AutomorphismGroup (H); A; #A; // specific aut alpha := A.1 * A.2^-1 * A.3; alpha; h := Random (H); h; alpha (h); // perm rep for automorphism group: action on union of conjugacy classes phi, B := ClassAction (A); B; CompositionFactors (B); // A is soluble so we can write down directly a pc-presentation for A X, tau := PCGroup (A); X; Y := AutomorphismGroup (X); #Y; U := PCGroup (Y); U; // family of 7-groups F := FreeGroup (2); p := 7; Q := []; for k := 1 to p - 1 do G := quo< F | a^p = (b, a, a), b^p = a^(k*p), (b, a, b)>; Q[k] := pQuotient (G, p, 10); end for; Q; // how many distinct isom types? S := [StandardPresentation (H): H in Q]; // generic function to identify different objects in S // using MyCompare FindDifferent := function (S, MyCompare) if #S le 1 then return S, [i : i in [1..#S]]; end if; D := [S[1]]; for i in [2..#S] do if forall {j : j in [1..#D] | MyCompare (S[i], D[j]) eq false} then Append (~D, S[i]); end if; end for; pos := [Position (S, D[i]) : i in [1..#D]]; return D, pos; end function; T, pos := FindDifferent (S, IsIdenticalPresentation); // non-isomorphic groups T; // see Cavicchioli, O'Brien and Spaggiari, J. Algebra 2008 // www.math.auckland.ac.nz/~obrien/research/fib.pdf // generalised Fibonacci type groups CHR := function (n, m, k) F := FreeGroup (n); R := []; for i in [1..n] do a := i + m; if a gt n then repeat a := a - n; until a le n; end if; b := i + k; if b gt n then repeat b := b - n; until b le n; end if; Append (~R, F.i * F.a = F.b); end for; Q := quo ; return Q; end function; /* prove that 9, 3, 4 is infinite */ G := CHR (9, 3, 4); D := DerivedGroup (G); S := DerivedGroup (D); R := Rewrite (D, S: Simplify:=false); b := Ngens (R); r := #Relations (R); "# of generators, # relations ", b, r; // Golod-Safarevic theorem // G p-group has Frattini quotient rank d and r relators; // if r < d^2/4 then G is infinite // stronger version of this theorem Left := func; Right := func; P:= pQuotient(R, 2, 2:Print:=1); d := FrattiniQuotientRank (P); // rank of class 2 section e := NPCgens (P) - d; p := 2; left := Left (b, r); left; right := Right (d, e, p); right; left le right; // so G is infinite // an unsolved case G := CHR (9, 1, 3); G; // G/G' AbelianQuotientInvariants (G); // Reduce # of generators S := Simplify (G); S; P := Homomorphisms (S, PSL(2, 8)); P; // easy to get homomorphism from G to PSL(2, 8) x Z_19 // Not too difficult to show kernel K is perfect // Hard question: is K infinite simple, trivial, finite? // Baumslag-Solitar groups G := Group; AbelianQuotientInvariants (G); // p-quotient H, tau := pQuotient (G, 2, 5:Print:=1); H; tau; (a * b^2 *a) @ tau; // nilpotent quotient K, phi := NilpotentQuotient (G, 5); K; phi; K.5 @@ phi; // soluble group use PCGroup to write down PCPresentation G := WreathProduct (Alt(4), DihedralGroup(10)); IsSoluble (G); P, pi := PCGroup (G); // soluble quotient G := WreathProduct(Sym(5), DihedralGroup(3)); #G; F := FPGroupStrong (G); time S, phi := SolubleQuotient (F); S; // find p-groups G where G^p \leq Z(G) //is p-group pcentral? IsPCentral := function(G) Z := Center (G); O := Omega (G, 1); return O subset Z; end function; // groups of order 32 with pcentral property X := SmallGroups (32, IsPCentral); "Number of examples is ", #X; X[1]; // identify abelian invariants of Schur multiplier of G SchurMultiplier := function (G) B := PrimeBasis (#G); M := [pMultiplicator (G, p): p in B]; M := [x : x in M | #x gt 0 and x ne [1]]; return M; end function; // extension of soluble group D4 := DihedralGroup (4); SchurMultiplier (D4); // largest central extension D := Darstellungsgruppe (FPGroup (D4)); D; H := pQuotient (D, 2, 10:Print := 1); H; // extensions of D4 by C2 S := ExtensionsOfSolubleGroup (D4, CyclicGroup (2)); X := [pQuotient(x, 2, 10:Print:=0): x in S]; [IdentifyGroup (x): x in X]; quit;