Quotients of finitely generated nilpotent groups

I answer the edited question.

Every finitely generated nilpotent group contains a torsion-free subgroup of finite index (even better a poly-(infinite cyclic) subgroup). See Proposition 2 in page 2 of D. Segal, Polycyclic groups, CUP, Cambridge, 1983.


I believe that for class $2$ and the original question (finding a subgroup $H$ of finite index such that $H_i/H_{i+1}$ is torsionfree for all $i$) the following works.

Suppose that $N$ is of class $2$. Write $N^{\rm ab} = C_{k_1}\oplus\cdots \oplus C_{k_r}\oplus C_0^{s}$, where $C_k$ is the cyclic group of order $k$ and $C_0$ is the infinite cyclic group, with $k_1|k_2|\cdots|k_r$, $1\lt k_1$, and let $x_1,\ldots,x_r$ project onto generators of the finite cyclic summands, and $y_1,\ldots,y_s$ project onto generators of the torsionfree part.

If $s=0$, then $N^{\rm ab}$ is finite, and hence so is $N_2$; so $N$ itself is finite and we may take $H=\{e\}$. Assume then than $s\gt 0$.

The commutator subgroup $N_2$ is generated by commutators of the form $[x_j,x_i]$, $1\leq i\lt j\leq r$; $[y_b,y_a]$, $1\leq a\lt b\leq s$; and $[y_c,x_d]$, $1\leq c\leq s$, $1\leq d\leq r$. All these commutators except perhaps for those of the form $[y_b,y_a]$ are torsion. The subgroup generated by the commutators $[y_b,y_a]$ may have torsion; let $t$ be the exponent of the torsion part of this subgroup.

Let $H=\langle y_1^t,\ldots,y_s^t\rangle$. This is easily seen to be of finite index in $N$. Moreover, $H_2 = \langle [y_b,y_a]^{t^2}\mid 1\leq a\lt b\leq s\rangle$, and all of these elements lie in the torsionfree part of $N_2$, hence $H_2$ is a subgroup of a torsionfree group and so torsionfree. On the other hand, if an element of $H^{\rm ab}$ is torsion then we can express it as $y_1^{ta_1}\cdots y_s^{ta_s}H_2$ with $(y_1^{ta_1}\cdots y_s^{ta_s})^m\in H_2$, $m\gt 0$. But this implies that $y_1^{mta_1}\cdots y_s^{mta_s}\in H_2\subseteq N_2$, which by the choice of $y_j$ means that $mta_j=0$ for all $j$. Since $m,t\gt 0$, this means $a_j=0$ for all $j$, so the original element was trivial.

I would expect something similar to this to work for arbitrary class, but I can see how it might start getting a bit hairy for higher class.