New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fp_groups: Finite index subgroup method for `.order()` #12761

Merged
merged 4 commits into from Jun 19, 2017

Conversation

Projects
None yet
2 participants
@valglad
Contributor

valglad commented Jun 17, 2017

This PR changes the .order() method of the FpGroup class so that, instead of directly performing coset enumeration on the trivial subgroup, it tries to find a subgroup of finite index first and then separately the order of this subgroup. This way the computation time for large groups with small quotients can sometimes (if the appropriate subgroup is found) be reduced, and also it is possible to detect infinite groups (an example is added in the tests).

Many functions involved in coset_enumeration are equipped with a keyword argument max_cosets which corresponds to the maximum number of cosets that can be defined during the enumeration. It is CosetTable.coset_table_max_limit by default.

Additionally, C is a keyword argument for the .subgroup() and .reidemeister_presentation() methods where C is a coset table. This is to prevent .reidemeister_presentation() from performing coset enumeration when an appropriate coset table has been previously found. E.g. the _finite_index_subgroup() method returns the coset table for a subgroup of finite index and this can be passed to .reidemeister_presentation() when the presentation of the subgroup is calculated.

@jksuom jksuom merged commit 5338400 into sympy:master Jun 19, 2017

1 check passed

continuous-integration/travis-ci/pr The Travis CI build passed
Details

@valglad valglad deleted the valglad:fin_ind_subgroups branch Jun 19, 2017

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment