 CustomGroup - Maple Help

GroupTheory

 CustomGroup
 create a custom group data structure Calling Sequence CustomGroup(gens, operations, customopts, sgopt, lbopt) Parameters

 gens - set or list of custom group generators operations - (optional) module describing group operations customopts - (optional) equations of the form one = e, 1 = e, multiply = m, . = m, inverse = i, / = i, equals = eq, = = eq, less = o, < = o, or print = p sgopt - (optional) equation of the form $\mathrm{supergroup}=g$ where $g$ is a supergroup of the group to be constructed; constructs the given group as a subgroup of $g$ lbopt - (optional) equation of the form $\mathrm{labels}=\mathrm{lst}$, giving labels for the generators Description

 • The CustomGroup command creates a group given by custom operations. Generally, only operations available for all groups are available for these custom groups - there are no specialized implementations. For this reason, it is often preferable to convert the group to a permutation group or Cayley table group, using the converting calling sequences of the PermutationGroup and CayleyTableGroup commands.
 • First specify a list or set of generators, $\mathrm{gens}$.  Besides the generators there are six operations that can be given, and most properties can be given in one of two ways: by an equation that has a particular name or symbol as its left-hand side or by specifying a module $\mathrm{operations}$ that exports a symbol (in the same way as with the module that the Operations command returns). If both are given for any particular property, the equation takes precedence. These six operations are listed below.

 symbol name description default . multiply Two-argument procedure to compute group operation (Required) / inverse One-argument procedure to invert element (Required) 1 one Unit element of the group Obtained by multiplying the first generator by its inverse = equals Two-argument procedure to test equality Regular equality, = < less Two-argument procedure to determine ordering It depends - see text below print print One-argument procedure to display elements Identity map, x -> x

 The multiplication and inversion procedures always need to be specified (either through the $\mathrm{operations}$ module or through appropriate equations.) If the group has at least one generator, then the unit element of the group can be computed (if no generators are specified in order to create the trivial group, the unit element is also required).
 By default, Maple assumes that the multiplication procedure returns its result in a unique representation. If this is not the case, then you can supply an equality testing procedure. This may slow down some algorithms.
 For some algorithms, having a well-defined ordering of the group elements is required or speeds up the computation. If the equality operation is default equality, then Maple uses the same ordering used for ordering sets for the elements of the group. Otherwise, Maple assumes that there is no well-defined ordering of the group elements. You can supply an ordering to override this. The only required property is that if two elements are equal according to the specified equality test, then the ordering does not distinguish between them.
 Visualization commands such as DrawCayleyTable use the procedure supplied with print = p to convert group elements to a display format.
 The $\mathrm{labels}$ option can be used to give names for the generators. These can be retrieved using the command GroupTheory[Labels].
 • One can optionally use an $\mathrm{sgopt}$ argument - an equation of the form $\mathrm{supergroup}=g$ - to indicate a supergroup that the given group is a subgroup of. The given generators should be members of $g$.  If no supergroup is specified or the user specifies $\mathrm{supergroup}=\mathrm{undefined}$, then Maple does not mark the resulting group as a subgroup of any particular group. Examples

 > $\mathrm{with}\left(\mathrm{GroupTheory}\right):$

The additive group of the integers modulo $6$ can be constructed as a custom group in two ways: reducing to the range $0..5$ after every operation or not. We present both ways here. We also show the two ways of specifying the operations: with equations and with a module.

 > $\mathrm{operation_module}≔\mathbf{module}\left(\right)\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}\mathrm{_export}\left(\mathrm{.}≔\left(a,b\right)→a+b\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}\mathbf{mod}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}6\right);\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}\mathrm{_export}\left(\mathrm{/}≔a→−a\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}\mathbf{mod}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}6\right)\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}\mathbf{end module}$
 ${\mathrm{operation_module}}{≔}{\mathbf{module}}\left({}\right)\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathbf{export}}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathrm{.}}{,}{\mathrm{/}}{;}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{}\phantom{\rule[-0.0ex]{0.5em}{0.0ex}}{\mathbf{end module}}$ (1)
 > $\mathrm{g1}≔\mathrm{CustomGroup}\left(\left[1\right],\mathrm{operation_module}\right)$
 ${\mathrm{g1}}{≔}{\mathrm{< a custom group with 1 generator >}}$ (2)
 > $\mathrm{equal_modulo_6}≔\left(a,b\right)↦\mathrm{irem}\left(b-a,6\right)=0$
 ${\mathrm{equal_modulo_6}}{≔}\left({a}{,}{b}\right){↦}{\mathrm{irem}}{}\left({b}{-}{a}{,}{6}\right){=}{0}$ (3)
 > $\mathrm{less_modulo_6}≔\left(a,b\right)↦a\phantom{\rule[-0.0ex]{0.3em}{0.0ex}}\mathbf{mod}\phantom{\rule[-0.0ex]{0.3em}{0.0ex}}6
 ${\mathrm{less_modulo_6}}{≔}\left({a}{,}{b}\right){↦}{a}\phantom{\rule[-0.0ex]{0.3em}{0.0ex}}{\mathbf{mod}}\phantom{\rule[-0.0ex]{0.3em}{0.0ex}}{6}{<}{b}\phantom{\rule[-0.0ex]{0.3em}{0.0ex}}{\mathbf{mod}}\phantom{\rule[-0.0ex]{0.3em}{0.0ex}}{6}$ (4)
 > $\mathrm{g2}≔\mathrm{CustomGroup}\left(\left[1\right],\mathrm{.}=\mathrm{+},\mathrm{/}=\mathrm{-},\mathrm{=}=\mathrm{equal_modulo_6},\mathrm{<}=\mathrm{less_modulo_6}\right)$
 ${\mathrm{g2}}{≔}{\mathrm{< a custom group with 1 generator >}}$ (5) Compatibility

 • The GroupTheory[CustomGroup] command was introduced in Maple 17.