I've got a free group with relators:
sage: H.<a,b,c,d>=FreeGroup();H
Free Group on generators {a, b, c, d}
sage: Y=[[1,2],[3,4]]
sage: G=H/[Y[i] for i in range(2)];G
Finitely presented group < a, b, c, d | a*b, c*d >
sage: I=G.simplification_isomorphism();I
Generic morphism:
From: Finitely presented group < a, b, c, d | a*b, c*d >
To: Finitely presented group < a, c | >
Defn: a |--> a
b |--> a^-1
c |--> c
d |--> c^-1
Cool. Now I want to get the Tietze representation. First, under the isomorphism:
sage: G([4])
d
sage: I(G(([4])))
c^-1
sage: I(G([4])).Tietze()
(-2,)
Sure, since the index of the element is the second in the list under the isomorphism. But, I want to be able to grab the element under the original free group - that is, I want (-3). Something that I think should work:
sage: x=I(G([4]));x
c^-1
sage: H(x).Tietze()
(-2,)
Right? "What is the Tietze representation of the word 'x' in the group 'H'"....but no, still under the isomorphism. Even worse, it looks like it's like, using the Tietze representaton to do something that looks very wrong:
sage: H(I(G([4])))
b^-1
That's very confusing, but at least clearly not what I want. I can do this if I know the word ahead of time:
sage: y=c^-1
sage: y.Tietze()
(-3,)
But the point of the code I'm trying to write is to determine these words under the isomorphism. Anyone know how to do something like my second code block, but with the response (-3)?