Hello Vincent, just a couple of remarks:
1. This is exactly the type of threads I think that would belong to sage-nt rather than sage-devel 2. Using kind of "graph methods" it is definitely possible to give better enumerations of both coset representatives and generators than e.g. sage/modular/arithgroup/arithgroup_generic.py contains right now. Here "better" means that the number of generators is far lesser than with the current method, but also that in one go, one gets an intimately related enumeration of the 2-relations and 3-relations in a particular nice way, to be used for modular symbols computations. I currently just don't find the time to clean up the bits and pieces of that code of mine that does this, and put it all on a trac ticket. That's on my todo-list. 3. Have you ever had a look into sage/modular/arithgroup/ arithgroup_perm.py? It seems to me that you might find this helpful. 4. "I give you this finite set of matrices in PSL(2,ZZ) then give me back the index of the group generated by them"? It is not too hard to see that the number of arithmetic subgroups is infinite, but countable. So there certainly is an algorithm that either terminates after a finite number of steps, and gives you the (finite) index, or runs forever (exactly in the case when the index is not finite, which is possible, of course). So the hard question is, whether one can decide (with a finite amount of steps) beforehand, whether the index is finite, or not. My intuition would say that this "is" nothing else but the famous "word problem" of group theory, however ... (so one could not know it). 5. "how can we check that a given subgroup of finite index is a congruence group?" That's more or less already in Sage. One can calculate the finite number of cusp equvalence classes, then their widths. The lcm (least common multiple) of these widths gives the so-called "generalized level" N of this group. Now check whether Gamma(N), for this N, is a subgroup (calculate generators for Gamma(N), and test whether each of those is contained in the group given, see "is_subgroup()"), or not, which suffices to answer the question. See the method "generalised_level()" in the arithmetic subgroup code (arithgroup_generic.py) for more information. Cheers, Georg -- To post to this group, send an email to [email protected] To unsubscribe from this group, send an email to [email protected] For more options, visit this group at http://groups.google.com/group/sage-devel URL: http://www.sagemath.org
