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