Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/GAP/pkg/groupoids/doc/   (Algebra von RWTH Aachen Version 4.15.1©)  Datei vom 11.8.2025 mit Größe 8 kB image not shown  

Quelle  mwohom.xml   Sprache: XML

 
<?xml version="1.0" encoding="UTF-8"?>

<Chapter Label="chap-homwo">
<Heading>Mappings 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 
<List>
<Item>
a map <M>f_O</M> from the objects of <M>M</M> to those of <M>N</M>, 
</Item>
<Item>
a map <M>f_A</M> from the arrows of <M>M</M> to those of <M>N</M>. 
</Item>
</List>
The map <M>f_A</M> is required to be compatible with the tail and head maps 
and to preserve multiplication: 
<Display>
f_A(a : u \to v) * f_A(b : v \to w) ~=~ f_A(a*b : u \to w) 
</Display
with tail <M>f_O(u)</M> and head <M>f_O(w)</M>. 
<P/>
When the underlying magma of <M>M</M> is a monoid or group, 
the map <M>f_A</M> is required to preserve identities and inverses.  
<P/>

<Section Label="sec-mwohom">
<Heading>Homomorphisms of magmas with objects</Heading>

<ManSection>
   <Func Name="MagmaWithObjectsHomomorphism"
         Arg="args" />
   <Oper Name="HomomorphismFromSinglePiece"
         Arg="src,rng,hom,imobs" />
   <Oper Name="HomomorphismToSinglePiece"
         Arg="src,rng,images" Label="for magmas with objects" />
   <Attr Name="MappingToSinglePieceData"
         Arg="mwohom" Label="for magmas with objects" />
   <Attr Name="PiecesOfMapping"
         Arg="mwohom" />
   <Oper Name="IsomorphismNewObjects"
         Arg="src,objlist" Label="for magmas with objects" />
<Description>
There are a variety of homomorphism constructors. 
<P/> 
The simplest construction gives a homomorphism <M>M \to N</M> with 
both <M>M</M> and <M>N</M> connected. 
It is implemented as 
<Index Key="IsMappingToSinglePieceRep"
<C>IsMappingToSinglePieceRep</C> </Index> 
<C>IsMappingToSinglePieceRep</C> 
with attributes 
<Index Key="Source"> <C>Source</C> </Index> <C>Source</C>, 
<Index Key="Range">  <C>Range</C>  </Index> <C>Range</C> 
and <C>MappingToSinglePieceData</C>. 
The operation requires the following information: 
<List>
<Item>
a magma homomorphism <C>hom</C> from the underlying magma 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 first example we construct endomappings of <C>m</C> and <C>M78</C>. 
<P/>
</Description>
</ManSection>
<Example>
<![CDATA[
gap> tup1 := [ DirectProductElement([m1,m2]), DirectProductElement([m2,m1]), 
>              DirectProductElement([m3,m4]), DirectProductElement([m4,m3]) ];; 
gap> f1 := GeneralMappingByElements( m, m, tup1 ); 
<general mapping: m -> m >
gap> IsMagmaHomomorphism( f1 ); 
true
gap> hom1 := MagmaWithObjectsHomomorphism( M78, M78, f1, [-7,-8] ); 
magma with objects homomorphism : M78 -> M78
[ [ <mapping: m -> m >, [ -7, -8 ] ] ]
gap> [ Source( hom1 ), Range( hom1 ) ]; 
[ M78, M78 ]
gap> b87;
[m4 : -8 -> -7]
gap> im1 := ImageElm( hom1, b87 );
[m3 : -7 -> -8]
gap> i65 := IsomorphismNewObjects( M78, [-6,-5] ); 
magma with objects homomorphism : [ [ IdentityMapping( m ), [ -6, -5 ] ] ]
gap> ib87 := ImageElm( i65, b87 );
[m4 : -6 -> -5]
gap> M65 := Range( i65);; 
gap> SetName( M65, "M65" ); 
gap> j65 := InverseGeneralMapping( i65 );; 
gap> ImagesOfObjects( j65 ); 
[ -8, -7 ]
gap> comp := j65 * hom1;
magma with objects homomorphism : M65 -> M78
[ [ <mapping: m -> m >, [ -7, -8 ] ] ]
gap> ImageElm( comp, ib87 );
[m3 : -7 -> -8]
]]>
</Example>

A homomorphism <E>to</E> a connected magma with objects may have a source 
with several pieces, 
and so is a union of homomorphisms <E>from</E> single pieces. 
<P/>
<Example>
<![CDATA[
gap> M4 := UnionOfPieces( [ M78, M65 ] );;
gap> images := [ MappingToSinglePieceData( hom1 )[1], 
> MappingToSinglePieceData( j65 )[1] ]; 
[ [ <mapping: m -> m >, [ -7, -8 ] ], [ IdentityMapping( m ), [ -8, -7 ] ] ]
gap> map4 := HomomorphismToSinglePiece( M4, M78, images ); 
magma with objects homomorphism : 
[ [ <mapping: m -> m >, [ -7, -8 ] ], [ IdentityMapping( m ), [ -8, -7 ] ] ]
gap> ImageElm( map4, b87 ); 
[m3 : -7 -> -8]
gap> ImageElm( map4, ib87 );
[m4 : -8 -> -7]
]]>
</Example>

</Section>


<Section Label="sec-sgphom">
<Heading>Homomorphisms of semigroups and monoids with objects</Heading>

The next example exhibits a homomorphism between transformation 
semigroups with objects. 
<P/>
<Example>
<![CDATA[
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> ##  in the function flip below t is a transformation on [1..n] 
gap> flip := function( t ) 
>     local i, j, k, L, L2, n; 
>     n := DegreeOfTransformation( t );  
>     L := ImageListOfTransformation( t ); 
>     if IsOddInt(n) then n:=n+1; L1:=Concatenation(L,[n]); 
>                    else L1:=L; fi; 
>     L2 := ShallowCopy( L1 );
>     for i in [1..n] do 
>         if IsOddInt(i) then j:=i+1; else j:=i-1; fi; 
>         k := L1[j]; 
>         if IsOddInt(k) then L2[i]:=k+1; else L2[i]:=k-1; fi; 
>     od; 
>     return( Transformation( L2 ) ); 
> end;; 
gap> smap := MappingByFunction( sgp, sgp2, flip );; 
gap> ok := RespectsMultiplication( smap ); 
true
gap> [ t, ImageElm( smap, t ) ]; 
[ Transformation( [ 1, 1, 2, 3 ] ), Transformation( [ 2, 2, 4, 1 ] ) ]
gap> [ s, ImageElm( smap, s ) ]; 
[ Transformation( [ 2, 2, 3, 3 ] ), Transformation( [ 1, 1, 4, 4 ] ) ]
gap> [ r, ImageElm( 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> it12 := ImageElm( shom, t12 );;  [ t12, it12 ]; 
[ [Transformation( [ 1, 1, 2, 3 ] ) : -1 -> -2], 
  [Transformation( [ 2, 2, 4, 1 ] ) : -13 -> -12] ]
gap> is23 := ImageElm( shom, s23 );;  [ s23, is23 ]; 
[ [Transformation( [ 2, 2, 3, 3 ] ) : -2 -> -3], 
  [Transformation( [ 1, 1, 4, 4 ] ) : -12 -> -11] ]
gap> ir31 := ImageElm( shom, r31 );;  [ r31, ir31 ]; 
[ [Transformation( [ 2, 3, 4, 4 ] ) : -3 -> -1], 
  [Transformation( [ 4, 1, 3, 3 ] ) : -11 -> -13] ]
]]>
</Example>

</Section>


<Section Label="sec-hompieces">
<Heading>Homomorphisms to more than one piece</Heading>

<ManSection>
   <Oper Name="HomomorphismByUnion"
         Arg="src,rng,homs" Label="for magmas with objects" />
<Description>
When <M>f : M \to N</M> and <M>N</M> has more than one connected component, 
then <M>M</M> also has more than one component and
<M>f</M> is a union of homomorphisms, one for each piece in the range. 
<P/>
See section <Ref Sect="sec-genhoms"/> 
for the equivalent operation with groupoids.
<P/>
</Description>
</ManSection>
<Example>
<![CDATA[
gap> N4 := UnionOfPieces( [ M78, T123 ] );; 
gap> h14 := HomomorphismByUnionNC( N1, N4, [ hom1, shom ] ); 
magma with objects homomorphism : 
[ magma with objects homomorphism : M78 -> M78
    [ [ <mapping: m -> m >, [ -7, -8 ] ] ], magma with objects homomorphism : 
    [ [ smap, [ -11, -12, -13 ] ] ] ]
gap> ImageElm( h14, a78 );
[m1 : -8 -> -7]
gap> ImageElm( h14, r31 );
[Transformation( [ 4, 1, 3, 3 ] ) : -11 -> -13]
]]>
</Example>

<ManSection>
   <Prop Name="IsInjectiveOnObjects" 
         Arg="mwohom" />
   <Prop Name="IsSurjectiveOnObjects" 
         Arg="mwohom" />
   <Prop Name="IsBijectiveOnObjects" 
         Arg="mwohom" />
   <Prop Name="IsEndomorphismWithObjects" 
         Arg="mwohom" />
   <Prop Name="IsAutomorphismWithObjects" 
         Arg="mwohom" />
<Description>
The meaning of these five properties is obvious. 
</Description>
</ManSection>

<Example>
<![CDATA[
gap> IsInjectiveOnObjects( h14 );
true
gap> IsSurjectiveOnObjects( h14 );
true
gap> IsBijectiveOnObjects( h14 ); 
true
gap> IsEndomorphismWithObjects( h14 ); 
false
gap> IsAutomorphismWithObjects( h14 ); 
false
]]>
</Example>

</Section>

<Section Label="sec-mapbyfun">
<Heading>Mappings defined by a function</Heading>

<ManSection>
   <Oper Name="MappingWithObjectsByFunction"
         Arg="src,rng,fun,imobs" />
   <Prop Name="IsMappingWithObjectsByFunction"
         Arg="map" />
   <Attr Name="UnderlyingFunction"
         Arg="map" />
<Description>
More general mappings, which need not preserve multiplication, 
are available using this operation. 
See chapter <Ref Chap="chap-gpdaut"/> for an application. 
</Description>
</ManSection>

<Example>
<![CDATA[
gap> swap := function(a) return Arrow(M78,a![1],a![3],a![2]); end;      
function( a ) ... end
gap> swapmap := MappingWithObjectsByFunction( M78, M78, swap, [-7,-8] );
magma with objects mapping by function : M78 -> M78
function: function ( a )
    return Arrow( M78, a![1], a![3], a![2] );
end

gap> a78; ImageElm( swapmap, a78 );              
[m2 : -7 -> -8]
[m2 : -8 -> -7]
]]>
</Example>

</Section>

</Chapter>

93%


¤ Dauer der Verarbeitung: 0.24 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.