6.14 IsFieldHomomorphism

`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
April 1997