Initial release of a library for group theory operations written in pure Python. Based off the course from https://www.math.clemson.edu/~macaule/classes/f22_math4120/, from which I plan to add more features in the future. The hope is that this package will allow students learning group theory to easily experiment with ideas, by offloading computation to the computer.
Features
- Manipulation of symbolic expressions represented either as strings of symbols with exponents or as permutations
- Implementations for many basic groups, such as dihedral, abelian, semihedral. See `group_theory.group_utils.get_groups` for the full list of default groups
- Functionality to extend and define your own groups with custom representation rules
- Implementation of cosets and quotients of Groups (although quotients of quotients aren't)
- Generating a subgroup from a set of representatives
- Centralizers, conjugacy classes, orbits, normalizers, normal closures, normal cores, centers, and commutators are all supported in the default `Group` class
- Permissive (in terms of what types are supported) multiplication of group elements to allow greatest ease of use. Types that don't match typical group elements will try to be parsed as group elements to allow the multiplication to go through
- Test coverage of ~80% of functionality
- Well annotated functions and types to increase hackability and readability