Before describing general functions for computing induced structures, we consider coproducts of crossed modules which provide induced crossed modules in certain cases.

Need to add here a reference (or two) for coproducts.

`‣ CoproductXMod` ( X1, X2 ) | ( operation ) |

`‣ CoproductInfo` ( X0 ) | ( attribute ) |

This function calculates the coproduct crossed module of crossed modules mathcal X_1 = (∂_1 : S_1 -> R) and mathcal X_2 = (∂_2 : S_2 -> R) which have a common range R. The source S_2 of mathcal X_2 acts on S_1 via ∂_2 and the action of mathcal X_1, so we can form a precrossed module (∂' : S_1 ⋉ S_2 -> R) where ∂'(s_1,s_2) = (∂_1 s_1)(∂_2 s_2). The action of this precrossed module is the diagonal action (s_1,s_2)^r = (s_1^r,s_2^r). Factoring out by the Peiffer subgroup, we obtain the coproduct crossed module mathcal X_1 ∘ mathcal X_2.

In the example the structure descriptions of the precrossed module, the Peiffer subgroup, and the resulting coproduct are printed out when `InfoLevel(InfoXMod}`

is at least 1. The coproduct comes supplied with attribute `CoproductInfo`

, which includes the embedding morphisms of the two factors.

gap> q8 := Group( (1,2,3,4)(5,8,7,6), (1,5,3,7)(2,6,4,8) );; gap> X8 := XModByAutomorphismGroup( q8 );; gap> s4b := Range( X8 );; gap> SetName( q8, "q8" ); SetName( s4b, "s4b" ); gap> a := q8.1;; b := q8.2;; gap> alpha := GroupHomomorphismByImages( q8, q8, [a,b], [a^-1,b] );; gap> beta := GroupHomomorphismByImages( q8, q8, [a,b], [a,b^-1] );; gap> k4b := Subgroup( s4b, [ alpha, beta ] );; SetName( k4b, "k4b" ); gap> Z8 := XModByNormalSubgroup( s4b, k4b );; gap> SetName( X8, "X8" ); SetName( Z8, "Z8" ); gap> SetInfoLevel( InfoXMod, 1 ); gap> XZ8 := CoproductXMod( X8, Z8 ); #I prexmod is [ [ 32, 47 ], [ 24, 12 ] ] #I peiffer subgroup is C2, [ 2, 1 ] #I the coproduct is [ "C2 x C2 x C2 x C2", "S4" ], [ [ 16, 14 ], [ 24, 12 ] ] [Group( [ f1, f2, f3, f4 ] )->s4b] gap> SetName( XZ8, "XZ8" ); gap> info := CoproductInfo( XZ8 ); rec( embeddings := [ [X8 => XZ8], [Z8 => XZ8] ], xmods := [ X8, Z8 ] ) gap> SetInfoLevel( InfoXMod, 0 );

`‣ InducedXMod` ( args ) | ( function ) |

`‣ IsInducedXMod` ( xmod ) | ( property ) |

`‣ SurjectiveInducedXMod` ( xmod, hom ) | ( operation ) |

`‣ InclusionInducedXModByCopower` ( xmod, hom, list ) | ( operation ) |

`‣ MorphismOfInducedXMod` ( xmod ) | ( attribute ) |

A morphism of crossed modules (σ, ρ) : mathcal X_1 -> mathcal X_2 factors uniquely through an induced crossed module ρ_∗ mathcal X_1 = (δ : ρ_∗ S_1 -> R_2). Similarly, a morphism of cat1-groups factors through an induced cat1-group. Calculation of induced crossed modules of mathcal X also provides an algebraic means of determining the homotopy 2-type of homotopy pushouts of the classifying space of mathcal X. For more background from algebraic topology see references in [BH78], [BW95], [BW96]. Induced crossed modules and induced cat1-groups also provide the building blocks for constructing pushouts in the categories *XMod* and *Cat1*.

Data for the cases of algebraic interest is provided by a conjugation crossed module mathcal X = (∂ : S -> R) and a homomorphism ι from R to a third group Q. (It is hoped to implement more general cases in due course.) The output from the calculation is a crossed module ι_∗mathcal X = (δ : ι_∗S -> Q) together with a morphism of crossed modules mathcal X -> ι_∗mathcal X. When ι is a surjection with kernel K then ι_∗S = S/[K,S] (see [BH78]). (For many years, up until June 2018, this manual has stated the result to be [K,S], though the correct quotient has been calculated.) When ι is an inclusion the induced crossed module may be calculated using a copower construction [BW95] or, in the case when R is normal in Q, as a coproduct of crossed modules ([BW96], but not yet implemented). When ι is neither a surjection nor an inclusion, ι is factored as the composite of the surjection onto the image and the inclusion of the image in Q, and then the composite induced crossed module is constructed. These constructions use Tietze transformation routines in the library file `tietze.gi`

.

As a first, surjective example, we take for mathcal X the normal inclusion crossed module of `a4`

in `s4`

, and for ι the surjection from `s4`

to `s3`

with kernel `k4`

. The induced crossed module is isomorphic to `X3`

.

gap> s4gens := GeneratorsOfGroup( s4 ); [ (1,2), (2,3), (3,4) ] gap> a4gens := GeneratorsOfGroup( a4 ); [ (1,2,3), (2,3,4) ] gap> s3b := Group( (5,6),(6,7) );; SetName( s3b, "s3b" ); gap> epi := GroupHomomorphismByImages( s4, s3b, s4gens, [(5,6),(6,7),(5,6)] );; gap> X4 := XModByNormalSubgroup( s4, a4 );; gap> indX4 := SurjectiveInducedXMod( X4, epi ); [a4/ker->s3b] gap> Display( indX4 ); Crossed module [a4/ker->s3b] :- : Source group a4/ker has generators: [ (1,3,2), (1,2,3) ] : Range group s3b has generators: [ (5,6), (6,7) ] : Boundary homomorphism maps source generators to: [ (5,6,7), (5,7,6) ] : Action homomorphism maps range generators to automorphisms: (5,6) --> { source gens --> [ (1,2,3), (1,3,2) ] } (6,7) --> { source gens --> [ (1,2,3), (1,3,2) ] } These 2 automorphisms generate the group of automorphisms. gap> morX4 := MorphismOfInducedXMod( indX4 ); [[a4->s4] => [a4/ker->s3b]]

For a second, injective example we take for mathcal X a conjugation crossed module.

gap> d8 := Subgroup( d16, [ b1^2, b2 ] ); SetName( d8, "d8" ); Group([ (11,13,15,17)(12,14,16,18), (12,18)(13,17)(14,16) ]) gap> c4 := Subgroup( d8, [ b1^2 ] ); SetName( c4, "c4" ); Group([ (11,13,15,17)(12,14,16,18) ]) gap> Y16 := XModByNormalSubgroup( d16, d8 ); [d8->d16] gap> Y8 := SubXMod( Y16, c4, d8 ); [c4->d8] gap> inc8 := InclusionMorphism2DimensionalDomains( Y16, Y8 ); [[c4->d8] => [d8->d16]] gap> incd8 := RangeHom( inc8 );; gap> indY8 := InducedXMod( Y8, incd8 ); i*([c4->d8]) gap> StructureDescription( indY8 ); [ "C4 x C4", "D16" ] gap> morY8 := MorphismOfInducedXMod( indY8 ); [[c4->d8] => i*([c4->d8])] gap> s3c := Subgroup( s4, [ (2,3), (3,4) ] );; gap> SetName( s3c, "s3c" ); gap> indXs3c := InducedXMod( s4, s3c, s3c ); i*([s3c->s3c]) gap> StructureDescription( indXs3c ); [ "GL(2,3)", "S4" ]

For a third example we use the version `InducedXMod(Q,R,S)`

of this global function. We take the identity mapping on `s3c`

as boundary, and the inclusion of `s3c`

in `s4`

as ι. The induced group is a general linear group `GL(2,3)`

.

gap> s3c := Subgroup( s4, [ (2,3), (3,4) ] );; gap> SetName( s3c, "s3c" ); gap> indXs3c := InducedXMod( s4, s3c, s3c ); #I induced group has Size: 48 i*([s3c->s3c]) gap> StructureDescription( indXs3c ); [ "GL(2,3)", "S4" ]

`‣ AllInducedXMods` ( Q ) | ( operation ) |

This function calculates all the induced crossed modules `InducedXMod( Q, R, S )`

, where `R`

runs over all conjugacy classes of subgroups of `Q`

and `S`

runs over all non-trivial subgroups of `R`

.

gap> all := AllInducedXMods( q8 );; gap> ids := List( all, x -> IdGroup(x) );; gap> Sort( ids ); gap> ids; [ [ [ 1, 1 ], [ 8, 4 ] ], [ [ 1, 1 ], [ 8, 4 ] ], [ [ 1, 1 ], [ 8, 4 ] ], [ [ 1, 1 ], [ 8, 4 ] ], [ [ 4, 2 ], [ 8, 4 ] ], [ [ 4, 2 ], [ 8, 4 ] ], [ [ 4, 2 ], [ 8, 4 ] ], [ [ 16, 2 ], [ 8, 4 ] ], [ [ 16, 2 ], [ 8, 4 ] ], [ [ 16, 2 ], [ 8, 4 ] ], [ [ 16, 14 ], [ 8, 4 ] ] ]

`‣ InducedCat1Group` ( args ) | ( function ) |

`‣ InducedCat1GroupByFreeProduct` ( grp, hom ) | ( property ) |

This area awaits development.

generated by GAPDoc2HTML