[GAP Forum] 0*Z(5) in Group(Z(5));

Thomas Breuer thomas.breuer at math.rwth-aachen.de
Tue Dec 23 15:30:52 GMT 2008

Dear GAP Forum,

Anvita <anvita21 at gmail.com> wrote

> Why can't GAP check whether Zero of a finite field is in its multiplicative
> group?
> --------------------------------------------------------------------------
> gap> z:=Z(5);
> Z(5)
> gap> 0*z in Group(z);
> LogFFE: <z> must be a nonzero finite field element at
> return elm in F and LogFFE( elm, PrimitiveRoot( F ) ) mod ((Size( F ) - 1) /
> Size( G ))
>     = 0;
>  called from
> <function>( <arguments> ) called from read-eval-loop
> Entering break read-eval-print loop ...
> you can 'quit;' to quit to outer loop, or
> you can replace <z> via 'return <z>;' to continue
> ----------------------------------------------------------------------------

Thanks for this report.

This is indeed a shortcoming of the current GAP version,
and unfortunately we did not fix this in the recent upgrade to GAP 4.4.12.

By reading the GAP code appended below into GAP,
you can get rid of this particular problem.

Note, however, that you might still run into errors of the same kind,
for example in situations where a membership test for a group
is internally delegated to a membership test for another group,
via a homomorphism, and where this homomorphism cannot compute
an image for the given element.
(One such situation is the check whether a zero matrix is contained
in a matrix group.)

We will fix also these problems in the next version of GAP.

All the best,

InstallMethod( \in,
    "for groups of FFE",
    [ IsFFE, IsGroup and IsFFECollection ],
    function( elm, G )
    local F;

    F:= Field( Concatenation( GeneratorsOfGroup( G ), [ One( G ) ] ) );
    return     elm in F and not IsZero( elm )
           and LogFFE( elm, PrimitiveRoot( F ) ) mod
               ( ( Size( F ) - 1 ) / Size( G ) ) = 0;
    end );

More information about the Forum mailing list