sympy/sympy — pull request #1267 by pernici (2012-04-27 18:06:17+00:00)
Title: Schreier-Sims algorithm for permutation groups

Implemented the Schreier-Sims algorithm with Jerrum filter;
used it to compute the order of the group, stabilizer group,
membership testing, ranking and unranking

```
>>> from sympy.combinatorics.perm_groups import PermutationGroup
>>> from sympy.combinatorics.permutations import Permutation
>>> from sympy.combinatorics.generators import rubik_cube_generators
>>> gens = rubik_cube_generators()
>>> G = PermutationGroup(gens)
>>> G.order()
43252003274489856000L
>>> h = (gens[0]*gens[1]*gens[2])**7
>>> G.has_element(h)
True
>>> G_1 = G.stabilizer_group(1)
>>> G_1.order()
1802166803103744000
```