Using a mixture of computation and thought I believe that I have established that this group is indeed torsion-free. I don't know of any general approach to solving that particular problem. Even if the group is hyperbolic (which this example is not, because it has free abelian subgroups of rank $2$), I am not aware of any practical implementable algorithm for deciding torsion-freeness. Here is some Magma code for this problem. Following Pace Nielsen's suggestion that there might be an easily identifiable subgroup of index $32$, I found such a subgroup $K$ of index $4$, and we can compute a presentation of it on its four defining generators. > G<x,y,z>:=Group<x,y,z|x*y^-1*x^-1=z^2*y, x*z^-2=z^2*x, x*y*x^-1*y=z^2, > y^2*x*z=z*x >; > K<a,b,c,d> := sub<G | x^2, z^2, x*z*y^-1, y^2>; > Index(G,K); 4 > Rewrite(G,~K); > K; Finitely presented group K on 4 generators Index in group G is 4 = 2^2 Generators as words in group G a = x^2 b = z^2 c = x * z * y^-1 d = y^2 Relations (c^-1, a) = Id(K) (a^-1, b) = Id(K) (a^-1, d^-1) = Id(K) (d^-1, b^-1) = Id(K) (b, c) = Id(K) d * c * b^-1 * d^-1 * c^-1 * b^-1 = Id(K) b^-1 * a * c^-1 * a^-1 * b * c = Id(K) We see that all pairs of generators of $K$ commute except for $c$ and $d$. The final relation collapses completely, and the preceding one is equivalent to $dcd^{-1}c^{-1} =b^2$, so $K$ is a direct product of $\langle a \rangle$ and a torsion-free nilpotent group of class $2$ generated by $b,c,d$. So $K$ is torsion-free. > Transversal(G,K); {@ Id(G), x, y, z @} So a torsion-element would have to have order $2$ and be of the form $xk$, $yk$ or $zk$ for some $k \in K$. I spent some time trying to prove that this does not happen, but eventually found an easy way to do it by calculating in a finite quotient. We let $K_2$ be the kernel of the map of $K$ on the to the largest elementary abelian quotient of $K$, which has order $16$, and then check for torsion elements in $G/K_2$. We see that there are none, so $G$ is torsion-free. > PK, phi := ElementaryAbelianQuotient(K,2); > Order(PK); 16 > K2 := Kernel(phi); > Index(K,K2); 16 > T2 := Transversal(K,K2); > exists{k : k in T2 | (x*k)^2 in K2 }; false > exists{k : k in T2 | (y*k)^2 in K2 }; false > exists{k : k in T2 | (z*k)^2 in K2 }; false