{"id":19595924,"url":"https://github.com/innovativeinventor/groups","last_synced_at":"2026-05-15T04:03:47.232Z","repository":{"id":135191640,"uuid":"342442900","full_name":"InnovativeInventor/groups","owner":"InnovativeInventor","description":"Representing groups as systems of rewrite rules and calculating various properties thereof","archived":false,"fork":false,"pushed_at":"2021-03-02T23:54:44.000Z","size":23,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-02-26T14:45:21.963Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/InnovativeInventor.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-02-26T02:44:15.000Z","updated_at":"2021-05-22T01:14:52.000Z","dependencies_parsed_at":"2024-05-29T23:24:28.410Z","dependency_job_id":null,"html_url":"https://github.com/InnovativeInventor/groups","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/InnovativeInventor/groups","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InnovativeInventor%2Fgroups","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InnovativeInventor%2Fgroups/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InnovativeInventor%2Fgroups/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InnovativeInventor%2Fgroups/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/InnovativeInventor","download_url":"https://codeload.github.com/InnovativeInventor/groups/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/InnovativeInventor%2Fgroups/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33053145,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-13T13:14:54.681Z","status":"online","status_checked_at":"2026-05-15T02:00:06.351Z","response_time":103,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-11T08:49:30.367Z","updated_at":"2026-05-15T04:03:47.218Z","avatar_url":"https://github.com/InnovativeInventor.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Groups\n[![Tests](https://github.com/InnovativeInventor/groups/actions/workflows/test-lint.yaml/badge.svg)](https://github.com/InnovativeInventor/groups/actions/workflows/test-lint.yaml)\n\nRepresenting certain kinds of finite groups in terms of generators and rewrite rules. \nWork in progress. \nThis is probably not the best way to represent groups, but whatever.\nContributions are welcome.\n \n## Example (D_16)\nThe group `D_16` can be represented like so\n```\na^2 = e\nb^8 = e\nba = ab^7\n```\n\n``` python\nfrom groups import AbstractGroup\ngroup = AbstractGroup({\"a\": 2, \"b\": 8}, {((\"b\", 1), (\"a\", 1)): ((\"a\", 1), (\"b\", 7))}) # default group\n```\nwhere each element is represented as a list of tuples containing the generator, followed by the power of the generator.\n\nTo enumerate all the elements in the group you can then do\n``` python\ngroup.enumerate()\n```\n\nTo multiply particular elements together you can do\n``` python\ngroup.multiply(term_1, term_2)\n```\n\nTo normalize/simplify an element to its simplest form you can do\n``` python\ngroup.normalize(term_1)\n```\n\nTo get the inverse of an element, you can do\n``` python\ngroup.inverse(term_1)\n```\n\nVoilà -- some basic group stuff! \nMore basic group operations (subgroups, conjugacy classes, normal subgroups, etc.) are used in [`examples/d16.py`](/examples/d16.py).\nTests are in [`groups/test_groups.py`](groups/test_groups.py).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finnovativeinventor%2Fgroups","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finnovativeinventor%2Fgroups","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finnovativeinventor%2Fgroups/lists"}