<!-- ------------------------------------------------------------------- -->
<!--                                                                     -->
<!--  apps.xml              XMod documentation            Chris Wensley  -->
<!--                                                        & Murat Alp  -->
<!--  Copyright (C) 2001-2019, Chris Wensley et al,                      --> 
<!--  School of Computer Science, Bangor University, U.K.                --> 
<!--                                                                     -->
<!-- ------------------------------------------------------------------- -->

<?xml version="1.0" encoding="UTF-8"?>

<Chapter Label="chap-apps">
<Heading>Applications</Heading>

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. 


<Section><Heading>Free Loop Spaces</Heading>

<Index>loop space</Index>
<Index>free loop space</Index>

These functions have been used to produce examples for Ronald Brown's paper 
<E>Crossed modules, and the homotopy <M>2</M>-type of a free loop space</E>
<Cite Key="B18" />.  
The relevant theorem in that paper is as follows. 
<P/>
<B>Theorem 2.1</B> 
<E>
Let  <M>\calM = (\partial : M \to P)</M> be a crossed module of groups 
and let  <M>X = B\calM</M> be the classifying space of <M>\calM</M>. 
Then the components of <M>LX</M>, the free loop space on <M>X</M>, 
are determined by equivalence classes of elements <M>a \in P</M> 
where <M>a,a'</M> are equivalent if and only if there are elements 
<M>m \in M,\, p \in P</M> such that <M>a'= p + a - \partial m - p</M>. 
</E>
<P/>
<E>
Further the homotopy <M>2</M>-type of a component of <M>LX</M> 
given by <M>a \in P</M> is determined by the crossed module of groups 
<M>L\calM[a] = (\partial_a : M \to P(a))</M> where: 
</E>
<List>
<Item><E>
<M>P(a)</M> is the subgroup of the cat<M>^1</M>-group 
<M>G = P \ltimes M</M> such that <M>\partial m = [p,a] = -p-a+p+a</M>;
</E></Item>
<Item><E>
<M>\partial_a(m) = (\partial m, m^{-1}m^a)</M> for <M>m \in M</M>;
</E></Item>
<Item><E>
the action of <M>P(a)</M> on <M>M</M> is given by 
<M>n^{(p,m)} = n^p</M> for <M>n \in M,\, (p,m) \in P(a)</M>.
</E></Item>
</List>
<P/>
<E>
In particular <M>\pi_1(LX,a)</M> is isomorphic to 
<M>\mathrm{cokernel}(\partial_a)</M>, 
and <M>\pi_2(LX,a) \cong \pi_2(X,*)^{\bar{a}}</M>, 
the elements of <M>\pi_2(X,*)</M> fixed under the action of <M>\bar{a}</M>, 
the class of <M>a</M> in <M>\pi_1(X,*)</M>.
</E>
<P/>
<E>
There is an exact sequence
<M> \pi \stackrel{\,\phi\,}{\to} \pi \to \pi_1(LX,a) 
    \to C_{\bar{a}}(\pi_1(X,*)) \to 1</M>, 
in which <M>\pi = \pi_2(X,*)</M>, and <M>\phi</M> 
is the morphism <M>m \mapsto m^{-1}m^a</M>. 
</E>
<P/>
<ManSection>
   <Oper Name="LoopsXMod"
         Arg="M a" />
   <Oper Name="AllLoopsXMod"
         Arg="M" />
<Description>
The operation <C>LoopsXMod(M,a)</C> calculates the crossed module 
<M>L\calM[a]</M> described in the theorem. 
<P/> 
The operation <C>AllLoopsXMod(M)</C> returns a list of crossed modules, 
one for each equivalence class of elements <M>p \in P</M>. 
<B>These operations should be considered experimental at present.</B> 
<P/>
In the example below the automorphism crossed module <C>X8</C> has 
<M>M \cong C_2^3</M> and <M>P = PSL(3,2)</M> 
is the automorphism group of <M>M</M>. 
There are <M>6</M> equivalence classes and, for each <M>LX</M> calculated, 
the <Ref Meth="Size" Label="for crossed modules"/> and 
<Ref Meth="StructureDescription" Label="for 2d-groups"/> are printed out. 
</Description>
</ManSection>
<P/>
<Example>
<![CDATA[
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) ]
]]>
</Example>

</Section>

</Chapter>
