IsFieldHomomorphism( map )
IsFieldHomomorphism returns true if the mapping map is a field
homomorphism and false otherwise. Signals an error if map is a multi
valued mapping.
A mapping map is a field homomorphism if its source F and range G are both fields and if for each pair of elements x, y in F we have (x+y)^{map} = x^{map} + y^{map} and (xy)^{map} = x^{map} y^{map}. We also require that 1_F^{map} = 1_G.
gap> f := GF( 16 );
GF(2^4)
gap> fun := FrobeniusAutomorphism( f );
FrobeniusAutomorphism( GF(2^4) )
gap> IsFieldHomomorphism( fun );
true
IsFieldHomomorphism first tests if the flag map.isFieldHomomorphism
is bound. If the flag is bound, IsFieldHomomorphism returns its value.
Otherwise it calls
map.source.operations.IsFieldHomomorphism( map ), remembers the
returned value in map.isFieldHomomorphism, and returns it. Note that
of course all functions that create field homomorphism set the flag
map.isFieldHomomorphism to true, so that no function is called for
those field homomorphisms.
The default function called this way is MappingOps.IsFieldHomomorphism.
It computes all the elements of the source of map and for each pair of
elements x, y tests whether (x+y)^{map} = x^{map} + y^{map} and
(xy)^{map} = x^{map} y^{map}. Look under IsHomomorphism in the index
to see for which mappings this function is overlaid.
GAP 3.4.4