This chapter was added in April 2018 for version 2.66 of **XMod**. Initially it describes crossed modules for free loop spaces. Further applications may arise in due course.

These functions have been used to produce examples for Ronald Brown's paper *Crossed modules, and the homotopy 2-type of a free loop space* [Bro18]. The relevant theorem in that paper is as follows.

**Theorem 2.1** * Let calM = (∂ : M -> P) be a crossed module of groups and let X = BcalM be the classifying space of calM. Then the components of LX, the free loop space on X, are determined by equivalence classes of elements a ∈ P where a,a' are equivalent if and only if there are elements m ∈ M, p ∈ P such that a'= p + a - ∂ m - p. *

* Further the homotopy 2-type of a component of LX given by a ∈ P is determined by the crossed module of groups LcalM[a] = (∂_a : M -> P(a)) where: *

*P(a) is the subgroup of the cat^1-group G = P ⋉ M such that ∂ m = [p,a] = -p-a+p+a;**∂_a(m) = (∂ m, m^-1m^a) for m ∈ M;**the action of P(a) on M is given by n^(p,m) = n^p for n ∈ M, (p,m) ∈ P(a).*

* In particular π_1(LX,a) is isomorphic to mathrmcokernel(∂_a), and π_2(LX,a) ≅ π_2(X,*)^bara}, the elements of π_2(X,*) fixed under the action of bara, the class of a in π_1(X,*). *

* There is an exact sequence π stackrelϕ-> π -> π_1(LX,a) -> C_bara}(π_1(X,*)) -> 1, in which π = π_2(X,*), and ϕ is the morphism m ↦ m^-1m^a. *

`‣ LoopsXMod` ( M, a ) | ( operation ) |

`‣ AllLoopsXMod` ( M ) | ( operation ) |

The operation `LoopsXMod(M,a)`

calculates the crossed module LcalM[a] described in the theorem.

The operation `AllLoopsXMod(M)`

returns a list of crossed modules, one for each equivalence class of elements p ∈ P. **These operations should be considered experimental at present.**

In the example below the automorphism crossed module `X8`

has M ≅ C_2^3 and P = PSL(3,2) is the automorphism group of M. There are 6 equivalence classes and, for each LX calculated, the `Size`

(2.1-11) and `StructureDescription`

(2.8-1) are printed out.

gap> k8 := Group( (3,4), (5,6), (7,8) );; gap> SetName( k8, "k8" ); gap> Y8 := XModByAutomorphismGroup( k8 );; gap> X8 := Image( IsomorphismPerm2DimensionalGroup( Y8 ) );; gap> SetName( X8, "X8" ); gap> Print( "X8: ", Size( X8 ), " : ", StructureDescription( X8 ), "\n" ); X8: [ 8, 168 ] : [ "C2 x C2 x C2", "PSL(3,2)" ] gap> LX := LoopsXMod( X8, (1,2)(5,6) );; gap> Size( LX ); StructureDescription( LX ); [ 8, 64 ] [ "C2 x C2 x C2", "((C2 x C2 x C2 x C2) : C2) : C2" ] gap> SetInfoLevel( InfoXMod, 1 ); gap> LX8 := AllLoopsXMod( X8 );; #I LoopsXMod with a = (), [ 8, 1344 ] #I LoopsXMod with a = (4,5)(6,7), [ 8, 64 ] #I LoopsXMod with a = (2,3)(4,6,5,7), [ 8, 32 ] #I LoopsXMod with a = (2,4,6)(3,5,7), [ 8, 24 ] #I LoopsXMod with a = (1,2,4,3,6,7,5), [ 8, 56 ] #I LoopsXMod with a = (1,2,4,5,7,3,6), [ 8, 56 ] gap> iso := IsomorphismGroups( Range( LX ), Range( LX8[2] ) ); [ (1,2)(3,4)(5,6)(7,8), (1,3)(2,4)(5,7)(6,8), (1,5)(2,6)(3,7)(4,8), (5,8)(6,7), (2,3)(6,7), (2,7)(3,6) ] -> [ (1,5)(2,6)(3,7)(4,8), (1,6)(2,5)(3,8)(4,7), (1,4)(2,3)(5,8)(6,7), (1,2)(5,6), (1,2)(3,4), (1,3)(2,4) ]

generated by GAPDoc2HTML