GSoC 2016 product submission: Gaurav Dhingra #6

Open
wants to merge 129 commits into
from

Projects

None yet

2 participants

@gxyd
Owner
gxyd commented Aug 16, 2016

This PR contains commits created during/for

GSoC 2016 project with SymPy

Student: Gaurav Dhingra(@gxyd)
Mentors: Kalevi Suominen(@jksuom) , Aaron Meurer (@asmeurer) .

Project Name: Computational Group Theory (focusing upon Finitely Presented Groups)
This branch will be used to provide as a part of Work Product Submission.

and others added some commits Jan 2, 2016
@gxyd ``FreeGroup`` implementation in SymPy 3495c3f
@gxyd code simplified bf71ec2
@gxyd math fixes in code 932d459
@gxyd remove un-necessary import 25e966a
@gxyd trying to remove the __new__ method from FreeGroupElm 5e55bf3
@gxyd make FreeGroupElm a subclass of list instead of basic 31beb75
@gxyd changes in methods using dtype acd47ac
@gxyd Add test file for free_group.py 0e3142d
@gxyd checking the input type with `isint` a010b5f
@gxyd zero_mul_simp method improved 055a0cd
@gxyd change free group API to similar to polys 965221a
@gxyd Add `tuple` as baseclass for FreeGroupElm not list b97c902
@gxyd changes in zero_mul_simp function 96debc5
@gxyd printing and different free group introduction ec93b46
@gxyd changes in methods be5c2ee
@gxyd documentation and (index, exp) -> (symbol, exp) changes 470c197
@gxyd remove the unused import of collections.abc 12a02a7
@gxyd changes in methods and __truediv__ f557778
@gxyd comparison with `is` instead of `==` for Symbol 384c88d
@gxyd base class changed from Basic -> DefaultPrinting b3c63dc
@gxyd hash method for FreeGroup and FreeGroupElm and _parse_symbols 29e3728
@gxyd tests files initialised with good tests fb78b67
@gxyd add tests and comparison of FreeGroupElm fixed a0b7435
@gxyd add tests for "words", "syllables" 4a1b76b
@gxyd Fix docstring, printing issue of FreeGroupElm 5db94df
@gxyd make lw=len(array_form), remove while loop dfdfb5b
@gxyd use loop instead of recursion for zero_mul_simp fd538e5
@gxyd change the zero_simp_mul method aa8d2f4
@gxyd Raise TypeError, Add tests for invalid FreeGroupElm operations 7a24002
@gxyd remove useless import 9bce4f6
@gxyd change condition from len(l) >1 to index>=0 in zero_mul_simp f966d03
@gxyd ``FpGroup`` implementation in SymPy 8214acd
@gxyd cyclic reduction methods added ae6b16a
@gxyd add methods "define" and "scan" from Derek Holt bbdf842
@gxyd Add the "Coicidence" procedure dc80735
@gxyd Add "scan_and_fill" method 7f89bbd
@gxyd Add methods for Felsch strategy 01848cf
@gxyd Add more docs d039c53
@gxyd changes to "coincidence" routine aa40f40
@gxyd Add example for "scan", code fix for Coincidence routine
Add the complete step of "Coincidence" working and "l" assignment
915e238
@gxyd Add the example 5.4 from Derek Holt f01eb11
@gxyd Added the example for "scan" method from original todd-coxeter paper b254de2
@gxyd Make CosetTable a class, add examples for HLT strategy 2cf2a5b
@gxyd CosetTable is "not" a subclass of `list` 32c8e88
@gxyd loop `scan_and_fill` until it has filled the alpha row in the table
also add examples for the HLT enumeration method
91d775e
@gxyd Add cyclic_conjugates method for FreeGroupElements e63923d
@gxyd use "q" as a queue in "coincidence" routine
This improves the efficiency (is logically clear):
```
In [1]: F, a, b = free_group("a, b")
In [2]: Cox = FpGroup(F, [a**6, b**6, (a*b)**2, (a**2*b**2)**2, (a**3*b**3)**5])

"without" using "q" as queue
In [3]: %timeit f()
Out [3]: 1 loop, best of 3: 6.85 s per loop

"with" using "q" as queue
In [4]: %timeit f()
1 loop, best of 3: 6.6 s per loop
```
5899bcd
@gxyd use "A_dict" instead of "A.index" for finding index of (gen, gen^-1) 3a967bf
@gxyd Add test file for "Coset Enumeration" cfa662e
@gxyd changes in Coset Table based method 8df6f69
@gxyd Add "Switch" method,also add "define_f"(for Felsch specific requireme…
…nts)
5bf5e1d
@gxyd Make compress() routine work fine eb3fdca
@gxyd fix "standardize" method of Coset Table (for some still raises index …
…error)
af81b9a
@gxyd FreeGroupElm -> FreeGroupElement (Aaron's comment fix) c27c560
@gxyd Add code for `coset_enumeration_c` 02e8619
@gxyd "stadardization" of a Coset Table a87b6be
@gxyd remove wrong-code line from "scan" routine 7e3c5bd
@gxyd Make indexing of word to return a generator or its inverse
```
>>> F, x, y = free_group("x, y")
>>> w = x**2*y**-4*x**5
>>> w[1]
x
>>> w[4]
y**-1
```
Also re-indent the "return" statement (according to comment) by @jksuom
[https://github.com/sympy/sympy/pull/11140/files/f67951c394b7102a6899696e95c913f811f72aec#r65673875]
596153e
@gxyd In `scan_and_fill` set first defition of "b" and "j" outisde loop
This makes `scan_and_fill` efficient, since it apparently always scans
to the end of a word even if part of the end has already been scanned
backwards.
So avoid re-scanning of the part of word
7c2a158
@gxyd change the comparison of cosets in `scan_and_fill` 357054e
@gxyd simplification to a tuple of "chi" 6c37e61
@gxyd Address Aaron's comment from PR#11350, Felsch improvements 09f8bf7
@gxyd changes in methods for Felsch strategy, add doctest for Felsch strategy a9947c2
@gxyd documentation and code fixes related to coset enumeration 85c310f
@gxyd fix the bug in compress() routine
Now verified every coset of table with GAP, seems to be working
fine.
49eec3b
@gxyd Add modifications, tests for Felsch strategy
Add tests for Feslch strategy and improvements
7de9df0
@gxyd delete un-necessary comments from fp_groups.py 65a9fbe
@gxyd changes in printing and combined the tests for two strategies afcd1de
@gxyd Make FpGroup, CosetTable non-Basic just like FpGroup c5874d8
@gxyd ``Low Index Subgroups`` algorithm implementation in SymPy b6a6606
@gxyd code fixes in LowIndexSubgroup algorithm 70f9577
@gxyd is_complete routine's docs improved 7dc5903
@gxyd improvements in LowIndexSubgroup algorithm e6a3e31
@gxyd Add docs for first_int_class b10b7d2
@gxyd Add doctest for first_int_class, copy() routine corrected 1c1e7d1
@gxyd Use a flag instead of putting a function in first_int_class
Set a flag, break from the inner loop and test it at an outer level
65a7717
@gxyd name correction first_int_class -> first_in_class, change lamda e08eb5a
@gxyd Address @jksuom's comment and add comments 3ea156d
@gxyd set next_alpha to False, when next_alpha turns True efaa751
@gxyd Furnish the code in routines for LowIndexSubgroups algorithm 18ca411
@gxyd undo the try of product use in "lookahead" routine 3fe6070
@gxyd Fix the wrong code in "descendant_subgroups" routine
Add tests for "low_index_subgroup" algorithm and also
fix the use of len(C.A)-1 -> len(C.p) in descendant_subgroups
459f467
@gxyd use "list()" for copying a list, fix "C" not "D" dea6e51
@gxyd Add the variations to the LowIndexSubgroup algorithm bd78631
@gxyd Improve doctests for `first_in_class` routine 78eda84
@gxyd Add test for variation of low_index_subgroup algorithm 42b6ecc
@gxyd Add comment for later fixing the bug 02e6a8d
@gxyd ``Reidemeister Schreier`` algorithm implementation in SymPy 6b636e9
@gxyd use "symbols" for schreier generators a697659
@gxyd construct the schreier free group, use "C.Y" as a list 257a84d
@gxyd Add "is_cyclic_conjugate" method in free group 23d4f40
@gxyd C.schreier_free_group is now just a free_group not a tuple 1e1f4d0
@gxyd make C.schreier_generators instead of C.Y efef246
@gxyd remove order 1 generators from C.schreier_generators d45ac97
@gxyd removing generators of length 1 from relators 894b3b4
@gxyd Add routines for "Computing a presentation on the user generators" 6ede9de
@gxyd improve "presentations", add "generator_exponent_sum" 733f3d7
@gxyd improve the "eliminate_word", since it is to be used in "presentations" 5ebe33c
@gxyd fix "eliminate_word", add tests for it in free_group 750b0bf
@gxyd Add "contains_generators" method in free group
also change "while" loop to "for i in range(len(rels) - 1, -1, -1)"
ec9d93a
@gxyd Add doctest for "reidemeister schreier" procedure 6e7d6d7
@gxyd fixes in elimination technique 1 7f43653
@gxyd fix issue in "elimination_technique_1" 9e73174
@gxyd Fix doctests 3e36a2d
@gxyd Refactor the code a8e207e
@gxyd change the order of using the generators from ``gens`` 1bf4f97
@gxyd Add "is_independent" method in free_group b9e3464
@gxyd Add simplification technique 1 for presnetations from Havas paper ffd3b75
@gxyd simplification technique for presentations fixed 4f5e5d7
@gxyd Fix the equality bug in "simplification technique" 8184d05
@gxyd Add elimination technique 2 from Havas paper 7576d66
@gxyd Improve the methods of FreeGroupElement, fix "presentation" 1c8c71a
@gxyd Fix reidemeister_relators 2a03c5f
@gxyd fix the bug in "eliminate_word" 11a87cb
@gxyd Add "is_dependent" method in FreeGroupElement 41e90fc
@gxyd changes in API b8ef60d
@gxyd No use of "is_dependent" rather "simplification" does the work 676b613
@gxyd Add comments for "elimination technique" a345973
@gxyd time improvements d84b3e8
@gxyd "simplify_presentation", used for simplification def39f8
@gxyd fix bug, Add tests 6a8d559
@gxyd introduce "cyclic_reduction" for elements 7c9aabb
@gxyd fix bugs in "identity_cyclic_reduction" 708f165
@gxyd Add test of group PSL_2(11) from Havas paper cba9f3e
@gxyd Remove the code for Presentation on Subgroup generators c38164c
@kritkaran94 @gxyd kritkaran94 Fixes #11352 933b70f
@kritkaran94 @gxyd kritkaran94 added test for coset_enumeration 8b20be2
@kritkaran94 @gxyd kritkaran94 updated test_coset_enumeration() 6e7ceeb
@kritkaran94 @gxyd kritkaran94 updated max_stack_size limit
0480d54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment