# Revision history [back]

I do not know how to do it from Sage. But at least from GAP (wich is included in Sage and can be launched by the command "sage -gap") you can do

gap> F := FreeGroup(2);
<free group on the generators [ f1, f2 ]>
gap> gens := GeneratorsOfGroup(F);
[ f1, f2 ]
gap> f1 := gens;
f1
gap> f2 := gens;
f2
gap> G := F / [f1^3, f2^2, (f1*f2)^5];
<fp group on the generators [ f1, f2 ]>
gap> Size(G);
60


I do not know how to do it from Sage. But at least from From SAGE

sage: F.<x,y> = FreeGroup()
sage: G = F / [x^2, y^3, (x*y)^5]
sage: G.cardinality()
60


From GAP (wich is included in Sage and (that can be launched by the command "sage -gap") you can do-gap")

gap> F := FreeGroup(2);
<free group on the generators [ f1, f2 ]>
gap> gens := GeneratorsOfGroup(F);
[ f1, f2 ]
gap> f1 := gens;
f1
gap> f2 := gens;
f2
gap> G := F / [f1^3, f2^2, (f1*f2)^5];
<fp group on the generators [ f1, f2 ]>
gap> Size(G);
60


From SAGETry

sage: F.<x,y> = FreeGroup()
sage: G = F / [x^2, y^3, (x*y)^5]
sage: G.cardinality()
60
xx = G(x)
sage: yy = G(y)
sage: (xx*yy)^5 == G.one()
True


From GAP (that can be launched by the command "sage -gap")

gap> F := FreeGroup(2);
<free group on the generators [ f1, f2 ]>
gap> gens := GeneratorsOfGroup(F);
[ f1, f2 ]
gap> f1 := gens;
f1
gap> f2 := gens;
f2
gap> G := F / [f1^3, f2^2, (f1*f2)^5];
<fp group on the generators [ f1, f2 ]>
gap> Size(G);
60


Try

sage: F.<x,y> = FreeGroup()
sage: G = F / [x^2, y^3, (x*y)^5]
sage: xx = G(x)
sage: yy = G(y)
sage: (xx*yy)^5 == G.one()
True
sage: (xx*yy) == G.one()
False


Now knowing that (x*y) is not the identity in the quotient and that its order divides 5 you have no choice.

Try

sage: F.<x,y> = FreeGroup()
sage: G = F / [x^2, y^3, (x*y)^5]
sage: xx = G(x)
sage: yy = G(y)
sage: (xx*yy)^5 == G.one()
True
sage: (xx*yy) == G.one()
False


Now knowing that (x*y) is not the identity in the quotient and that its order divides 5 you have no choice.

note: your group G is isomorphic to A5 by sending x to (1,2)(3,4) and y to (1,3,5).

Try

sage: F.<x,y> = FreeGroup()
sage: G = F / [x^2, y^3, (x*y)^5]
sage: xx = G(x)
sage: yy = G(y)
sage: (xx*yy)^5 == G.one()
True
sage: (xx*yy) == G.one()
False


Now knowing that (x*y) is not the identity in the quotient and that its order divides 5 you have no choice.

note: your group G is isomorphic to A5 by sending x to (1,2)(3,4) and y to (1,3,5).

edit: To actually get the coset one can use the functionalities of GAP

sage: U = G.subgroup([G(x*y)])
sage: for rc in G.gap().RightCosets(U.gap()): print rc
RightCoset(Group( [ x*y ] ),<identity ...>)
RightCoset(Group( [ x*y ] ),x)
RightCoset(Group( [ x*y ] ),y)
RightCoset(Group( [ x*y ] ),y*x)
RightCoset(Group( [ x*y ] ),y*x*y)
RightCoset(Group( [ x*y ] ),(y*x)^2)
RightCoset(Group( [ x*y ] ),y*x*y^2)
RightCoset(Group( [ x*y ] ),(y*x)^2*y)
RightCoset(Group( [ x*y ] ),(y*x)^2*y^2)
RightCoset(Group( [ x*y ] ),(y*x)^2*y^2*x)
RightCoset(Group( [ x*y ] ),y*x*(y*x*y)^2)
RightCoset(Group( [ x*y ] ),y*x*(y*x*y)^2*x)