1 | initial version |

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[1];
f1
gap> f2 := gens[2];
f2
gap> G := F / [f1^3, f2^2, (f1*f2)^5];
<fp group on the generators [ f1, f2 ]>
gap> Size(G);
60
```

2 | answer from Sage |

~~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[1];
f1
gap> f2 := gens[2];
f2
gap> G := F / [f1^3, f2^2, (f1*f2)^5];
<fp group on the generators [ f1, f2 ]>
gap> Size(G);
60
```

3 | No.3 Revision |

~~From SAGE~~Try

```
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[1];
f1
gap> f2 := gens[2];
f2
gap> G := F / [f1^3, f2^2, (f1*f2)^5];
<fp group on the generators [ f1, f2 ]>
gap> Size(G);
60
```

4 | No.4 Revision |

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.

5 | No.5 Revision |

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).

6 | No.6 Revision |

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)
```

Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.