> < ^ Date: Fri, 21 Oct 1994 10:48:00 -0700
> < ^ From: Martin Schoenert <martin.schoenert@math.rwth-aachen.de >
< ^ Subject: Re: bug in semidirect product routine

Burkhard Hoefling writes in his e-mail message of 1994/10/12

I would like to notify to You the following error, presumably in

C3 := CyclicGroup (3);
alpha := GroupHomomorphismByImages (C3,C3,[(1,2,3)],[(1,3,2)]);
A := Group (alpha);
C2 := Group ((10,11));
a := GroupHomomorphismByImages (C2,A,[(10,11)],[alpha]);
G := SemidirectProduct (C2,a,C3);

Z := Centre (G);
# Error, Record: element 'MakeMapping' must have an assigned value at

Here GAP tries to multiply two semidirect product elements, resp. their
induced automorphisms <h1> and <h2>. To do this it needs to compute some
information about <2> with 'MakeMapping'. But it tries to look up this
method in <h1>'s operations record. Usually this is not a problem, since
<h1> and <h2> have the same operations records anyhow. But in this case
<h1> is 'IdentityMapping(...)', which doesn't have a 'MakeMapping'
method. Small problem, small fix.

--- /usd/gap/3.4/lib/permhomo.g Mon Jul 11 01:28:57 1994
+++ permhomo.g  Sun Oct 16 23:03:43 1994
@@ -939,7 +939,7 @@

             # make sure we have a stabilizer chain for the left homomorphism
             if not IsBound( hom2.stabilizer )  then
-                hom1.operations.MakeMapping( hom2 );
+                hom2.operations.MakeMapping( hom2 );

# make the homomorphism

Burkhard Hoefling continues

FittingSubgroup (G);
# Error, Record: element 'isNilpotent' must have an assigned value at

This particular problem has been fixed in GAP 3.4.1. But GAP 3.4.1 fails
almost immediately too when it tries to compute the order of an element.

Burkhard Hoefling probably noticed this, because he continues

Order (G,G.generators[1]);
# Error, Record: element 'Order' must have an assigned value at

The problem here is slightly more technical. For those interested.
The operations record for semidirect products ('SemidirectProductOps')
inherits from the operations record for generic groups ('GroupOps').
But when it inherits (by beeing created as a copy of 'GroupOps'),
'GroupOps' has not yet aquired all generic methods, e.g., the
generic 'Order' method is not yet entered into 'GroupOps'.

Again there is a simply fix. Simply enter

MergeOperationsEntries( GroupOps, SemidirectProductOps );

before you call 'SemidirectProduct'.

Burkhard Hoefling continues

C3 := CyclicGroup (AgWords,3);
alpha := GroupHomomorphismByImages (C3,C3,[C3.1],[C3.1^2]);
A := Group (alpha);
C2 := CyclicGroup (2);
a := GroupHomomorphismByImages (C2,A,C2.generators,[alpha]);
G := SemidirectProduct (C2,a,C3);
F := FittingSubgroup (G);
# Error, sorry, the elements of <arg> lie in no common ring domain in

This is a much more serious problem. It happens when the two groups have
different representations (in this case one is a permutation group and
the other is an AG group).

I must confess that I am not certain what the correct way to solve it is.
It depends on what the (undocumented) function 'SemidirectProductElement'

Anyhow the following solves your problem for now

--- /usd/gap/3.4/lib/grpprods.g Mon Jul 11 01:28:37 1994
+++ grpprods.g  Sun Oct 16 23:17:39 1994
@@ -806,7 +806,7 @@
 SemidirectProductElement := function ( g, a, h )
     local   D;
-    D := Domain( [ g, h ] );
+    D := GroupElements;
     return D.operations.SemidirectProductElement( D, g, a, h );

Burkhard Hoefling continues

What about the binary files corresponding
to the MAC ports of GAP that are so frequently announced but never
seem to appear on the file server in Aachen?

Look again (yes I know, it is difficult to believe, but it is finally


-- .- .-. - .. -.  .-.. --- ...- . ...  .- -. -. .. -.- .-
Martin Sch"onert,   Martin.Schoenert@Math.RWTH-Aachen.DE,   +49 241 804551
Lehrstuhl D f"ur Mathematik, Templergraben 64, RWTH, 52056 Aachen, Germany

> < [top]