# GroupPresentation¶

Group represented by its generators and relations. Here we use it to hold homotopy group such as fundamental group. for more documentation see: http://www.euclideanspace.com/prog/scratchpad/mycode/discrete/finiteGroup/presentation/ Date Created: Jan 2016 Basic Operations: Related packages: Related categories: Related Domains: PermutationGroup Also See: AMS Classifications:

=: (%, %) -> Boolean

from BasicType

~=: (%, %) -> Boolean

from BasicType

coerce: % -> OutputForm
cyclicGroup: PositiveInteger -> %

`cyclicGroup(n)` constructs the cyclic group of order `n` acting on the integers 1, …, `n`.

dihedralGroup: PositiveInteger -> %

`dihedralGroup(n)` constructs the dihedral group of order 2n acting on integers 1, …, `N`.

directProduct: (%, %) -> %

`directProduct of` two groups

groupPresentation: () -> %

construct trivial group with no generators or relations

groupPresentation: (List NonNegativeInteger, List List Integer) -> %

construct from generators and relations

groupPresentation: List NonNegativeInteger -> %

construct free group with generators but no relations

latex: % -> String

from SetCategory

quotient: (%, List List Integer) -> %

quotient: (%, List NonNegativeInteger) -> %

take quotient by removing generators specified by remgen

refactor: % -> %

actual value of generators is not important, it is only important that they correspond to the appropriate entries in the relations. Therefore we can refactor the generators without changing the group represented.

simplify: % -> %

There may not be a simplest form but it is possible to do some simplifications as follows: 1. Remove all zero terms in relations. 2. If a relation consists of a single generator then remove that generator. 3. If a relation consists of a pair of generators then make the second generator the inverse of the first. 4. If a generator is adjacent to its inverse then cancel them out. 5. Remove duplicate relations. 6. Substitute one relation in another.

simplify: (%, Boolean) -> %

simplify with option to trace

symmetricGroup: PositiveInteger -> %

`symmetricGroup(n)` constructs the symmetric group of order `n`-1. Note: generates all possible relations may not be minimal.

toPermutationIfCan: % -> Union(PermutationGroup Integer, failed)

`toPermutationIfCan(a, sg, trace)` returns permutation representation of a on cosets of subgroup generate by `sg` or “failed” if computation exceed resource limit. trace activates debugging printouts.