Is this group representation faithful? I am interested in the following group. (It's the fundamental group of the figure eight knot with the added requirement that $a$ and $b$ have order 3.)
$G=\left\langle a,b\ |\ a^3=1,b^3=1,aba^{-1}ba=bab^{-1}ab\right\rangle$
Using GAP I noticed many quotients of this group had order $12n^3$ for various integers $n$, which made me wonder if the group was isomorphic to something like $\mathbb{Z}^3\rtimes A_4$. This led me to find the following $4\times4$ matricies which actually do satisfy the above relations.
$a\rightarrow \begin{bmatrix}1 & 0 & 0 & 0\\2 & 0 & 1 & 0\\-1 & 0 & 0 & 1\\ -1 & 1 & 0 & 0\end{bmatrix}$ 
$b\rightarrow \begin{bmatrix}1 & 0 & 0 & 0\\1 & 0 & -1 & 0\\2 & 0 & 0 & -1\\ 1 & 1 & 0 & 0\end{bmatrix}$
Is this a faithful representation? How do I prove this either way?
 A: The answer is that the group is isomorphic to an extension of ${\mathbb Z}^3$ by $A_4$, but it is a nonsplit extension, and not a semidirect product. Your representation must be faithful, because no proper quotient of $G$ is isomorphic to itself (i.e. it is a Hopfian group).
I have to disagree with Igor Rivin about this being a hard problem. It is a straightforward computer calculation. Since the kernel $K$ of the homomorphism onto $A_4$ has finite index in $G$, you can use the Reidemeister-Schreier algorithm to compute a presentation of $K$, from which you can see immediately that $K \cong {\mathbb Z}^3$.
I found, that the finite quotient group of order $96$ that is an extension of $C_2^3$ by $A_4$ is a nonsplit extension, and so $G$ must itself be nonsplit.
You could certainly do this in GAP, and I could figure out how to do it, but maybe someone else will do that first! I am slightly more familiar with Magma, so I will give the Magma commands below. It is the Rewrite command that runs the Reidemeister-Schreier algorithm. The three relations are commutators - for some reason Magma writes the commutator [x,y] as (x,y).
> G:=Group<a,b|a^3=1, b^3=1, a*b*a^-1*b*a=b*a*b^-1*a*b >;
> h:=Homomorphisms(G,Alt(4))
> K:=Kernel(h[1]);
> K:=Rewrite(G,K);
> K;
Finitely presented group K on 3 generators
Generators as words in group G
    K.1 = (G.2^-1 * G.1)^2
    K.2 = G.2 * G.1 * G.2 * G.1^-1 * G.2^-1 * G.1^-1
    K.3 = G.1^-1 * G.2^-1 * G.1 * G.2^-1 * G.1^-1
Relations
   (K.2^-1, K.3) = Id(K)
   (K.2^-1, K.1^-1) = Id(K)
   (K.3, K.1^-1) = Id(K)

Here is the same calculation done in GAP:
gap> F := FreeGroup(2);; a:=F.1;; b:=F.2;;
gap> rels := [a^3, b^3, a*b*a^-1*b*a/(b*a*b^-1*a*b)];;
gap> G := F/rels;;
gap> homs := GQuotients(G, AlternatingGroup(4));;
gap> K := Kernel(homs[1]);;
gap> P := PresentationSubgroup(G,K);;
gap> TzGo(P);;
#I  there are 3 generators and 3 relators of total length 12
gap> TzPrintPresentation(P);
#I  generators:
#I  1.  _x1   4 occurrences
#I  2.  _x2   4 occurrences
#I  3.  _x3   4 occurrences
#I  relators:
#I  1. _x2^-1*_x1^-1*_x2*_x1
#I  2. _x3*_x2*_x3^-1*_x2^-1
#I  3. _x3*_x1*_x3^-1*_x1^-1
#I  there are 3 generators and 3 relators of total length 12

