> < ^ Date: Fri, 23 Nov 2001 16:04:24 -0700 (MST)
> < ^ From: Alexander Hulpke <hulpke@math.colostate.edu >
^ Subject: Re FactorCosetOperation

Dear GAP-Forum,

Phil Meier wrote:
> first, many thanks to Tim Hsu for answering my initial question
> on free groups. Now, I have a little problem with the implementation.

Let F be a finitely generated free group and H a finite index subgroup
of F, given by finitely many generators (words in F).
The command FactorCosetOperation(F,H) works well, but what I need
is something like
FactorCosetOperation(F, NormalClosure(F,H)),
but NormalClosure(F,H) doesn't work.
What can I do?

The problem is that GAP4.2 does not contain a special method for
`NormalClosure' for finitely presented groups. Such a method will be
available in the forthcoming release 4.3. Let me know if you need
the corresponding code already now and would like me to mail it to you.

With this extra function the calculation will work:

```gap> f:=FreeGroup(2);
<free group on the generators [ f1, f2 ]>
gap> g:=f/[f.2^3,(f.1*f.2)^4];
<fp group on the generators [ f1, f2 ]>
gap> h:=Subgroup(g,[g.2,g.2^g.1,g.1^2]);;
gap> n:=Subgroup(g,[g.2,g.1*g.2*g.1,g.1^3*g.2*g.1^-1,g.1^2*g.2*g.1^-2,
>   g.1*g.2^-1*g.1^3,g.1^-2*g.2*g.1^2]);
Group([ f2, f1*f2*f1, f1^3*f2*f1^-1, f1^2*f2*f1^-2, f1*f2^-1*f1^3,
f1^-2*f2*f1^2 ])
gap> Index(g,h);
2
gap> Index(g,n);
6
gap> IsSubset(h,n);
true
gap> IsNormal(g,n);
false
gap> IsNormal(h,n);
true
gap> c:=NormalClosure(g,n);
Group(<fp, no generators known>)
gap> FactorCosetAction(g,c);
[ f1, f2 ] -> [ (1,2), () ]
```

In fact -- once this missing method is available -- one can then use GAP to
simply ask for equality of the groups in question -- internally it will do
essentially the same calculations as suggested by Tim Hsu is his prior mail:

gap> n=Intersection(h,NormalClosure(g,n));
false
gap> h=Intersection(h,NormalClosure(g,n));
true

I hope this is of help,

Alexander Hulpke