Group Theory

Several improvements have been made to the GroupTheory package, including:

 

Perfect Groups Library

A library of the perfect groups of order up to one million, with a few exceptions, has been added to Maple. Several new commands allow you to access this library, and groups may be recovered from the library, either as permutation groups or as finitely presented groups.

> with(GroupTheory); -1
 

Alt(5): 

> G := PerfectGroup(60, 1)
 
GroupTheory:-PermutationGroup({thismodule, object}, )
 
> IsPerfect(G)
 
true
 
> NumPerfectGroups(1920)
 
7
 
> andmap(IsPerfect, AllPerfectGroups(1920))
 
true
 

 

New Coset Enumerator Improves Robustness and Performance

Many computations with finitely presented groups make use of a "coset enumeration" process, based on the Todd-Coxeter method. A new coset enumerator is being developed for the GroupTheory package, that is faster and more robust than the one in Maple 17. In Maple 18, some commands (namely, Index and PermutationGroup,on a finitely presented group) make use of the new coset enumerator leading to better results in these cases.

Fancy trivial group: 

> G := proc (n) options operator, arrow; `<|>`(`<,>`(a, b), `<,>`(Typesetting:-delayDotProduct(`^`(a, n), `^`(b, `+`(n, 1))), Typesetting:-delayDotProduct(`^`(a, `+`(n, 1)), `^`(b, `+`(n, 2))) = 1)) end...
 

The following was too big for Maple 17: 

> PermutationGroup(G(10000))
 
GroupTheory:-PermutationGroup({a = (thismodule), object}, )
 

 

 

New Simplify Command

The new Simplify command implements a Tietze transformation program that can help simplify many group presentations by generators and defining relators.

An auxiliary command, PresentationComplexity, was also introduced to enable you to measure how complicated a finite presentation is.

> G := SmallGroup(192, 22, 'form' =
 
GroupTheory:-FPGroup([_a1, _a2, _a3, _a4, _a5, _a6, _a7], {[_a6, _a6], [_a1, _a1, `/`(1, `*`(_a3))], [_a2, _a2, `/`(1, `*`(_a4))], [_a3, _a3, `/`(1, `*`(_a5))], [_a4, _a4, `/`(1, `*`(_a6))], [_a5, _a5...
GroupTheory:-FPGroup([_a1, _a2, _a3, _a4, _a5, _a6, _a7], {[_a6, _a6], [_a1, _a1, `/`(1, `*`(_a3))], [_a2, _a2, `/`(1, `*`(_a4))], [_a3, _a3, `/`(1, `*`(_a5))], [_a4, _a4, `/`(1, `*`(_a6))], [_a5, _a5...
GroupTheory:-FPGroup([_a1, _a2, _a3, _a4, _a5, _a6, _a7], {[_a6, _a6], [_a1, _a1, `/`(1, `*`(_a3))], [_a2, _a2, `/`(1, `*`(_a4))], [_a3, _a3, `/`(1, `*`(_a5))], [_a4, _a4, `/`(1, `*`(_a6))], [_a5, _a5...
GroupTheory:-FPGroup([_a1, _a2, _a3, _a4, _a5, _a6, _a7], {[_a6, _a6], [_a1, _a1, `/`(1, `*`(_a3))], [_a2, _a2, `/`(1, `*`(_a4))], [_a3, _a3, `/`(1, `*`(_a5))], [_a4, _a4, `/`(1, `*`(_a6))], [_a5, _a5...
GroupTheory:-FPGroup([_a1, _a2, _a3, _a4, _a5, _a6, _a7], {[_a6, _a6], [_a1, _a1, `/`(1, `*`(_a3))], [_a2, _a2, `/`(1, `*`(_a4))], [_a3, _a3, `/`(1, `*`(_a5))], [_a4, _a4, `/`(1, `*`(_a6))], [_a5, _a5...
 
> PresentationComplexity(G)
 
7, 28, 107
 
> H := Simplify(G)
 
GroupTheory:-FPGroup([_a1, _a2, _a7], {[_a7, _a7, _a7], [`/`(1, `*`(_a7)), `/`(1, `*`(_a2)), _a7, _a2], [`/`(1, `*`(_a7)), `/`(1, `*`(_a1)), _a7, _a1, `/`(1, `*`(_a7))], [`/`(1, `*`(_a1)), `/`(1, `*`(...
GroupTheory:-FPGroup([_a1, _a2, _a7], {[_a7, _a7, _a7], [`/`(1, `*`(_a7)), `/`(1, `*`(_a2)), _a7, _a2], [`/`(1, `*`(_a7)), `/`(1, `*`(_a1)), _a7, _a1, `/`(1, `*`(_a7))], [`/`(1, `*`(_a1)), `/`(1, `*`(...
GroupTheory:-FPGroup([_a1, _a2, _a7], {[_a7, _a7, _a7], [`/`(1, `*`(_a7)), `/`(1, `*`(_a2)), _a7, _a2], [`/`(1, `*`(_a7)), `/`(1, `*`(_a1)), _a7, _a1, `/`(1, `*`(_a7))], [`/`(1, `*`(_a1)), `/`(1, `*`(...
 
> PresentationComplexity(H)
 
3, 18, 154
 

 
 

New CycleIndexPolynomial Command

The cycle index polynomial of a permutation group encodes the cycle structure of the permutations in the group as a multivariate polynomial that figures prominently in the Polya-Redfield theory of enumeration. The new CycleIndexPolynomial command computes the cycle index polynomial of a finite permutation group.

> CycleIndexPolynomial(Symm(3), [x, y, z])
 
`+`(`*`(`/`(1, 6), `*`(`^`(x, 3))), `*`(`/`(1, 2), `*`(y)), `*`(`/`(1, 3), `*`(z)))
 

 

New AbelianInvariants Command

The new AbelianInvariants command computes the canonical invariants for the abelianisation of a finitely presented group.

> G := `<|>`(`<,>`(a, b, c), `<,>`(`*`(`^`(a, 2)) = `*`(`^`(b, 4)), `*`(`^`(a, 6)), Typesetting:-delayDotProduct(Typesetting:-delayDotProduct(`/`(1, `*`(c)), b), c) = `*`(`^`(b, 3))))
 
GroupTheory:-FPGroup([a, b, c], {[a, a, a, a, a, a], [`/`(1, `*`(a)), `/`(1, `*`(a)), b, b, b, b], [`/`(1, `*`(c)), `/`(1, `*`(b)), c, b, b, b]})
 
> AbelianInvariants(G)
 
[1, [2, 2]]