Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  gpdhom.xml   Sprache: XML

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

<Chapter Label="chap-gpdhom">
<Heading>Homomorphisms of Groupoids</Heading>

A <E>homomorphism</E> <M>m</M> from a groupoid <M>G</M> to a groupoid <M>H</M>
consists of a map from the objects of <M>G</M> to those of <M>H</M>
together with a map from the elements of <M>G</M> to those of <M>H</M>
which is compatible with tail and head and which preserves multiplication: 
<Display>
m(g1 : o1 \to o2)*m(g2 : o2 \to o3) ~=~ m(g1*g2 : o1 \to o3).
</Display>
<P/>
Note that when a homomorphism is not injective on objects, 
the image of the source need not be a subgroupoid of the range.
A simple example of this is given by a homomorphism from the two-object,  
four-element groupoid with trivial group to the free group 
<M>\langle a \rangle</M> 
on one generator, when the image is <M>[1,a^n,a^{-n}]</M> 
for some <M>n>0</M>. 
<P/> 
A variety of homomorphism operations are available. 
<List>
<Item>
The basic construction is a homomorphism <M>\phi : G \to H</M> 
<E>from</E> a connected groupoid <M>G</M> to a connected groupoid <M>H</M>, 
constructed using <C>GroupoidHomomorphismFromSinglePiece</C>, 
(see <Ref Sect="sec-homsfrom"/>). 
</Item>
<Item> 
Since more than one connected groupoid may be mapped <E>to</E> the same range, 
we then have the operation <C>GroupoidHomomorphismToSinglePiece</C>, 
(see <Ref Sect="sec-homsto"/>). 
</Item>
<Item>
The third case arises when both source and range are unions of connected
groupoids, in which case <C>HomomorphismByUnion</C> is called, 
(see <Ref Sect="sec-genhoms"/>).
</Item>
<Item> 
Fourthly, there are is an additional operation for the case where the source 
is homogeneous and discrete, <C>GroupoidHomomorphismFromHomogeneousDiscrete</C>, 
(see <Ref Sect="subsec-hom-from-disc"/>).
</Item> 
<Item>
Finally, there are special operations for inclusion mappings, 
restricted mappings (see <Ref Sect="sec-spec-homs"/>).
and groupoid automorphisms (see <Ref Chap="chap-gpdaut"/>).
</Item>
</List>
<P/> 

<Section Label="sec-homsfrom">
<Heading>Homomorphisms from a connected groupoid</Heading>

<ManSection>
   <Oper Name="GroupoidHomomorphismFromSinglePiece"
         Arg="src, rng, gens, images" />
   <Func Name="GroupoidHomomorphism"
         Arg="args" />
   <Filt Name="IsGroupoidHomomorphism" 
         Arg='mwohom' Type='Category'/>
<Description>
The simplest groupoid homomorphism is a mapping <M>\phi : G \to H</M> 
from a connected groupoid <M>G</M> to a connected groupoid <M>H</M>. 
There are two equivalent sets of input data which may be used. 
Both require the <C>Source</C> <M>G</M> and the <C>Range</C> <M>H</M>. 
The first then requires: 
<List>
<Item>
the set of generating arrows, <C>genG = GeneratorsOfGroupoid(G)</C>; 
</Item>
<Item>
a list of image arrows <C>imphi</C> in <M>H</M>. 
</Item>
</List>
This may be implemented by the call 
<C>GroupoidHomomorphismFromSinglePiece(G,H,genG,imphi)</C>,
and the data is stored in the attribute <C>MappingGeneratorsImages</C>.
Alternatively, use the global function <C>GroupoidHomomorphism</C>
with the same four parameters.
<P/>
The alternative input data consists of: 
<List>
<Item>
a homomorphism <C>rhom</C> from the root group of <M>G</M> 
to the group at the image object in <M>H</M>; 
</Item>
<Item>
a list <C>imobs</C> of the images of the objects of <M>G</M>;
</Item>
<Item>
a list <C>imrays</C> of the elements in the images of the rays of <M>G</M>, 
so that the image <M>\phi(r_i : o_1 \to o_i)</M> 
of the <M>i</M>-th ray is 
<C>(imrays[i]:imobs[1]</C><M>\to</M><C>imobs[i])</C>. 
</Item>
</List> 
This data is stored in the attribute <C>MappingToSinglePieceData</C>. 
<P/> 
So an alternative way to construct this homomorphism of groupoids is to 
make a call of the form  
<C>GroupoidHomomorphism(G,H,rhom,imobs,imrays)</C>. 
<P/> 
In the following example the same homomorphism is constructed 
using both methods.
<P/>
</Description>
</ManSection>
<Example>
<![CDATA[
gap> Kk4 := SubgroupoidWithRays( Ha4, k4, [ (), (1,3,4), (1,4)(2,3) ] );;
gap> SetName( Kk4, "Kk4" );
gap> gen1 := GeneratorsOfGroupoid( Gd8 ); 
[ [(5,6,7,8) : -9 -> -9], [(5,7) : -9 -> -9], [() : -9 -> -8], 
  [() : -9 -> -7] ]
gap> gen2 := GeneratorsOfGroupoid( Kk4 ); 
[ [(1,2)(3,4) : -14 -> -14], [(1,3)(2,4) : -14 -> -14], 
  [(1,3,4) : -14 -> -13], [(1,4)(2,3) : -14 -> -12] ]
gap> images := [ gen2[1]*gen2[2], gen2[1]^2, gen2[3], gen2[4] ];
[ [(1,4)(2,3) : -14 -> -14], [() : -14 -> -14], [(1,3,4) : -14 -> -13],
 [(1,4)(2,3) : -14 -> -12] ]
gap> hom8 := GroupoidHomomorphismFromSinglePiece( Gd8, Kk4, gen1, images );
groupoid homomorphism : Gd8 -> Kk4
[ [ [(5,6,7,8) : -9 -> -9], [(5,7) : -9 -> -9], [() : -9 -> -8], 
      [() : -9 -> -7] ], 
  [ [(1,4)(2,3) : -14 -> -14], [() : -14 -> -14], [(1,3,4) : -14 -> -13], 
      [(1,4)(2,3) : -14 -> -12] ] ]
gap> gend8 := GeneratorsOfGroup( d8 );;
gap> imh := [ (1,4)(2,3), () ];;
gap> h := GroupHomomorphismByImages( d8, a4, gend8, imh );                     
[ (5,6,7,8), (5,7) ] -> [ (1,4)(2,3), () ]
gap> hom9 := GroupoidHomomorphism( Gd8, Kk4, h, [-14,-13,-12],
>                 [ (), (1,3,4), (1,4)(2,3) ] );;
gap> hom8 = hom9;
true
gap> e1 := Arrow( Gd8, (5,6,7,8), -7, -8 );;
gap> ImageElm( hom8, e1 );
[(1,3,4) : -12 -> -13]
gap> IsGroupoidHomomorphism( hom8 );
true
]]>
</Example>

</Section> 

<Section Label="sec-hom-attr-prop">
<Heading>Properties and attributes of groupoid homomorphisms</Heading>

<Subsection Label="subsec-prop-homs">
<Heading>Properties of a groupoid homomorphism</Heading>
The properties listed in subsection <Ref Sect="sec-hompieces"/> 
for homomorphisms of magmas with objects also apply to groupoid homomorphisms.
<Index Key="IsInjectiveOnObjects" Subkey="for groupoid homomorphisms"></Index> 
<Index Key="IsSurjectiveOnObjects" Subkey="for groupoid homomorphisms"></Index> 
<Index Key="IsBijectiveOnObjects" Subkey="for groupoid homomorphisms"></Index> 
<Index Key="IsAutomorphismWithObjects" Subkey="for groupoid homomorphisms">
</Index> 
<Index Key="IsEndomorphismWithObjects" Subkey="for groupoid homomorphisms">
</Index> 
<Index Key="IsInjective" Subkey="for groupoid homomorphisms"></Index> 
<Index Key="IsSurjective" Subkey="for groupoid homomorphisms"></Index> 
<P/>
<Example>
<![CDATA[
gap> [ IsInjectiveOnObjects( hom8 ), IsSurjectiveOnObjects( hom8 ) ]; 
[ true, true ]
gap> [ IsInjective( hom8 ), IsSurjective( hom8 ) ];
[ false, false ]
gap> ad8 := GroupHomomorphismByImages( d8, d8, 
>               [ (5,6,7,8), (5,7) ], [ (5,8,7,6), (6,8) ] );; 
gap> md8 := GroupoidHomomorphism( Gd8, Gd8, ad8,
>               [-7,-9,-8], [(),(5,7),(6,8)] );
groupoid homomorphism : Gd8 -> Gd8
[ [ [(5,6,7,8) : -9 -> -9], [(5,7) : -9 -> -9], [() : -9 -> -8], 
      [() : -9 -> -7] ], 
  [ [(5,8,7,6) : -7 -> -7], [(6,8) : -7 -> -7], [(5,7) : -7 -> -9], 
      [(6,8) : -7 -> -8] ] ]
gap> IsBijectiveOnObjects( md8 );
true
gap> [ IsInjective( md8 ), IsSurjective( md8 ) ];  
[ true, true ]
gap> [ IsEndomorphismWithObjects( md8 ), IsAutomorphismWithObjects( md8 ) ];
[ true, true ]
]]>
</Example>

</Subsection>

<Subsection Label="subsec-attr-homs">
<Heading>Attributes of a groupoid homomorphism</Heading>
The attributes of a groupoid homomorphism <C>mor</C> from a single piece 
groupoid cover both forms of construction defined above. 
<List>
<Item>
<C>S = Source(mor)</C> is the source groupoid of the homomorphism; 
</Item>
<Item>
<C>R = Range(mor)</C> is the range groupoid of the homomorphism; 
</Item>
<Item>
<C>RootGroupHomomorphism(mor)</C> is the group homomorphism from the root group 
of <C>S</C> to the group at the image object in <C>R</C> 
of the root object in <C>S</C>; 
</Item>
<Item>
<C>ImagesOfObjects(mor)</C> is the list of objects in <C>R</C>
which are the images of the objects in <C>S</C>; 
</Item>
<Item>
<C>ImageElementsOfRays(mor)</C> is the list of group elements in those arrows 
in <C>R</C> which are the images of the rays in <C>S</C>; 
</Item>
<Item>
<C>MappingGeneratorsImages(mor)</C> is the two element list containing 
the list of generators in <C>S</C> and the list of their images in <C>R</C>; 
</Item>
<Item>
<C>MappingToSinglePieceData(mor)</C> is a list with three elements: 
the root group homomorphism; the images of the objects; 
and the images of the rays. 
</Item>
</List>
For other types of homomorphism the attributes are very similar. 
<P/> 
The function <C>ObjectGroupHomomorphism</C>, though an operation, 
is included in this section for convenience. 
</Subsection>


<ManSection>
   <Attr Name="RootGroupHomomorphism"
         Arg="hom" />
<Description>
This is the group homomorphism from the root group of the source groupoid 
to the group at the image object in the range groupoid 
of the root object in the source.  
</Description> 
</ManSection> 

<ManSection>
   <Attr Name="ImagesOfObjects"
         Arg="hom" />
<Description>
This is the list of objects in the range groupoid 
which are the images of the objects in the source. 
</Description> 
</ManSection> 

<ManSection>
   <Attr Name="ImageElementsOfRays"
         Arg="hom" />
<Description>
This is the list of group elements in those arrows 
in the range groupoid which are the images of the rays in the source. 
</Description> 
</ManSection>

<Example>
<![CDATA[
gap> RootGroupHomomorphism( hom8 );
[ (5,6,7,8), (5,7) ] -> [ (1,4)(2,3), () ]
gap> ImagesOfObjects( hom8 );
[ -14, -13, -12 ]
gap> ImageElementsOfRays( hom8 );
[ (), (1,3,4), (1,4)(2,3) ]
]]>
</Example>

<ManSection>
   <Attr Name="MappingToSinglePieceData" 
         Arg="map" Label="for groupoids" /> 
<Description>
As mentioned earlier, this attribute stores the root group homomorphism;
a list of the images of the objects; 
and a list of the elements in the images of the rays.
</Description> 
</ManSection>

<Example>
<![CDATA[
gap> MappingGeneratorsImages( hom8 );
[ [ [(5,6,7,8) : -9 -> -9], [(5,7) : -9 -> -9], [() : -9 -> -8], 
      [() : -9 -> -7] ], 
  [ [(1,4)(2,3) : -14 -> -14], [() : -14 -> -14], [(1,3,4) : -14 -> -13], 
      [(1,4)(2,3) : -14 -> -12] ] ]
gap> MappingToSinglePieceData( hom8 );
[ [ [ (5,6,7,8), (5,7) ] -> [ (1,4)(2,3), () ], [ -14, -13, -12 ], 
      [ (), (1,3,4), (1,4)(2,3) ] ] ]
]]>
</Example>

<ManSection>
   <Oper Name="ObjectGroupHomomorphism"
         Arg="gpdhom, obj" />
<Description>
For a given groupoid homomorphism, 
this operation gives the group homomorphism from an object group of 
the source to the object group at the image object in the range.  
<P/>
</Description>
</ManSection>
<Example>
<![CDATA[
gap> ObjectGroupHomomorphism( hom8, -8 );
[ (5,6,7,8), (5,7) ] -> [ (1,3)(2,4), () ]
]]>
</Example>

</Section> 

<Section Label="sec-spec-homs">
<Heading>Special types of groupoid homomorphism</Heading>

In this section we mention inclusion mappings of subgroupoids; 
and mappings restricted to a source subgroupoid.  
We also discuss various types of isomorphism: to a different set of objects; 
to a permutation groupoid; to a pc-groupoid. 

<ManSection>
   <Oper Name="InclusionMappingGroupoids"
         Arg="gpd, sgpd" />
<Description>
The operation <C>InclusionMappingGroupoids(gpd,sgpd)</C> 
returns the inclusion homomorphism from the subgroupoid <C>sgpd</C> 
to <C>gpd</C>. 
<P/>
</Description>
</ManSection>
<Example>
<![CDATA[
gap> incKk4 := InclusionMappingGroupoids( Ha4, Kk4 );     
groupoid homomorphism : Kk4 -> Ha4
[ [ [(1,2)(3,4) : -14 -> -14], [(1,3)(2,4) : -14 -> -14], 
      [(1,3,4) : -14 -> -13], [(1,4)(2,3) : -14 -> -12] ], 
  [ [(1,2)(3,4) : -14 -> -14], [(1,3)(2,4) : -14 -> -14], 
      [(1,3,4) : -14 -> -13], [(1,4)(2,3) : -14 -> -12] ] ]
]]>
</Example>
For another example, refer back to subsection <Ref Oper="PiecePositions"/>. 

<ManSection>
   <Oper Name="RestrictedMappingGroupoids"
         Arg="mor, sgpd" />
   <Attr Name="ParentMappingGroupoids"
         Arg="mor" />
<Description>
The operation <C>RestrictedMappingGroupoids(mor,sgpd)</C> 
returns the restriction of the homomorphism <C>mor</C> 
to the subgroupoid <C>sgpd</C> of its source. 
The range is usually set to the <C>ImagesSource</C> of the restriction. 
The restriction is assigned the attribute <C>ParentMappingGroupoids</C> 
with value <C>mor</C> (or that of <C>mor</C> is one exists). 
For another example see section <Ref Sect="sec-mxreps"/>.
<P/>
</Description>
</ManSection>
<Example>
<![CDATA[
gap> Gc4 := Subgroupoid( Gd8, c4 );;  SetName( Gc4, "Gc4" );
gap> res4 := RestrictedMappingGroupoids( hom8, Gc4 );
groupoid homomorphism : 
[ [ [(5,6,7,8) : -9 -> -9], [() : -9 -> -8], [() : -9 -> -7] ], 
  [ [(1,4)(2,3) : -14 -> -14], [(1,3,4) : -14 -> -13], 
      [(1,4)(2,3) : -14 -> -12] ] ]
gap> ParentMappingGroupoids( res4 ) = hom8; 
true
]]>
</Example>

<ManSection>
   <Oper Name="IsomorphismNewObjects"
         Arg="src,objlist" Label="for groupoids" />
<Description>
The operation <C>IsomorphismNewObjects(gpd,obs)</C> returns the isomorphism 
from a groupoid <C>gpd</C> to a groupoid with the same object group and ray 
elements but with a different set <C>obs</C> of objects. 
<P/>
We then compute the composite homomorphism,
<C> mor8 : Gd8 -> Kk4 -> Ha4 -> Ga4</C>.
<P/>
</Description>
</ManSection>
<Example>
<![CDATA[
gap> isoHa4 := IsomorphismNewObjects( Ha4, [-30,-29,-28] );
groupoid homomorphism : 
[ [ [(1,2,3) : -14 -> -14], [(2,3,4) : -14 -> -14], [() : -14 -> -13], 
      [() : -14 -> -12] ], 
  [ [(1,2,3) : -30 -> -30], [(2,3,4) : -30 -> -30], [() : -30 -> -29], 
      [() : -30 -> -28] ] ]
gap> Ka4 := Range( isoHa4 );  SetName( Ka4, "Ka4" );
single piece groupoid: < a4, [ -30, -29, -28 ] >
gap> IsSubgroupoid( Gk4, Kk4 );
true
gap> incHa4 := InclusionMappingGroupoids( Ga4, Ha4 );; 
gap> mor8 := hom8 * incKk4 * incHa4;                 
groupoid homomorphism : Gd8 -> Ga4
[ [ [(5,6,7,8) : -9 -> -9], [(5,7) : -9 -> -9], [() : -9 -> -8], 
      [() : -9 -> -7] ], 
  [ [(1,4)(2,3) : -14 -> -14], [() : -14 -> -14], [(1,3,4) : -14 -> -13], 
      [(1,4)(2,3) : -14 -> -12] ] ]
gap> ImageElm( mor8, e1 );
[(1,3,4) : -12 -> -13]
]]>
</Example>

<ManSection>
   <Oper Name="IsomorphismStandardGroupoid"
         Arg="gpd,obs" />
<Description>
The operation <C>IsomorphismStandardGroupoid(gpd,obs)</C> 
returns the isomorphism from a groupoid with rays to the groupoid of type 
<C>IsDirectProductWithCompleteDigraphDomain</C> 
on the given set <C>obs</C> of objects.
<C>Gk4</C>, a subgroupoid of <C>Ga4</C>, was our first example of a 
groupoid with rays (see <Ref Func="SubgroupoidWithRays"/>), 
and a standard isomorphic copy is formed here.
<P/>
</Description>
</ManSection>
<Example>
<![CDATA[
gap> isoGk4 := IsomorphismStandardGroupoid( Gk4, [-45..-41] );
groupoid homomorphism : 
[ [ [(1,2)(3,4) : -15 -> -15], [(1,3)(2,4) : -15 -> -15], 
      [(1,2,3) : -15 -> -14], [(1,2,4) : -15 -> -13], [(1,3,4) : -15 -> -12], 
      [(2,3,4) : -15 -> -11] ], 
  [ [(1,2)(3,4) : -45 -> -45], [(1,3)(2,4) : -45 -> -45], [() : -45 -> -44], 
      [() : -45 -> -43], [() : -45 -> -42], [() : -45 -> -41] ] ]
gap> G2k4 := Image( isoGk4 );  SetName( G2k4, "G2k4" );
single piece groupoid: < k4, [ -45 .. -41 ] >
gap> e5 := Arrow( Gk4, (1,2,4) , -13, -12 );
[(1,2,4) : -13 -> -12]
gap> ImageElm( isoGk4, e5 );
[(1,3)(2,4) : -43 -> -42]
gap> invGk4 := InverseGeneralMapping( isoGk4 );
groupoid homomorphism : 
[ [ [(1,2)(3,4) : -45 -> -45], [(1,3)(2,4) : -45 -> -45], [() : -45 -> -44], 
      [() : -45 -> -43], [() : -45 -> -42], [() : -45 -> -41] ], 
  [ [(1,2)(3,4) : -15 -> -15], [(1,3)(2,4) : -15 -> -15], 
      [(1,2,3) : -15 -> -14], [(1,2,4) : -15 -> -13], [(1,3,4) : -15 -> -12], 
      [(2,3,4) : -15 -> -11] ] ]
]]>
</Example>

This operation may also be used to provide a standard form for groupoids 
of type <C>IsGroupoidByIsomorphisms</C> as described in subsection 
<Ref Oper="GroupoidByIsomorphisms"/>. 
<P/> 
<Example>
<![CDATA[
gap> G2;
single piece groupoid with rays: < s3a, [ -6, -5, -4 ], 
[ [ (), () ], [ (), <identity> of ... ], [ (), <identity ...> ] ] >
gap> isoG2 := IsomorphismStandardGroupoid( G2, [-44,-43,-42] ); 
groupoid homomorphism : 
[ [ [[ (1,2), (1,2) ] : -6 -> -6], [[ (2,3), (2,3) ] : -6 -> -6], 
      [[ (), <identity> of ... ] : -6 -> -5], [[ (), <identity ...> ] : -6 -> 
        -4] ], 
  [ [(1,2) : -44 -> -44], [(2,3) : -44 -> -44], [() : -44 -> -43], 
      [() : -44 -> -42] ] ]
]]>
</Example>

<ManSection>
   <Attr Name="IsomorphismPermGroupoid"
         Arg="gpd" />
   <Attr Name="RegularActionHomomorphismGroupoid"
         Arg="gpd" />
   <Attr Name="IsomorphismPcGroupoid"
         Arg="gpd" />
<Description>
The attribute <C>IsomorphismPermGroupoid(gpd)</C> returns an isomorphism 
from a groupoid <C>gpd</C> to a groupoid with the same objects but with an 
isomorphic permutation group. 
<P/> 
The attribute <C>RegularActionHomomorphismGroupoid</C> returns an isomorphism 
from a groupoid <C>gpd</C> to a groupoid with the same objects but with an 
isomorphic regular presentation. 
In the example below these two operations produce equivalent permutation
groupoids.  Only the second is printed as the first is liable to change
from one run to the next.
<P/>
Similarly, the attribute <C>IsomorphismPcGroupoid(gpd)</C> attempts to return
an isomorphism from the group to a pc-group with the same objects. 
<P/>
</Description>
</ManSection>
<Example>
<![CDATA[
gap> isoGq8 := IsomorphismPermGroupoid( Gq8 );;
gap> regGq8 := RegularActionHomomorphismGroupoid( Gq8 );
groupoid homomorphism : 
[ [ [x : -19 -> -19], [y : -19 -> -19], [y2 : -19 -> -19], 
      [<identity> of ... : -19 -> -18], [<identity> of ... : -19 -> -17] ], 
  [ [(1,2,4,6)(3,8,7,5) : -19 -> -19], [(1,3,4,7)(2,5,6,8) : -19 -> -19], 
      [(1,4)(2,6)(3,7)(5,8) : -19 -> -19], [() : -19 -> -18], 
      [() : -19 -> -17] ] ]
gap> Pq8 := Image( regGq8 );  SetName( Pq8, "Pq8" );
single piece groupoid: < Group( [ (1,2,4,6)(3,8,7,5), (1,3,4,7)(2,5,6,8), 
  (1,4)(2,6)(3,7)(5,8) ] ), [ -19, -18, -17 ] >
gap> e7 := Arrow( Gq8, x*y, -18, -17 );;
gap> ImageElm( regGq8, e7 );
[(1,5,4,8)(2,7,6,3) : -18 -> -17]
gap> Gc4 := Subgroupoid( Gd8, c4 );  SetName( Gc4, "Gc4" );
single piece groupoid: < c4, [ -9, -8, -7 ] >
gap> isoGc4 := IsomorphismPcGroupoid( Gc4 );
groupoid homomorphism : 
[ [ [(5,6,7,8) : -9 -> -9], [() : -9 -> -8], [() : -9 -> -7] ], 
  [ [f1 : -9 -> -9], [<identity> of ... : -9 -> -8], 
      [<identity> of ... : -9 -> -7] ] ]
      [<identity> of ... : -9 -> -7] ] ]
]]>
</Example>

</Section>


<Section Label="sec-homsto">
<Heading>Homomorphisms to a connected groupoid</Heading>

<ManSection>
   <Oper Name="HomomorphismToSinglePiece"
         Arg="src, rng, piecehoms" Label="for groupoids" />
<Description>
When <M>G</M> is made up of two or more pieces, all of which get mapped 
to a connected groupoid, we have a <E>homomorphism to a single piece</E>. 
The third input parameter in this case is a list of the individual 
homomorphisms <E>from</E> the single pieces (in the correct order!). 
See section <Ref Sect="sec-mwohom"/> for the corresponding operation 
on homomorphisms of magmas with objects. 
<P/>
In the following example the source <C>V2</C> of <C>homV2</C> has two pieces, 
and both of the component homomorphisms are isomorphisms. 
<P/>
</Description>
</ManSection>
<Example>
<![CDATA[
gap> V2 := UnionOfPieces( Gq8, Gc4 );;
gap> imGc4 := [ genPq8[1], genPq8[4], genPq8[5] ];
[ [(1,2,4,6)(3,8,7,5) : -19 -> -19], [() : -19 -> -18], [() : -19 -> -17] ]
gap> homGc4 := GroupoidHomomorphism( Gc4, Pq8, genGc4, imGc4 );
groupoid homomorphism : Gc4 -> Pq8
[ [ [(5,6,7,8) : -9 -> -9], [() : -9 -> -8], [() : -9 -> -7] ], 
  [ [(1,2,4,6)(3,8,7,5) : -19 -> -19], [() : -19 -> -18], [() : -19 -> -17] ] ]
gap> homV2 := HomomorphismToSinglePiece( V2, Pq8, [ regGq8, homGc4 ] );
groupoid homomorphism : 
[ [ [ [x : -19 -> -19], [y : -19 -> -19], [y2 : -19 -> -19], 
          [<identity> of ... : -19 -> -18], [<identity> of ... : -19 -> -17] ], 
      [ [(1,2,4,6)(3,8,7,5) : -19 -> -19], [(1,3,4,7)(2,5,6,8) : -19 -> -19], 
          [(1,4)(2,6)(3,7)(5,8) : -19 -> -19], [() : -19 -> -18], 
          [() : -19 -> -17] ] ], 
  [ [ [(5,6,7,8) : -9 -> -9], [() : -9 -> -8], [() : -9 -> -7] ], 
      [ [(1,2,4,6)(3,8,7,5) : -19 -> -19], [() : -19 -> -18], 
          [() : -19 -> -17] ] ] ]
gap> ImageElm( homV2, e7 );            
[(1,5,4,8)(2,7,6,3) : -18 -> -17]
]]>
</Example>

<ManSection Label="subsec-hom-from-disc">
   <Oper Name="GroupoidHomomorphismFromHomogeneousDiscrete"
         Arg="src, rng, homs, oims" />
<Description>
This operation requires the source; the range; 
a list of homomorphisms from the object groups to the image object groups; 
and a list of the image objects.
The source must be homogeneous and discrete,
and the range must be a single piece.
The example uses the groupoid <C>HDc6</C> constructed in subsection
<Ref Oper="HomogeneousGroupoid"/>.
<P/>
</Description>
</ManSection>
<Example>
<![CDATA[
gap> c3a := Subgroup( a4, [(1,2,3)] );; c3b := Subgroup( a4, [(1,2,4)] );;
gap> c3c := Subgroup( a4, [(1,3,4)] );; c3d := Subgroup( a4, [(2,3,4)] );;
gap> hc6a := GroupHomomorphismByImages( c6, c3a, 
>                [(11,12,13)(14,15)], [(1,2,3)] );;
gap> hc6b := GroupHomomorphismByImages( c6, c3b, 
>                [(11,12,13)(14,15)], [(1,2,4)] );;
gap> hc6c := GroupHomomorphismByImages( c6, c3c, 
>                [(11,12,13)(14,15)], [(1,3,4)] );;
gap> hc6d := GroupHomomorphismByImages( c6, c3d, 
>                [(11,12,13)(14,15)], [(2,3,4)] );;
gap> mor6 := GroupoidHomomorphismFromHomogeneousDiscrete( HDc6, Ga4,
>              [ hc6a, hc6b, hc6c, hc6d ], [-15,-14,-12,-11] );
groupoid homomorphism : HDc6 -> Ga4
gap> e6 := Arrow( HDc6, (11,12,13), -25, -25 );;
gap> ImageElm( mor6, e6 );
[(1,3,4) : -12 -> -12]
]]>
</Example>

</Section>


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

<ManSection>
   <Oper Name="HomomorphismByUnion"
         Arg="src, rng, homs" Label="for groupoids" />
<Description>
As in section <Ref Sect="sec-hompieces"/>,  
when the range <M>H</M> has more than one connected component, 
a homomorphism is a union of homomorphisms, one for each piece in the range. 
<P/>
</Description>
</ManSection>
<Example>
<![CDATA[
gap> W1 := UnionOfPieces( Ha4, Gd8 );;
gap> W2 := UnionOfPieces( Ka4, Kk4 );;
gap> SetName( W1, "[Ha4,Gd8]" );  SetName( W2, "[Ka4,Kk4]" );
gap> homW := HomomorphismByUnion( W1, W2, [ isoHa4, hom8 ] );;
gap> Display( homW );           
groupoid homomorphism: [Ha4,Gd8] -> [Ka4,Kk4] with pieces :
homomorphism to single piece groupoid: Ha4 -> Ka4
root group homomorphism:
(1,2,3) -> (1,2,3)
(2,3,4) -> (2,3,4)
object map: [ -14, -13, -12 ] -> [ -30, -29, -28 ]
ray images: [ (), (), () ]
homomorphism to single piece groupoid: Gd8 -> Kk4
root group homomorphism:
(5,6,7,8) -> (1,4)(2,3)
(5,7) -> ()
object map: [ -9, -8, -7 ] -> [ -14, -13, -12 ]
ray images: [ (), (1,3,4), (1,4)(2,3) ]
 ]]>
</Example>

<ManSection>
   <Oper Name="IsomorphismGroupoids"
         Arg="A,B" />
<Description>
When <M>A,B</M> are two single piece groupoids, they are isomorphic provided 
they have the same number of objects and the root groups are isomorphic. 
<P/> 
When <M>A=[A_1,\ldots,A_n],~ B=[B_1,\ldots,B_n]</M> 
are both unions of connected groupoids, they are isomorphic if 
there is a permutation <M>\pi</M> of <M>[1,\ldots,n]</M> 
such that <M>A_i</M> is isomorphic to <M>B_{\pi(i)}</M> for all <M>i</M>. 
<P/>
</Description>
</ManSection>
<Example>
<![CDATA[
gap> s3b := Group( (4,6,8)(5,7,9), (4,9)(5,8)(6,7) );;
gap> s3c := Group( (4,6,8)(5,7,9), (5,9)(6,8) );;
gap> Gb := SinglePieceGroupoid( s3b, [-6,-5,-4] );; 
gap> Gc := SinglePieceGroupoid( s3c, [-16,-15,-14] );; 
gap> SetName( Gb, "Gb" );  SetName( Gc, "Gc" );  
gap> c6b := Group( (1,2,3,4,5,6) );; 
gap> c6c := Group( (7,8)(9,10,11) );;
gap> Hb := SinglePieceGroupoid( c6b, [-10,-9,-8,-7] );; 
gap> Hc := SinglePieceGroupoid( c6c, [-20,-19,-18,-17] );; 
gap> SetName( Hb, "Hb" );  SetName( Hc, "Hc" ); 
gap> IsomorphismGroupoids( Gb, Gc );
groupoid homomorphism : Gb -> Gc
[ [ [(4,6,8)(5,7,9) : -6 -> -6], [(4,9)(5,8)(6,7) : -6 -> -6], 
      [() : -6 -> -5], [() : -6 -> -4] ], 
  [ [(4,6,8)(5,7,9) : -16 -> -16], [(5,9)(6,8) : -16 -> -16], 
      [() : -16 -> -15], [() : -16 -> -14] ] ]
gap> IsomorphismGroupoids( Gb, Hb );
fail
gap> B := UnionOfPieces( [ Gb, Hb ] );; 
gap> C := UnionOfPieces( [ Gc, Hc ] );;
gap> isoBC := IsomorphismGroupoids( B, C );; 
gap> Print( List( PiecesOfMapping(isoBC), p -> [Source(p),Range(p)] ) );
[ [ Hb, Hc ], [ Gb, Gc ] ]
]]>
</Example>

</Section>

</Chapter>

100%


¤ 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.0.25Bemerkung:  (vorverarbeitet)  ¤

*Bot Zugriff






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.






                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge