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. *

`‣ LoopClasses` ( M ) | ( operation ) |

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

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

The operation `LoopClasses`

computes the equivalence classes [a] described above. These are all unions of conjugacy classes.

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 [a] ⊆ P.

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 which, in this case, are identical with the conjugacy classes. For each LX calculated, the `IdGroup`

(2.8-1) is printed out.

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> classes := LoopClasses( X8 );; gap> List( classes, c -> Length(c) ); [ 1, 21, 56, 42, 24, 24 ] gap> LX := LoopsXMod( X8, (1,2)(5,6) );; gap> Size( LX ); [ 8, 64 ] gap> IdGroup( LX ); [ [ 8, 5 ], [ 64, 138 ] ] gap> SetInfoLevel( InfoXMod, 1 ); gap> LX8 := AllLoopsXMod( X8 );; #I LoopsXMod with a = (), IdGroup = [ [ 8, 5 ], [ 1344, 11686 ] ] #I LoopsXMod with a = (4,5)(6,7), IdGroup = [ [ 8, 5 ], [ 64, 138 ] ] #I LoopsXMod with a = (2,3)(4,6,5,7), IdGroup = [ [ 8, 5 ], [ 32, 6 ] ] #I LoopsXMod with a = (2,4,6)(3,5,7), IdGroup = [ [ 8, 5 ], [ 24, 13 ] ] #I LoopsXMod with a = (1,2,4,3,6,7,5), IdGroup = [ [ 8, 5 ], [ 56, 11 ] ] #I LoopsXMod with a = (1,2,4,5,7,3,6), IdGroup = [ [ 8, 5 ], [ 56, 11 ] ] gap> iso := IsomorphismGroups( Range( LX ), Range( LX8[2] ) );; gap> iso = fail; false

generated by GAPDoc2HTML