41.17 Module Homomorphisms

Let M_1 and M_2 be modules acted on by the rings R_1 and R_2 (via exponentiation), and varphi a ring homomorphism from R_1 to R_2. Any linear map psi = psi_{varphi} from M_1 to M_2 with the property that (m^r)^{psi} = (m^{psi})^(r^{varphi}) is called a module homomorphism.

At the moment only the following type of module homomorphism is available in GAP. Suppose you have the module M_1 for the algebra R_1. Then you can construct the operation algebra R_2':= Operation'( R_1, M_1 ), and the module for R_2 isomorphic to M_1 as M_2':= OperationModule'( R_2 ).

Then 'OperationHomomorphism'( M_1, M_2 ) can be used to construct the module homomorphism from M_1 to M_2.

    gap> s:= Submodule( nat, [ [ 1, 1, 0 ] *Z(2) ] );; s.name:= "s";;
    gap> op:= Operation( a, s ); op.name:="op";;
    UnitalAlgebra( GF(2), [ [ [ 0*Z(2), Z(2)^0 ], [ Z(2)^0, Z(2)^0 ] ], 
      [ [ Z(2)^0, 0*Z(2) ], [ Z(2)^0, Z(2)^0 ] ] ] )
    gap> opmod:= OperationModule( op ); opmod.name:= "opmod";;
    Module( op, [ [ Z(2)^0, 0*Z(2) ], [ 0*Z(2), Z(2)^0 ] ] )
    gap> modhom:= OperationHomomorphism( s, opmod );
    OperationHomomorphism( s, opmod )
    gap> b:= Basis( s );
    SemiEchelonBasis( s,
    [ [ Z(2)^0, Z(2)^0, 0*Z(2) ], [ 0*Z(2), Z(2)^0, Z(2)^0 ] ] ) 

Images and preimages of elements under module homomorphisms are computed using Image and PreImagesRepresentative, respectively. If M_1 is a row module this is done by using the knowledge of images of a basis, if M_1 is a (quotient of a) free module then the algebra homomorphism and images of the generators of M_1 are used. The computation of preimages requires in both cases the knowledge of representatives of preimages of a basis of M_2.

    gap> im:= List( b.vectors, x -> Image( modhom, x ) );
    [ [ Z(2)^0, 0*Z(2) ], [ 0*Z(2), Z(2)^0 ] ]
    gap> List( im, x -> PreImagesRepresentative( modhom, x ) );
    [ [ Z(2)^0, Z(2)^0, 0*Z(2) ], [ 0*Z(2), Z(2)^0, Z(2)^0 ] ] 

Previous Up Top Next
Index

GAP 3.4.4
April 1997