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 = (\partial : M \to P)\) be a crossed module of groups and let \(X = B\calM\) 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 \in P\) where \(a,a'\) are equivalent if and only if there are elements \(m \in M,\, p \in P\) such that \(a'= p + a - \partial m - p\). *

* Further the homotopy \(2\)-type of a component of \(LX\) given by \(a \in P\) is determined by the crossed module of groups \(L\calM[a] = (\partial_a : M \to P(a))\) where: *

*\(P(a)\) is the subgroup of the cat\(^1\)-group \(G = P \ltimes M\) such that \(\partial m = [p,a] = -p-a+p+a\);**\(\partial_a(m) = (\partial m, m^{-1}m^a)\) for \(m \in M\);**the action of \(P(a)\) on \(M\) is given by \(n^{(p,m)} = n^p\) for \(n \in M,\, (p,m) \in P(a)\).*

* In particular \(\pi_1(LX,a)\) is isomorphic to \(\mathrm{cokernel}(\partial_a)\), and \(\pi_2(LX,a) \cong \pi_2(X,*)^{\bar{a}}\), the elements of \(\pi_2(X,*)\) fixed under the action of \(\bar{a}\), the class of \(a\) in \(\pi_1(X,*)\). *

* There is an exact sequence \( \pi \stackrel{\,\phi\,}{\to} \pi \to \pi_1(LX,a) \to C_{\bar{a}}(\pi_1(X,*)) \to 1\), in which \(\pi = \pi_2(X,*)\), and \(\phi\) is the morphism \(m \mapsto m^{-1}m^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 \(L\calM[a]\) described in the theorem.

The operation `AllLoopsXMod(M)`

returns a list of crossed modules, one for each equivalence class of elements \([a] \subseteq P\).

In the example below the automorphism crossed module `X8`

has \(M \cong 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> Size2d( 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