Goto Chapter: Top 1 2 3 4 5 6 7 8 Bib Ind

### 3 Homomorphisms of many-object structures

A homomorphism f from a magma with objects M to a magma with objects N consists of

• a map f_O from the objects of M to those of N,

• a map f_A from the arrows of M to those of N.

The map f_A is required to be compatible with tail and head and to preserve multiplication:

f_A(a : u \to v) * f_A(b : v \to w) ~=~ f_A(a*b : u \to w)

with tail f_O(u) and head f_O(w).

When M is a monoid or group, the map f_A is required to preserve object identities and inverses.

#### 3.1 Homomorphisms of magmas with objects

##### 3.1-1 MagmaWithObjectsHomomorphism
 > MagmaWithObjectsHomomorphism( args ) ( function )
 > HomomorphismFromSinglePiece( src, rng, hom, imobs ) ( operation )
 > HomomorphismToSinglePiece( src, rng, images ) ( operation )
 > PieceImages( mwohom ) ( attribute )
 > HomsOfMapping( mwohom ) ( attribute )
 > PiecesOfMapping( mwohom ) ( attribute )
 > IsomorphismNewObjects( src, objlist ) ( operation )

There are a variety of homomorphism constructors.

The simplest construction gives a homomorphism M -> N with both M and N connected. It is implemented as IsMappingToSinglePieceRep with attributes Source, Range and PieceImages. The operation requires the following information:

• a magma homomorphism f from the underlying magma of M to the underlying magma of N,

• a list imobs of the images of the objects of M.

In the first example we construct endomappings of m and M78.

  gap> tup1 := [Tuple([m1,m2]), Tuple([m2,m1]), Tuple([m3,m4]), Tuple([m4,m3])]; gap> f1 := GeneralMappingByElements( m, m, tup1 ); gap> IsMagmaHomomorphism( f1 ); true gap> tup2 := [Tuple([m1,m1]), Tuple([m2,m1]), Tuple([m3,m1]), Tuple([m4,m1])];; gap> f2 := GeneralMappingByElements( m, m, tup2 );; gap> IsMagmaHomomorphism( f2 ); true gap> hom1 := MagmaWithObjectsHomomorphism( M78, M78, f1, [-8,-7] );; gap> Display( hom1 ); homomorphism to single piece magma: M78 -> M78 magma hom: m >, object map: [ -8, -7 ] -> [ -8, -7 ] gap> [ Source( hom1 ), Range( hom1 ) ]; [ M78, M78 ] gap> b87; [m3 : -8 -> -7] gap> im1 := ImageElm( hom1, b87 ); [m4 : -8 -> -7] gap> i56 := IsomorphismNewObjects( M78, [-5,-6] ); magma with objects homomorphism : [ [ IdentityMapping( m ), [ -5, -6 ] ] ] gap> M65 := Range( i56);; gap> SetName( M65, "M65" ); gap> j56 := InverseGeneralMapping( i56 );; gap> ImagesOfObjects( j56 ); [ -7, -8 ] gap> im2 := ImageElm( i56, b87 ); [m3 : -5 -> -6] gap> comp := j56 * hom1; magma with objects homomorphism : M65 -> M78 [ [ m >, [ -7, -8 ] ] ] gap> ImageElm( comp, im2 ); [m4 : -8 -> -7] 

A homomorphism to a connected magma with objects may have a source with several pieces, and so is a union of homomorphisms from single pieces.

  gap> M4 := UnionOfPieces( [ M78, M65 ] );; gap> images := [ PieceImages( hom1 )[1], PieceImages( j56 )[1] ]; [ [ m >, [ -8, -7 ] ], [ IdentityMapping( m ), [ -7, -8 ] ] ] gap> hom4 := HomomorphismToSinglePiece( M4, M78, images ); magma with objects homomorphism : [ [ m >, [ -8, -7 ] ], [ IdentityMapping( m ), [ -7, -8 ] ] ] 

#### 3.2 Homomorphisms of semigroups and monoids with objects

The next example exhibits a homomorphism between transformation semigroups with objects.

  gap> t2 := Transformation( [2,2,4,1] );; gap> s2 := Transformation( [1,1,4,4] );; gap> r2 := Transformation( [4,1,3,3] );; gap> sgp2 := Semigroup( [ t2, s2, r2 ] );; gap> SetName( sgp2, "sgp" ); gap> ## apparently no method for transformation semigroups available for: gap> ## nat := NaturalHomomorphismByGenerators( sgp, sgp2 ); so we use: gap> flip := function( t ) ## where t is a transformation on [1..4] gap> local i, j, k, L, L2, n; gap> n := DegreeOfTransformation( t ); gap> L := ImageListOfTransformation( t ); gap> L2 := ShallowCopy( L ); gap> for i in [1..n] do gap> if IsOddInt(i) then j:=i+1; else j:=i-1; fi; gap> k := L[j]; gap> if IsOddInt(k) then L2[i]:=k+1; else L2[i]:=k-1; fi; gap> od; gap> return( Transformation( L2 ) ); gap> end;; gap> smap := MappingByFunction( sgp, sgp2, flip );; gap> ok := RespectsMultiplication( smap ); true gap> [ t, Image( smap, t ) ]; [ Transformation( [ 1, 1, 2, 3 ] ), Transformation( [ 2, 2, 4, 1 ] ) ] gap> [ s, Image( smap, s ) ]; [ Transformation( [ 2, 2, 3, 3 ] ), Transformation( [ 1, 1, 4, 4 ] ) ] gap> [ r, Image( smap, r ) ]; [ Transformation( [ 2, 3, 4, 4 ] ), Transformation( [ 4, 1, 3, 3 ] ) ] gap> SetName( smap, "smap" ); gap> T123 := SemigroupWithObjects( sgp2, [-13,-12,-11] ); gap> shom := MagmaWithObjectsHomomorphism( S123, T123, smap, [-11,-12,-13] );; gap> IsSemigroupWithObjectsHomomorphism( shom ); true gap> [ t12, ImageElm( shom, t12 ) ]; [ [Transformation( [ 1, 1, 2, 3 ] ) : -1 -> -2], [Transformation( [ 2, 2, 4, 1 ] ) : -13 -> -12] ] gap> [ s23, ImageElm( shom, s23 ) ]; [ [Transformation( [ 2, 2, 3, 3 ] ) : -2 -> -3], [Transformation( [ 1, 1, 4, 4 ] ) : -12 -> -11] ] gap> [ r31, ImageElm( shom, r31 ) ]; [ [Transformation( [ 2, 3, 4, 4 ] ) : -3 -> -1], [Transformation( [ 4, 1, 3, 3 ] ) : -11 -> -13] ] 

#### 3.3 Homomorphisms from several pieces

##### 3.3-1 HomomorphismByUnion
 > HomomorphismByUnion( src, rng, homs ) ( operation )
 > IsInjectiveWithObjects( mwohom ) ( property )
 > IsSurjectiveWithObjects( mwohom ) ( property )
 > IsBijectiveWithObjects( mwohom ) ( property )
 > IsEndomorphismWithObjects( mwohom ) ( property )
 > IsAutomorphismWithObjects( mwohom ) ( property )

When M has more than one connected component, a homomorphism is a union of homomorphisms, one for each piece.

  gap> V1 := UnionOfPieces( [ M78, T123 ] ); magma with objects having 2 pieces :- 1: semigroup with objects :- magma = sgp objects = [ -13, -12, -11 ] 2: M78 gap> hUV := HomomorphismByUnionNC( U1, V1, [ hom1, shom ] ); magma with objects homomorphism : [ magma with objects homomorphism : [ [ m >, [ -8, -7 ] ] ] , magma with objects homomorphism : [ [ smap, [ -11, -12, -13 ] ] ] ] gap> IsInjectiveWithObjects( hUV ); true gap> IsSurjectiveWithObjects( hUV ); true gap> IsBijectiveWithObjects( hUV ); true gap> hVW := IsomorphismNewObjects( V1, [ [-103,-102,-101], [-108,-107] ] ); magma with objects homomorphism : [ magma with objects homomorphism : [ [ IdentityMapping( m ), [ -108, -107 ] ] ] , magma with objects homomorphism : [ [ IdentityMapping( sgp ), [ -103, -102, -101 ] ] ] ] gap> hUW := hUV * hVW; magma with objects homomorphism : [ magma with objects homomorphism : [ [ m >, [ -108, -107 ] ] ] , magma with objects homomorphism : [ [ smap, [ -101, -102, -103 ] ] ] ] 
Goto Chapter: Top 1 2 3 4 5 6 7 8 Bib Ind

generated by GAPDoc2HTML