In this chapter we consider automorphisms of single piece groupoids; then homogeneous discrete groupoids; and finally homogeneous groupoids. We also consider matrix representations and groupooid actions.
‣ GroupoidAutomorphismByObjectPerm ( gpd, imobs ) | ( operation ) |
‣ GroupoidAutomorphismByGroupAuto ( gpd, gpiso ) | ( operation ) |
‣ GroupoidAutomorphismByNtuple ( gpd, imrays ) | ( operation ) |
‣ GroupoidAutomorphismByRayShifts ( gpd, imrays ) | ( operation ) |
We first describe automorphisms of a groupoid G where G is the direct product of a group g and a complete digraph with n objects.. The automorphism group is generated by three types of automorphism:
given a permutation π of the n objects, we define
\alpha_{\pi} : G \to G,~ (g : o_i \to o_j) \mapsto (g : o_{\pi i} \to o_{\pi j});
given an automorphism θ of the root group g, we define
\alpha_{\theta} : G \to G,~ (g : o_i \to o_j) \mapsto (\theta g : o_i \to o_j);
given L = [g_1,g_2,g_3,...,g_n] ∈ g^n we define
\alpha_L : G \to G,~ (g : o_i \to o_j) \mapsto (g_i^{-1}gg_j : o_i \to o_j).
If g_1 = 1_g, then for all j the rays (r_j : o_1 -> o_j) are shifted by g_j: so they map to (r_jg_j : o_1 -> o_j). So the operation GroupoidAutomorphismByRayShifts
is the special case of GroupoidAutomorphismByNtuple
when g_1=1.
gap> perm1 := [-13,-12,-14];; gap> aut1 := GroupoidAutomorphismByObjectPerm( Ha4, perm1 );; gap> Display( aut1 ); homomorphism to single piece groupoid: Ha4 -> Ha4 root group homomorphism: (1,2,3) -> (1,2,3) (2,3,4) -> (2,3,4) object map: [ -14, -13, -12 ] -> [ -13, -12, -14 ] ray images: [ (), (), () ] gap> d := Arrow( Ha4, (1,3,4), -12, -13 ); [(1,3,4) : -12 -> -13] gap> d1 := ImageElm( aut1, d ); [(1,3,4) : -14 -> -12] gap> gensa4 := GeneratorsOfGroup( a4 );; gap> alpha2 := GroupHomomorphismByImages( a4, a4, gensa4, [(2,3,4), (1,3,4)] );; gap> aut2 := GroupoidAutomorphismByGroupAuto( Ha4, alpha2 );; gap> Display( aut2 ); homomorphism to single piece groupoid: Ha4 -> Ha4 root group homomorphism: (1,2,3) -> (2,3,4) (2,3,4) -> (1,3,4) object map: [ -14, -13, -12 ] -> [ -14, -13, -12 ] ray images: [ (), (), () ] gap> d2 := ImageElm( aut2, d1 ); [(1,2,4) : -14 -> -12] gap> L3 := [(1,2)(3,4), (1,3)(2,4), (1,4)(2,3)];; gap> aut3 := GroupoidAutomorphismByNtuple( Ha4, L3 );; gap> Display( aut3 ); homomorphism to single piece groupoid: Ha4 -> Ha4 root group homomorphism: (1,2,3) -> (1,4,2) (2,3,4) -> (1,4,3) object map: [ -14, -13, -12 ] -> [ -14, -13, -12 ] ray images: [ (), (1,4)(2,3), (1,3)(2,4) ] gap> d3 := ImageElm( aut3, d2 ); [(2,3,4) : -14 -> -12] gap> L4 := [(), (1,3,2), (2,4,3)];; gap> aut4 := GroupoidAutomorphismByRayShifts( Ha4, L4 );; gap> Display( aut4 ); homomorphism to single piece groupoid: Ha4 -> Ha4 root group homomorphism: (1,2,3) -> (1,2,3) (2,3,4) -> (2,3,4) object map: [ -14, -13, -12 ] -> [ -14, -13, -12 ] ray images: [ (), (1,3,2), (2,4,3) ] gap> d4 := ImageElm( aut4, d3 ); [() : -14 -> -12] gap> h4 := Arrow( Ha4, (2,3,4), -12, -13 );; gap> aut1234 := aut1*aut2*aut3*aut4;; gap> Display( aut1234 ); homomorphism to single piece groupoid: Ha4 -> Ha4 root group homomorphism: (1,2,3) -> (1,4,3) (2,3,4) -> (1,2,3) object map: [ -14, -13, -12 ] -> [ -13, -12, -14 ] ray images: [ (), (2,3,4), (1,3,4) ] gap> d4 = ImageElm( aut1234, d ); true gap> inv1234 := InverseGeneralMapping( aut1234 );; gap> Display( inv1234 ); homomorphism to single piece groupoid: Ha4 -> Ha4 root group homomorphism: (1,2,3) -> (1,4,3) (2,3,4) -> (2,4,3) object map: [ -14, -13, -12 ] -> [ -12, -14, -13 ] ray images: [ (), (1,3,2), (1,3,4) ]
‣ GroupoidInnerAutomorphism ( gpd, arrow ) | ( operation ) |
‣ GroupoidInnerAutomorphismNormalSubgroupoid ( gpd, subgpd, arrow ) | ( operation ) |
Given an arrow a = (c : p -> q) ∈ G with p ≠ q, the inner automorphism α_a of G by a is the mapping g ↦ g^a where conjugation of arrows is defined in section 4.5. It is easily checked that if L_a = [1,...,1,c^-1,1,...,1,c,1,...,1], with c^-1 in position p and c in position q, then
\alpha_a ~=~ \alpha_{(p,q)} * \alpha_{L_a}.
Similarly, when p=q, then α_a = α_L_a where now L_a = [1,...,1,c,1,...,1], with c in position p.
gap> inn1 := GroupoidInnerAutomorphism( Ha4, h4 );; gap> Display( inn1 ); homomorphism to single piece groupoid: Ha4 -> Ha4 root group homomorphism: (1,2,3) -> (1,2,3) (2,3,4) -> (2,3,4) object map: [ -14, -13, -12 ] -> [ -14, -12, -13 ] ray images: [ (), (2,4,3), (2,3,4) ] gap> d5 := ImageElm( inn1, d4 ); [(2,3,4) : -14 -> -13]
Conjugation may also be applied to certain normal subgroupoids of G. Firstly, let N be the wide subgroupoid of G determined by a normal subgroup n of the root group. Then, provided the group element of a is in n, the inner automorphism by a may be applied to N.
gap> Nk4 := SubgroupoidBySubgroup( Ha4, k4 );; gap> SetName( Nk4, "Nk4" ); gap> e4 := Arrow( Ha4, (1,2)(3,4), -14, -13 );; gap> inn2 := GroupoidInnerAutomorphismNormalSubgroupoid( Ha4, Nk4, e4 );; gap> Display( inn2 ); homomorphism to single piece groupoid: Nk4 -> Nk4 root group homomorphism: (1,2)(3,4) -> (1,2)(3,4) (1,3)(2,4) -> (1,3)(2,4) object map: [ -14, -13, -12 ] -> [ -13, -14, -12 ] ray images: [ (), (), (1,2)(3,4) ]
Secondly, if H is a homogeneous, discrete subgroupoid of G and if the group element of a is in the common vertex groups, then the inner automorphism may be applied to H.
gap> Ma4 := MaximalDiscreteSubgroupoid( Ha4 );; gap> SetName( Ma4, "Ma4" ); gap> inn3 := GroupoidInnerAutomorphism( Ha4, Ma4, e4 );; gap> Display( inn3 ); homogeneous discrete groupoid mapping: [ Ma4 ] -> [ Ma4 ] images of objects: [ -13, -14, -12 ] object homomorphisms: GroupHomomorphismByImages( a4, a4, [ (1,2,3), (2,3,4) ], [ (1,4,2), (1,4,3) ] ) GroupHomomorphismByImages( a4, a4, [ (1,2,3), (2,3,4) ], [ (1,4,2), (1,4,3) ] ) GroupHomomorphismByImages( a4, a4, [ (1,2,3), (2,3,4) ], [ (1,2,3), (2,3,4) ] )
Let S be a wide subgroupoid with rays of a standard groupoid G.
An automorphism α of the root group H extends to the whole of S with the rays fixed by the automorphism: (r^-1_ihr_j : o_i -> o_j) ↦ (r^-1_i (α h)r_j : o_i -> o_j).
An automorphism of G obtained by permuting the objects may map S to a different subgroupoid. So we construct an isomorphism ι from S to a standard groupoid T, construct α permuting the objects of T, and return ι*α*ι^-1.
For an automorphism by ray shifts we require that the shifts are elements of the root group of S.
gap> ## (1) automorphism by group auto gap> a6 := GroupHomomorphismByImages( k4, k4, > [ (1,2)(3,4), (1,3)(2,4) ], [ (1,3)(2,4), (1,4)(2,3) ] );; gap> aut6 := GroupoidAutomorphismByGroupAuto( Kk4, a6 ); groupoid homomorphism : Kk4 -> Kk4 [ [ [(1,2)(3,4) : -14 -> -14], [(1,3)(2,4) : -14 -> -14], [(1,3,4) : -14 -> -13], [(1,4)(2,3) : -14 -> -12] ], [ [(1,3)(2,4) : -14 -> -14], [(1,4)(2,3) : -14 -> -14], [(1,3,4) : -14 -> -13], [(1,4)(2,3) : -14 -> -12] ] ] gap> a := Arrow( Kk4, (1,3)(2,4), -12, -12 );; gap> ImageElm( aut6, a ); [(1,4)(2,3) : -12 -> -12] gap> b := Arrow( Kk4, (1,4,2), -12, -13 );; gap> ImageElm( aut6, b ); [(1,2,3) : -12 -> -13] gap> ## (2) automorphism by object perm gap> aut7 := GroupoidAutomorphismByObjectPerm( Kk4, [-13,-12,-14] ); groupoid homomorphism : Kk4 -> Kk4 [ [ [(1,2)(3,4) : -14 -> -14], [(1,3)(2,4) : -14 -> -14], [(1,3,4) : -14 -> -13], [(1,4)(2,3) : -14 -> -12] ], [ [(1,4)(2,3) : -13 -> -13], [(1,2)(3,4) : -13 -> -13], [(2,3,4) : -13 -> -12], [(1,4,3) : -13 -> -14] ] ] gap> ImageElm( aut7, a ); [(1,3)(2,4) : -14 -> -14] gap> ImageElm( aut7, b ); [(1,3)(2,4) : -14 -> -12] gap> ## (3) automorphism by ray shifts gap> aut8 := GroupoidAutomorphismByRayShifts( Kk4, > [ (), (1,4)(2,3), (1,3)(2,4) ] ); groupoid homomorphism : Kk4 -> Kk4 [ [ [(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,2,3) : -14 -> -13], [(1,2)(3,4) : -14 -> -12] ] ] gap> ImageElm( aut8, a ); [(1,3)(2,4) : -12 -> -12] gap> ImageElm( aut8, b ); [(1,2,3) : -12 -> -13] gap> ## (4) combine these three automorphisms gap> aut678 := aut6 * aut7 * aut8; groupoid homomorphism : Kk4 -> Kk4 [ [ [(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) : -13 -> -13], [(1,3)(2,4) : -13 -> -13], [(1,4,3) : -13 -> -12], [(1,3,2) : -13 -> -14] ] ] gap> ImageElm( aut678, a ); [(1,4)(2,3) : -14 -> -14] gap> ImageElm( aut678, b ); [(1,4)(2,3) : -14 -> -12] gap> ## (5) conjgation by an arrow gap> e8 := Arrow( Kk4, (1,3)(2,4), -14, -12 );; gap> aut9 := GroupoidInnerAutomorphism( Kk4, e8 ); groupoid homomorphism : Kk4 -> Kk4 [ [ [(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) : -12 -> -12], [(1,3)(2,4) : -12 -> -12], [(1,4,2) : -12 -> -13], [(1,4)(2,3) : -12 -> -14] ] ]
‣ AutomorphismGroupOfGroupoid ( gpd ) | ( operation ) |
‣ NiceObjectAutoGroupGroupoid ( gpd, aut ) | ( operation ) |
As above, let G be the direct product of a group g and a complete digraph with n objects. The AutomorphismGroup
Aut(G) of G is isomorphic to the quotient of S_n × A × g^n by a subgroup isomorphic to g, where A is the automorphism group of g and S_n is the symmetric group on the n objects. This is one of the main topics in [AW10].
If H is the union of k groupoids, all isomorphic to G, then Aut(H) is isomorphic to S_k ⋉ Aut(G).
The function NiceObjectAutoGroupGroupoid
takes a groupoid and a subgroup of its automorphism group and retuns a nice monomorphism from this automorphism group to a pc-group, if one is available. The current implementation is experimental. Note that ImageElm
at present only works on generating elements.
gap> AHa4 := AutomorphismGroupOfGroupoid( Ha4 ); Aut(Ha4) gap> Agens := GeneratorsOfGroup( AHa4);; gap> Length( Agens ); 8 gap> NHa4 := NiceObject( AHa4 );; gap> MHa4 := NiceMonomorphism( AHa4 );; gap> Size( AHa4 ); ## (3!)x24x(12^2) 20736 gap> SetName( AHa4, "AHa4" ); gap> SetName( NHa4, "NHa4" ); gap> ## either of these names may be returned gap> names := [ "(((A4 x A4 x A4) : C2) : C3) : C2", > "(C2 x C2 x C2 x C2 x C2 x C2) : (((C3 x C3 x C3) : C3) : (C2 x C2))" ];; gap> StructureDescription( NHa4 ) in names; true gap> ## cannot test images of Agens because of random variations gap> ## Now do some tests! gap> mgi := MappingGeneratorsImages( MHa4 );; gap> autgen := mgi[1];; gap> pcgen := mgi[2];; gap> ngen := Length( autgen );; gap> ForAll( [1..ngen], i -> Order(autgen[i]) = Order(pcgen[i]) ); true
The inner automorphism subgroup mathrmInn(G) of the automorphism group of G is the group of inner automorphisms ∧ a : b ↦ b^a for a ∈ G. It is not the case that the map G -> mathrmInn(G), a ↦ ∧ a preserves multiplication. Indeed, when a=(o,g,p), b=(p,h,r) ∈ G with objects p,q,r all distict, then
\wedge(ab) ~=~ (\wedge a)(\wedge b)(\wedge a) ~=~ (\wedge b)(\wedge a)(\wedge b).
(Compare this with the permutation identity (pq)(qr)(pq) = (pr) = (qr)(pq)(qr).) So the map G -> mathrmInn(G) is of type IsMappingWithObjectsByFunction
.
In the example we convert the automorphism group AGa4
into a single object groupoid, and then define the inner automorphism map.
gap> AHa40 := Groupoid( AHa4, [0] ); single piece groupoid: < Aut(Ha4), [ 0 ] > gap> conj := function(a) > return ArrowNC( Ha4, true, GroupoidInnerAutomorphism(Ha4,a), 0, 0 ); > end;; gap> inner := MappingWithObjectsByFunction( Ha4, AHa40, conj, [0,0,0] );; gap> a1 := Arrow( Ha4, (1,2,3), -14, -13 );; gap> inner1 := ImageElm( inner, a1 );; gap> a2 := Arrow( Ha4, (2,3,4), -13, -12 );; gap> inner2 := ImageElm( inner, a2 );; gap> a3 := a1*a2; [(1,3)(2,4) : -14 -> -12] gap> inner3 := ImageElm( inner, a3 ); [groupoid homomorphism : Ha4 -> Ha4 [ [ [(1,2,3) : -14 -> -14], [(2,3,4) : -14 -> -14], [() : -14 -> -13], [() : -14 -> -12] ], [ [(1,3,4) : -12 -> -12], [(1,2,4) : -12 -> -12], [(1,3)(2,4) : -12 -> -13], [() : -12 -> -14] ] ] : 0 -> 0] gap> (inner3 = inner1*inner2*inner1) and (inner3 = inner2*inner1*inner2); true true
‣ GroupoidAutomorphismByGroupAutos ( gpd, auts ) | ( operation ) |
Homogeneous, discrete groupoids are the second type of groupoid for which a method is provided for AutomorphismGroupOfGroupoid
. This is used in the XMod package for constructing crossed modules of groupoids. The two types of generating automorphism are GroupoidAutomorphismByGroupAutos
, which requires a list of group automorphisms, one for each object group, and GroupoidAutomorphismByObjectPerm
, which permutes the objects. So, if the object groups g have automorphism group Aut(g) and there are n objects, the autmorphism group of the groupoid has size n!|Aut(g)|^n.
gap> Dd8 := HomogeneousDiscreteGroupoid( d8, [ -13..-10] ); homogeneous, discrete groupoid: < d8, [ -13 .. -10 ] > gap> aut10 := GroupoidAutomorphismByObjectPerm( Dd8, [-12,-10,-11,-13] ); groupoid homomorphism : morphism from a homogeneous discrete groupoid: [ -13, -12, -11, -10 ] -> [ -12, -10, -11, -13 ] object homomorphisms: IdentityMapping( d8 ) IdentityMapping( d8 ) IdentityMapping( d8 ) IdentityMapping( d8 ) gap> gend8 := GeneratorsOfGroup( d8 );; gap> g1 := gend8[1];; gap> g2 := gend8[2];; gap> b1 := IdentityMapping( d8 );; gap> b2 := GroupHomomorphismByImages( d8, d8, gend8, [g1, g2*g1 ] );; gap> b3 := GroupHomomorphismByImages( d8, d8, gend8, [g1^g2, g2 ] );; gap> b4 := GroupHomomorphismByImages( d8, d8, gend8, [g1^g2, g2^(g1*g2) ] );; gap> aut11 := GroupoidAutomorphismByGroupAutos( Dd8, [b1,b2,b3,b4] ); groupoid homomorphism : morphism from a homogeneous discrete groupoid: [ -13, -12, -11, -10 ] -> [ -13, -12, -11, -10 ] object homomorphisms: IdentityMapping( d8 ) GroupHomomorphismByImages( d8, d8, [ (5,6,7,8), (5,7) ], [ (5,6,7,8), (5,8)(6,7) ] ) GroupHomomorphismByImages( d8, d8, [ (5,6,7,8), (5,7) ], [ (5,8,7,6), (5,7) ] ) GroupHomomorphismByImages( d8, d8, [ (5,6,7,8), (5,7) ], [ (5,8,7,6), (6,8) ] ) gap> ADd8 := AutomorphismGroupOfGroupoid( Dd8 ); <group with 4 generators> gap> Size( ADd8 ); ## 4!*8^4 98304 gap> genADd8 := GeneratorsOfGroup( ADd8 );; gap> Length( genADd8 ); 4 gap> w := GroupoidAutomorphismByGroupAutos( Dd8, [b2,b1,b1,b1] );; gap> x := GroupoidAutomorphismByGroupAutos( Dd8, [b3,b1,b1,b1] );; gap> y := GroupoidAutomorphismByObjectPerm( Dd8, [ -12, -11, -10, -13 ] );; gap> z := GroupoidAutomorphismByObjectPerm( Dd8, [ -12, -13, -11, -10 ] );; gap> ok := ForAll( genADd8, a -> a in[ w, x, y, z ] ); true gap> NADd8 := NiceObject( ADd8 );; gap> MADd8 := NiceMonomorphism( ADd8 );; gap> w1 := ImageElm( MADd8, w );; gap> x1 := ImageElm( MADd8, x );; gap> y1 := ImageElm( MADd8, y );; gap> z1 := ImageElm( MADd8, z );; gap> u := z*w*y*x*z; groupoid homomorphism : morphism from a homogeneous discrete groupoid: [ -13, -12, -11, -10 ] -> [ -11, -13, -10, -12 ] object homomorphisms: IdentityMapping( d8 ) GroupHomomorphismByImages( d8, d8, [ (5,6,7,8), (5,7) ], [ (5,6,7,8), (5,8)(6,7) ] ) IdentityMapping( d8 ) GroupHomomorphismByImages( d8, d8, [ (5,6,7,8), (5,7) ], [ (5,8,7,6), (5,7) ] ) gap> u1 := z1*w1*y1*x1*z1; (1,2,4,3)(5,17,23,11,6,18,24,16)(7,19,25,15,9,21,27,13)(8,20,26,14,10,22,28,12) gap> imu := ImageElm( MADd8, u );; gap> u1 = imu; true
‣ AutomorphismGroupoidOfGroupoid ( gpd ) | ( attribute ) |
If G is a single piece groupoid with automorphism group Aut(G), and if H is the union of k pieces, all isomorphic to G, then the automorphism group of H is the wreath product S_k ⋉ Aut(G). However, we find it more convenient to construct the automorphism groupoid of H. This is a single piece groupoid AUT(H) with k objects - the object lists of the pieces of H - and root group Aut(G). Isomorphisms between the root groups of the k pieces may be applied to the generators of Aut(G) to construct automorphism groups of these pieces, and then isomorphisms between these automorphism groups. We then construct AUT(H) using GroupoidByIsomorphisms
.
In the special case that H is homogeneous, there is no need to construct a collection of automorphism groups. Rather, the rays of AUT(H) are given by IsomorphismNewObjects
. For the example we use HGd8
constructed in subsection HomogeneousGroupoid
(4.1-5).
gap> HGd8 := HomogeneousGroupoid( Gd8, > [ [-39,-38,-37], [-36,-35,-34], [-33,-32,-31] ] );; gap> SetName( HGd8, "HGd8" ); gap> AHGd8 := AutomorphismGroupoidOfGroupoid( HGd8 ); Aut(HGd8) gap> ObjectList( AHGd8 ); [ [ -39, -38, -37 ], [ -36, -35, -34 ], [ -33, -32, -31 ] ] gap> RaysOfGroupoid( AHGd8 ){[2..3]}; [ groupoid homomorphism : [ [ [(5,6,7,8) : -39 -> -39], [(5,7) : -39 -> -39], [() : -39 -> -38], [() : -39 -> -37] ], [ [(5,6,7,8) : -36 -> -36], [(5,7) : -36 -> -36], [() : -36 -> -35], [() : -36 -> -34] ] ], groupoid homomorphism : [ [ [(5,6,7,8) : -39 -> -39], [(5,7) : -39 -> -39], [() : -39 -> -38], [() : -39 -> -37] ], [ [(5,6,7,8) : -33 -> -33], [(5,7) : -33 -> -33], [() : -33 -> -32], [() : -33 -> -31] ] ] ] gap> obgp := ObjectGroup( AHGd8, [ -36, -35, -34 ] );; gap> Size( obgp ); ## 3!*8^3 3072
Suppose that gpd
is the direct product of a group G and a complete digraph, and that ρ : G -> M is an isomorphism to a matrix group M. Then, if rep
is the isomorphic groupoid with the same objects and root group M, there is an isomorphism μ from gpd
to rep
mapping (g : i -> j) to (ρ g : i -> j).
When gpd
is a groupoid with rays, a representation can be obtained by restricting a representation of its parent.
gap> reps := IrreducibleRepresentations( a4 );; gap> rep4 := reps[4]; Pcgs([ (2,4,3), (1,3)(2,4), (1,2)(3,4) ]) -> [ [ [ 0, 0, 1 ], [ 1, 0, 0 ], [ 0, 1, 0 ] ], [ [ -1, 0, 0 ], [ 0, 1, 0 ], [ 0, 0, -1 ] ], [ [ 1, 0, 0 ], [ 0, -1, 0 ], [ 0, 0, -1 ] ] ] gap> Ra4 := Groupoid( Image( rep4 ), Ga4!.objects );; gap> ObjectList( Ra4 ) = [ -15 .. -11 ]; true gap> gens := GeneratorsOfGroupoid( Ga4 ); [ [(1,2,3) : -15 -> -15], [(2,3,4) : -15 -> -15], [() : -15 -> -14], [() : -15 -> -13], [() : -15 -> -12], [() : -15 -> -11] ] gap> images := List( gens, > g -> Arrow( Ra4, ImageElm(rep4,g![2]), g![3], g![4] ) ); [ [[ [ 0, 0, -1 ], [ 1, 0, 0 ], [ 0, -1, 0 ] ] : -15 -> -15], [[ [ 0, 1, 0 ], [ 0, 0, 1 ], [ 1, 0, 0 ] ] : -15 -> -15], [[ [ 1, 0, 0 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ] : -15 -> -14], [[ [ 1, 0, 0 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ] : -15 -> -13], [[ [ 1, 0, 0 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ] : -15 -> -12], [[ [ 1, 0, 0 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ] : -15 -> -11] ] gap> mor := GroupoidHomomorphismFromSinglePiece( Ga4, Ra4, gens, images ); groupoid homomorphism : [ [ [(1,2,3) : -15 -> -15], [(2,3,4) : -15 -> -15], [() : -15 -> -14], [() : -15 -> -13], [() : -15 -> -12], [() : -15 -> -11] ], [ [[ [ 0, 0, -1 ], [ 1, 0, 0 ], [ 0, -1, 0 ] ] : -15 -> -15], [[ [ 0, 1, 0 ], [ 0, 0, 1 ], [ 1, 0, 0 ] ] : -15 -> -15], [[ [ 1, 0, 0 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ] : -15 -> -14], [[ [ 1, 0, 0 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ] : -15 -> -13], [[ [ 1, 0, 0 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ] : -15 -> -12], [[ [ 1, 0, 0 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ] : -15 -> -11] ] ] gap> IsMatrixGroupoid( Ra4 ); true gap> a := Arrow( Ha4, (1,4,2), -12, -13 ); [(1,4,2) : -12 -> -13] gap> ImageElm( mor, a ); [[ [ 0, 0, 1 ], [ -1, 0, 0 ], [ 0, -1, 0 ] ] : -12 -> -13] gap> rmor := RestrictedMappingGroupoids( mor, Ha4 ); groupoid homomorphism : [ [ [(1,2,3) : -14 -> -14], [(2,3,4) : -14 -> -14], [() : -14 -> -13], [() : -14 -> -12] ], [ [[ [ 0, 0, -1 ], [ 1, 0, 0 ], [ 0, -1, 0 ] ] : -14 -> -14], [[ [ 0, 1, 0 ], [ 0, 0, 1 ], [ 1, 0, 0 ] ] : -14 -> -14], [[ [ 1, 0, 0 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ] : -14 -> -13], [[ [ 1, 0, 0 ], [ 0, 1, 0 ], [ 0, 0, 1 ] ] : -14 -> -12] ] ] gap> ParentMappingGroupoids( rmor ) = mor; true
Recall from sections 4.5 and GroupoidInnerAutomorphism
(6.1-2) the notion of conjugation in a groupoid, and the associated inner automorphisms.
It was mentioned there that the map ∧ : G -> Aut(G),~ a -> ∧ a, is not a groupoid homomorphism. It is in fact a groupoid action which we now define. Let {p,q,r,u,v} be distinct objects in G and let:
a_1 = (c_1 : p -> q),~~ a_2 = (c_2 : q -> r),~~ a_3 = (c_3 : q -> p),~~ a_4 = (c_4 : u -> v),
b_1 = (d_1 : p -> p),~~ b_2 = (d_2 : p -> p),~~ b_3 = (d_3 : q -> q),~~ b_4 = (c_3c_1 : q -> q) be arrows in G. Then the following conjugation identities must be satisfied:
∧(a_1a_2) ~=~ (∧ a_1)*(∧ a_2)*(∧ a_1) ~=~ (∧ a_2)*(∧ a_1)*(∧ a_2),
∧(b_1a_1) ~=~ (∧ b_1)*(∧ a_1)*(∧ b_1)^-1,
∧(a_1b_3) ~=~ (∧ b_3)^-1*(∧ a_1)*(∧ b_3),
∧(b_1b_2) ~=~ (∧ b_1)*(∧ b_2),
∧(a_1a_3) ~=~ (∧ a_1)*(∧ a_3)*(∧ b_4),
(∧ a_1)*(∧ a_4) ~=~ (∧ a_4)*(∧ a_1).
In the following example we check the first of these identities in one particular case.
gap> c1 := Arrow( Ha4, (1,2)(3,4), -14, -13);; gap> innc1 := GroupoidInnerAutomorphism( Ha4, c1 ); groupoid homomorphism : Ha4 -> Ha4 [ [ [(1,2,3) : -14 -> -14], [(2,3,4) : -14 -> -14], [() : -14 -> -13], [() : -14 -> -12] ], [ [(1,4,2) : -13 -> -13], [(1,4,3) : -13 -> -13], [() : -13 -> -14], [(1,2)(3,4) : -13 -> -12] ] ] gap> c2 := Arrow( Ha4, (1,4,2), -13, -12);; gap> innc2 := GroupoidInnerAutomorphism( Ha4, c2 ); groupoid homomorphism : Ha4 -> Ha4 [ [ [(1,2,3) : -14 -> -14], [(2,3,4) : -14 -> -14], [() : -14 -> -13], [() : -14 -> -12] ], [ [(1,2,3) : -14 -> -14], [(2,3,4) : -14 -> -14], [(1,4,2) : -14 -> -12], [(1,2,4) : -14 -> -13] ] ] gap> c12 := c1 * c2; [(2,4,3) : -14 -> -12] gap> innc12 := GroupoidInnerAutomorphism( Ha4, c12 ); groupoid homomorphism : Ha4 -> Ha4 [ [ [(1,2,3) : -14 -> -14], [(2,3,4) : -14 -> -14], [() : -14 -> -13], [() : -14 -> -12] ], [ [(1,4,2) : -12 -> -12], [(2,3,4) : -12 -> -12], [(2,3,4) : -12 -> -13], [(2,4,3) : -12 -> -14] ] ] gap> [ innc1 * innc2 * innc1 = innc12, innc2 * innc1 * innc2 = innc12 ]; [ true, true ]
‣ GroupoidActionByConjugation ( gpd ) | ( operation ) |
‣ IsGroupoidAction ( map ) | ( category ) |
‣ ActionMap ( act ) | ( attribute ) |
The operation GroupoidInnerAutomorphism
, which produces the conjugation action of G on itself, does satisfy the conjugation identities and so provides a standard example of an action.
An action is a record with fields Source
, Range
and ActionMap
.
The examples repeat those in section GroupoidInnerAutomorphism
(6.1-2): firstly with a groupoid acting on itself.
gap> act1 := GroupoidActionByConjugation( Ha4 ); <general mapping: Ha4 -> Aut(Ha4) > gap> IsGroupoidAction( act1 ); true gap> amap1 := ActionMap( act1 );; gap> amap1( h4 ) = inn1; true
Secondly with an action on a single piece, normal subgroupoid.
gap> act2 := GroupoidActionByConjugation( Ha4, Nk4 ); <general mapping: Ha4 -> Aut(Nk4) > gap> IsGroupoidAction( act2 ); true gap> amap2 := ActionMap( act2 );; gap> amap2( e4 ) = inn2; true
Thirly with an action on a homogeneous, discrete subgroupoid.
gap> act3 := GroupoidActionByConjugation( Ha4, Ma4 ); <general mapping: Ha4 -> Aut(Ma4) > gap> IsGroupoidAction( act3 ); true gap> amap3 := ActionMap( act3 );; gap> amap3( e4 ) = inn3; true
generated by GAPDoc2HTML