> < ^ Date: Fri, 14 Aug 1992 09:35:11 +0200
> < ^ From: Frank Celler <frank.celler@math.rwth-aachen.de >
> < ^ Subject: Re: Elements of order 4 in a subgroup of order 2

Charley Wrigth writes:

```CW> I've run into a bug of some sort.  Here's a log of what happened.
CW>
CW> gap> A := wreathPower(2,3);  # = (2wr2)wr2
CW> Group( h, n1_1, n1_2, n1_3, n2_1, n2_2, n2_3 )
CW> gap> B := AgSubgroup(A,[A.4*A.5*A.6],true);
CW> Subgroup( Group( h, n1_1, n1_2, n1_3, n2_1, n2_2, n2_3 ), [ n1_3*n2_1*n2_2 ] )
CW> gap> Size(B);
CW> 2
CW> gap> c := A.4*A.5*A.6;
CW> n1_3*n2_1*n2_2
CW> gap> c^2;
CW> n2_2*n2_3
CW> gap> c in B;
CW> true
CW> gap> Elements(B);
CW> [ IdAgWord, n1_3*n2_1*n2_2 ]
CW> gap> c^2 in B;
CW> false
```

This is not really a bug, but a feature. Consider the following:

```gap> A := wreathPower(2,3);
Group( h, n1_1, n1_2, n1_3, n2_1, n2_2, n2_3 )

gap> c := A.4*A.5*A.6;
n1_3*n2_1*n2_2

gap> B := Subgroup( A, [c] );
Subgroup( Group( h, n1_1, n1_2, n1_3, n2_1, n2_2, n2_3 ), [n1_3*n2_1*n2_2] )
```

gap> c in B;
true

```gap> Elements(B);
[ IdAgWord, n2_2*n2_3, n1_3*n2_1*n2_3, n1_3*n2_1*n2_2 ]

gap> c^2 in B;
true
```

And now it works. So the "bug" must be in line "B := AgSubgroup(...);".
Indeed the function 'AgSubgroup' assumes that the second argument is either
an induced generating system or a canonical one. It does *not* check this
assumption, because the function is intented to be used in functions which
already know that they have computed an canonical generating system and want
to convert it to a subgroup structure. Checking the arguments would be a
waste of time in this case. 'Subgroup' is intented to be used by users and
function which compute just generating sets for a subgroup without assuming
that the generating set is a canonical one. So let us compute the canonical
generating system.

```gap> Cgs(B);
[ n1_3*n2_1*n2_3, n2_2*n2_3 ]
```

Now we can try again.

```gap> A := wreathPower(2,3);
Group( h, n1_1, n1_2, n1_3, n2_1, n2_2, n2_3 )

gap> c := A.4*A.5*A.6;
n1_3*n2_1*n2_2

gap> c^2;
n2_2*n2_3

gap> B := AgSubgroup( A, [c,c^2], true );
Subgroup( Group( h, n1_1, n1_2, n1_3, n2_1, n2_2, n2_3 ),
[ n1_3*n2_1*n2_2, n2_2*n2_3 ] )
```

gap> c in B;
true

```gap> Elements(B);
[ IdAgWord, n2_2*n2_3, n1_3*n2_1*n2_3, n1_3*n2_1*n2_2 ]

gap> c^2 in B;
true
```

mfg (=with best regards)
Frank

> < [top]