Presentation of a subgroup of a given index I am unable to find an explanation of why it is possible to compute a finite presentation of a finite index subgroup in a given finitely presented group. More particularly, if $G$ is a virtually nilpotent group (given by a finite presentation), how do I find algorithmically a nilpotent subgroup $N < G$ of finite index?
I know that there are the Todd-Coxeter and the Reidemeister-Schreier process. However, in the Todd-Coxeter algorithm a finite generating set of $N$ needs to be the input, and in the Reidemeister-Schreier algorithm we need a Schreier set.
So my question is: Knowing that $G$ is virtually nilpotent, how do I find a finite presentation of a nilpotent subgroup $N$ of finite index?
Thanks in advance!
 A: I find the formulation of this problem strange, and I wonder whether you are giving us enough information. How exactly do you know that this presentation defines a virtually nilpotent group?
Anyway, with the information given, all that you do algorithmically is to find all subgroups of index $n$ for $n=1,2,3,\ldots$ (there is an algorithm called the Low Index Subgroups Algorithm to do that), and compute a presentation of each subgroup using the Reidemeister-Schreier algorithm. That can all be done in GAP or Magma.
The difficult part is to examine each presentation and try to prove that the group defined is nilpotent. The question of determining nilpotency of a given finitely presented group is undecidable in general but, if the group defined is nilpotent, then it is possible to verify this using a method of Sims involving the Knuth-Bendix algorithm. Of course, in a specific example you might be lucky, and it might be easy to see directly that the presentation defines a nilpotent group. But the problem is very difficult in general.
So for each subgroup of the original group, you attempt to verify that it is nilpotent. If you succeed, you are done. But if you fail, then that does not prove that it is not nilpotent, so you need to come back periodically to each subgroup and try a bit harder to prove it nilpotent. Since we know somehow that the original group is virtually nilpotent, this approach is guaranteed to suceed eventually, but it would be tricky to program.
