<!-- ------------------------------------------------------------------- --> <!-- --> <!-- mwohom.xml Gpd documentation Chris Wensley --> <!-- --> <!-- $Id: mwohom.xml,v 1.05 2008/11/21 gap Exp $ --> <!-- --> <!-- ------------------------------------------------------------------- --> <?xml version="1.0" encoding="ISO-8859-1"?> <!-- $Id: mwohom.xml,v 1.05 Exp $ --> <Chapter Label="chap-mwohom"> <Heading>Homomorphisms of many-object structures</Heading> A <E>homomorphism</E> <M>f</M> from a magma with objects <M>M</M> to a magma with objects <M>N</M> consists of a map <M>f_O</M> from the objects of <M>M</M> to those of <M>N</M> together with a map <M>f_A</M> from the arrows of <M>M</M> to those of <M>N</M> which is compatible with tail and head and which preserves multiplication: <Display> f_A((a : u \to v)*f(b : v \to w)) ~=~ f_A(a*b : u \to w) </Display> with tail <M>f_O(u)</M> and head <M>f_O(v)</M>. <P/> <Section><Heading>Homomorphisms of magmas with objects</Heading> <ManSection> <Func Name="MagmaWithObjectsHomomorphism" Arg="args" /> <Oper Name="MagmaHomomorphismFromSinglePiece" Arg="src,rng,hom,imobs" /> <Oper Name="HomomorphismToSinglePiece" Arg="src,rng,images" /> <Oper Name="HomomorphismByUnion" Arg="src,rng,homs" /> <Description> As usual, there are a variety of homomorphism constructors. The basic construction is a homomorphism <M>M \to N</M> with both <M>M</M> and <M>N</M> connected, which is implemented as <C>IsHomomorphismToSinglePieceRep</C> with attributes <C>Source</C>, <C>Range</C> and <C>PieceImages</C>. We require the following information: <List> <Item> a magma homomorphism <C>f</C> from the underlying of <M>M</M> to the underlying magma of <M>N</M>. </Item> <Item> a list <C>imobs</C> of the images of the objects of <M>M</M>; </Item> </List> In the example we construct endomappings of <M>m</M> and <M>M78</M>. <P/> </Description> </ManSection> <Example> <![CDATA[ gap> tup1 := [ Tuple([m1,m2]), Tuple([m2,m1]), Tuple([m3,m4]), Tuple([m4,m3]) ]; gap> f1 := GeneralMappingByElements( m, m, tup1 ); f1 = <general mapping: m -> m > 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> map1 := HomomorphismFromSinglePiece( M78, M78, [-8,-7], f1 ); magma with objects homomorphism : M78 -> M78 gap> Display( map1 ); Mapping to single piece magma: [ M78 ] -> [ M78 ] magma mapping: <mapping: m -> m > object map: [ -8, -7 ] -> [ -8, -7 ] Homomorphism to connected magma: [ M78 ] -> [ M78 ] object map = [ [ -8, -7 ], [ -8, -7 ] ] homomorphism = <homomorphism: m -> m > gap> idm := f1*f1;; gap> idmap := HomomorphismFromSinglePiece( M78, M78, idm, [-7,-8] ); gap> map2 := HomomorphismFromSinglePiece( M78, M78, f2, [-7,-8] ); ]]> </Example> </Section> </Chapter>