  
  [1X2 Irreducible Representations[0X
  
  Let  G  be a finite group and chi be an ordinary irreducible character of G.
  In  this  chapter  we  introduce  some  functions  to  construct  a  complex
  representation  R  of  G affording chi. We proceed recursively, reducing the
  problem  to  smaller subgroups of G or characters of smaller degree until we
  obtain  a  problem  which  we  can deal with directly. Inputs of most of the
  functions  are a given group G, and an irreducible character chi. The output
  is  a  mapping  (representation)  which  assigns  to each generator x of G a
  matrix  R(x).  We can use these functions for all groups and all irreducible
  characters  chi  of  degree  less  than  100  although in principle the same
  methods  can be extended to characters of larger degree. The main methods in
  these functions which are used to construct representations of finite groups
  are   Induction,   Extension,   Tensor   Product  and  Dixon's  method  (for
  constructing  representations  of  simple groups and their covers) [Dab-05],
  and Projective Representation method [DD-08].
  
  
  [1X2.1 Constructing Representations[0X
  
  This  section  introduces the main function to compute a representation of a
  finite group G affording an irreducible character chi of G.
  
  [1X2.1-1 IrreducibleAffordingRepresentation[0m
  
  [2X> IrreducibleAffordingRepresentation( [0X[3Xchi[0X[2X ) ________________________[0Xfunction
  
  called with an irreducible character [3Xchi[0m of a group G, this function returns
  a  mapping  (representation) which maps each generator of G to a d*d matrix,
  where  d  is  the  degree of [3Xchi[0m. The group generated by these matrices (the
  image  of  the  map)  is  a matrix group which is isomorphic to G modulo the
  kernel  of the map. If G is a solvable group then there is no restriction on
  the  degree of [3Xchi[0m. In the case that G is not solvable and the character [3Xchi[0m
  has  degree  bigger  than  100 the output maybe is not correct. In this case
  sometimes  the output mapping does not afford the given character or it does
  not return any mapping.
  
  [4X---------------------------  Example  ----------------------------[0X
    [4Xgap> s := PerfectGroup( 129024, 2 );;
[0X
    [4Xgap> G := Image(IsomorphismPermGroup( s ));;
[0X
    [4Xgap> chi := Irr( G )[36];; 
[0X
    [4Xgap> chi[1];
[0X
    [4X64
[0X
    [4Xgap> IrreducibleAffordingRepresentation( chi );; 
[0X
    [4X#I  Warning: EpimorphismSchurCover via Holt's algorithm is under construction
[0X
    [4Xgap> time; 
[0X
    [4X92657
[0X
    [4X [0X
  [4X------------------------------------------------------------------[0X
  
  [1X2.1-2 IsAffordingRepresentation[0m
  
  [2X> IsAffordingRepresentation( [0X[3Xchi, rep[0X[2X ) ____________________________[0Xfunction
  
  If  [3Xchi[0m  and  [3Xrep[0m  are  a  character  and  a  representation  of  a group G,
  respectively,  then  [10XIsAffordingRepresentation[0m  returns [10Xtrue[0m if the trace of
  [3Xrep(x)[0m equals [3Xchi(x)[0m for all elements x in G.
  
  [4X---------------------------  Example  ----------------------------[0X
    [4Xgap> G := GL(2,7);:
[0X
    [4Xgap> chi := Irr(G)[ 29 ];;
[0X
    [4Xgap> rep := IrreducibleAffordingRepresentation( chi );
[0X
    [4XCompositionMapping( [(8,15,22,29,36,43)(9,16,23,30,37,44)
[0X
    [4X(10,17,24,31,38,45)(11,18,25,32,39,46)(12,19,26,33,40,47)
[0X
    [4X(13,20,27,34,41,48)(14,21,28,35,42,49), (2,29,12)(3,36,20)
[0X
    [4X(4,43,28)(5,8,30)(6,15,38)(7,22,46)(9,44,14)(10,16,17)
[0X
    [4X(11,37,27)(13,23,39)(18,24,25)(19,45,35)(21,31,47)
[0X
    [4X(26,32,33)(34,40,41)(42,48,49) ] ->
[0X
    [4X[ [ [ 0, 0, 0, -1, 0, 0, 0 ],
[0X
    [4X    [ 1, 0, -1, -1, 1, 0, -1 ] 
[0X
    [4X    [ 2, -1, -2, -2, 1, 2, -1 ],
[0X
    [4X    [ 0, 0, -1, 0, 0, 0, 0 ],
[0X
    [4X    [ 1, 0, -2, 0, 0, 1, -1 ],
[0X
    [4X    [ 1, 0, -2, -1, 1, 1, -1 ],
[0X
    [4X    [ -2, 1, 1, 1, -1, -1, 0 ] ],
[0X
    [4X  [ [ 1, -1, -1, -1, 0, 2, -1 ],
[0X
    [4X    [ 0, 0, 1, 0, 0, 0, 0 ],
[0X
    [4X    [ 0, 0, 0, 0, 0, 1, 0 ],
[0X
    [4X    [ 0, 1, -1, 0, 0, 0, -1 ],
[0X
    [4X    [ 0, 1, 0, 1, 0, -1, 0 ],
[0X
    [4X    [ 0, 1, 0, 0, 0, 0, 0 ],
[0X
    [4X    [ 0, 0, 0, 0, -1, 0, 0 ] ] ], (action isomorphism) )
[0X
    [4Xgap> IsAffordingRepresentation( chi, rep );
[0X
    [4Xtrue
[0X
    [4X [0X
  [4X------------------------------------------------------------------[0X
  
  We   can   obtain   the   size  of  the  image  of  this  representation  by
  [10XSize(Image(rep))[0m  and  compute  the value for an arbitrary element x in G by
  [10Xx[0m^[10Xrep[0m.
  
  
  [1X2.2 Induction[0X
  
  [1X2.2-1 InducedSubgroupRepresentation[0m
  
  [2X> InducedSubgroupRepresentation( [0X[3XG, rep[0X[2X ) __________________________[0Xfunction
  
  computes  a  representation  of  [3XG[0m  induced from the representation [3Xrep[0m of a
  subgroup  H  of  [3XG[0m.  If  [3Xrep[0m  has  degree  d  then  the degree of the output
  representation is d*|G:H|.
  
  [4X---------------------------  Example  ----------------------------[0X
    [4Xgap> G := SymmetricGroup( 6 );;
[0X
    [4Xgap> H := AlternatingGroup( 6 );;
[0X
    [4Xgap> chi := Irr( H )[ 2 ];;
[0X
    [4Xgap> rep := IrreducibleAffordingRepresentation( chi );;
[0X
    [4Xgap> InducedSubgroupRepresentation( G, rep ); 
[0X
    [4X[ (1,2,3,4,5,6), (1,2) ] ->
[0X
    [4X[ [ [ 0, 0, 0, 0, 0, 1, 1, -1, -1, -1 ],
[0X
    [4X    [ 0, 0, 0, 0, 0, 1, 0, -1, 0, -1 ],
[0X
    [4X    [ 0, 0, 0, 0, 0, 1, 0, 0, -1, -1 ],
[0X
    [4X    [ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 ],
[0X
    [4X    [ 0, 0, 0, 0, 0, 0, 1, -1, 0, -1 ],
[0X
    [4X    [ 1, 1, -1, -1, -1, 0, 0, 0, 0, 0 ],
[0X
    [4X    [ 1, 0, 0, -1, -1, 0, 0, 0, 0, 0 ],
[0X
    [4X    [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[0X
    [4X    [ 1, 0, -1, 0, -1, 0, 0, 0, 0, 0 ],
[0X
    [4X    [ 0, 1, 0, -1, -1, 0, 0, 0, 0, 0 ] ],
[0X
    [4X  [ [ 0, 0, 0, 0, 0, 1, 0, 0, 0, 0 ],
[0X
    [4X    [ 0, 0, 0, 0, 0, 0, 1, 0, 0, 0 ],
[0X
    [4X    [ 0, 0, 0, 0, 0, 0, 0, 0, 1, 0 ],
[0X
    [4X    [ 0, 0, 0, 0, 0, 0, 0, 1, 0, 0 ],
[0X
    [4X    [ 0, 0, 0, 0, 0, 1, 1, -1, -1, -1 ],
[0X
    [4X    [ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
[0X
    [4X    [ 0, 1, 0, 0, 0, 0, 0, 0, 0, 0 ],
[0X
    [4X    [ 0, 0, 0, 1, 0, 0, 0, 0, 0, 0 ],
[0X
    [4X    [ 0, 0, 1, 0, 0, 0, 0, 0, 0, 0 ],
[0X
    [4X    [ 1, 1, -1, -1, -1, 0, 0, 0, 0, 0 ] ] ]
[0X
    [4X	[0X
  [4X------------------------------------------------------------------[0X
  
  
  [1X2.3 Extension[0X
  
  In  this  section we introduce some functions for extending a representation
  of a subgroup to the whole group.
  
  [1X2.3-1 ExtendedRepresentation[0m
  
  [2X> ExtendedRepresentation( [0X[3Xchi, rep[0X[2X ) _______________________________[0Xfunction
  
  Suppose  H is a subgroup of a group G and [3Xchi[0m is an irreducible character of
  G  such that the restriction of [3Xchi[0m to H, phi say, is irreducible. If [3Xrep[0m is
  an irreducible representation of H affording phi then [10XExtendedRepresentation[0m
  extends  the representation [3Xrep[0m of H to a representation of G affording [3Xchi[0m.
  This  function call can be quite expensive when the representation [3Xrep[0m has a
  large degree.
  
  [4X---------------------------  Example  ----------------------------[0X
    [4Xgap> G := AlternatingGroup( 6 );;
[0X
    [4Xgap> H := Group([ (1,2,3,4,6), (1,4)(5,6) ]);;
[0X
    [4Xgap> chi := Irr( G )[ 2 ];;
[0X
    [4Xgap> phi := RestrictedClassFunction( chi, H );;
[0X
    [4Xgap> IsIrreducibleCharacter( phi );
[0X
    [4Xtrue
[0X
    [4Xgap> rep := IrreducibleAffordingRepresentation( phi );;
[0X
    [4Xgap> ext := ExtendedRepresentation( chi, rep );
[0X
    [4X#I  Need to extend a representation of degree 5. This may take a while.
[0X
    [4X[ (1,2,3,4,5), (4,5,6) ] -> [
[0X
    [4X[ [ 0, 1, 0, -1, -1 ],
[0X
    [4X  [ 0, 0, 0, 1, 0 ],
[0X
    [4X  [ -1, -1, -1, 0, 0 ],
[0X
    [4X  [ 0, 0, 0, 0, -1 ],
[0X
    [4X  [ 0, 0, 1, 1, 1 ] ],
[0X
    [4X[ [ 1, 0, 1, 0, 1 ],
[0X
    [4X  [ 0, 1, 0, 0, 0 ],
[0X
    [4X  [ -1, -1, 0, 1, 0 ],
[0X
    [4X  [ 1, 1, 1, 0, 0 ],
[0X
    [4X  [ 0, 0, -1, 0, 0 ] ] ]
[0X
    [4Xgap> IsAffordingRepresentation( chi, ext );
[0X
    [4Xtrue
[0X
    [4X		    [0X
  [4X------------------------------------------------------------------[0X
  
  [1X2.3-2 ExtendedRepresentationNormal[0m
  
  [2X> ExtendedRepresentationNormal( [0X[3Xchi, rep[0X[2X ) _________________________[0Xfunction
  
  Suppose  H  is  a  normal  subgroup  of  a group G and [3Xchi[0m is an irreducible
  character  of  G  such  that  the  restriction  of  [3Xchi[0m  to  H,  phi say, is
  irreducible. If [3Xrep[0m is an irreducible representation of H affording phi then
  [10XExtendedRepresentationNormal[0m  extends  the  representation  [3Xrep[0m  of  H  to a
  representation  of  G  affording  [3Xchi[0m.  This function is more efficient than
  [10XExtendedRepresentation[0m.
  
  [4X---------------------------  Example  ----------------------------[0X
    [4Xgap> G := GL(2,7);;
[0X
    [4Xgap> chi := Irr( G )[ 29 ];;
[0X
    [4Xgap> H := SL(2,7);;
[0X
    [4Xgap> phi := RestrictedClassFunction( chi, H );;
[0X
    [4Xgap> IsIrreducibleCharacter( phi );
[0X
    [4Xtrue
[0X
    [4Xgap> rep := IrreducibleAffordingRepresentation( phi );;
[0X
    [4Xgap> ext := ExtendedRepresentationNormal( chi, rep );
[0X
    [4X#I  Need to extend a representation of degree 7. This may take a while.
[0X
    [4XCompositionMapping( [(8,15,22,29,36,43)(9,16,23,30,37,44)
[0X
    [4X (10,17,24,31,38,45)(11,18,25,32,39,46)(12,19,26,33,40,47)
[0X
    [4X (13,20,27,34,41,48)(14,21,28,35,42,49),(2,29,12)(3,36,20)
[0X
    [4X (4,43,28)(5,8,30)(6,15,38)(7,22,46)(9,44,14)(10,16,17)
[0X
    [4X (11,37,27)(13,23,39)(18,24,25)(19,45,35)(21,31,47)
[0X
    [4X (26,32,33)(34,40,41)(42,48,49) ] ->
[0X
    [4X[ [ [ -1, 0, 0, 1, 0, -1, 0 ], [ -1, 0, 0, 0, 0, 0, 0 ],
[0X
    [4X  [ -1, 1, 0, 0, -1, 0, 0 ], [ 0, -1, 0, 0, 0, 0, 0 ],
[0X
    [4X  [ -1, -1, 1, 0, 1, -1, 0 ], [ 0, 0, 0, -1, 0, 0, 0 ],
[0X
    [4X  [ -1, 0, 1, -1, 1, 0, -1 ] ],
[0X
    [4X  [ [ 1, -1, 0, 1, 0, -1, 1 ], [ 1, 0, -1, 1, -1, 0, 1 ],
[0X
    [4X  [ 1, -1, 0, 1, -1, 0, 1 ], [ 0, 0, -1, 0, 0, 0, 0 ],
[0X
    [4X  [ -1, 0, 0, 1, 0, -1, 0 ], [ -1, 0, 0, 0, 0, 0, 0 ],
[0X
    [4X  [ -1, 1, 0, 0, -1, 0, 0 ] ] ], (action isomorphism) )	
[0X
    [4Xgap> IsAffordingRepresentation( chi, ext );
[0X
    [4Xtrue
[0X
    [4X	  [0X
  [4X------------------------------------------------------------------[0X
  
  
  [1X2.4 Character Subgroups[0X
  
  If  chi  is  an  irreducible character of a group G and H is a subgroup of G
  such  that  the  restriction  of  chi  to  H  has  a linear constituent with
  multiplicity  one,  then we call H a character subgroup relative to chi or a
  chi-subgroup.
  
  [1X2.4-1 CharacterSubgroupRepresentation[0m
  
  [2X> CharacterSubgroupRepresentation( [0X[3Xchi[0X[2X ) ___________________________[0Xfunction
  [2X> CharacterSubgroupRepresentation( [0X[3Xchi, H[0X[2X ) ________________________[0Xfunction
  
  returns  a  representation affording [3Xchi[0m by finding a [3Xchi[0m-subgroup and using
  the  method  described in [Dix-93]. If the second argument is a [3Xchi[0m-subgroup
  then  it  returns  a  representation  affording  [3Xchi[0m without searching for a
  [3Xchi[0m-subgroup. In this case an error is signalled if no [3Xchi[0m-subgroup exists.
  
  [1X2.4-2 IsCharacterSubgroup[0m
  
  [2X> IsCharacterSubgroup( [0X[3Xchi, H[0X[2X ) ____________________________________[0Xfunction
  
  is [10Xtrue[0m if [3XH[0m is a [3Xchi[0m-subgroup and [10Xfalse[0m otherwise.
  
  [4X---------------------------  Example  ----------------------------[0X
    [4Xgap> G := AlternatingGroup( 8 );;
[0X
    [4Xgap> chi := Irr( G )[ 2 ];;
[0X
    [4Xgap> H := AlternatingGroup( 3 );;
[0X
    [4Xgap> IsCharacterSubgroup( chi, H );
[0X
    [4Xtrue
[0X
    [4Xgap> rep := CharacterSubgroupRepresentation( chi, H );
[0X
    [4X[ (1,2,3,4,5,6,7), (6,7,8) ] -> [ [ [
[0X
    [4X 1/3*E(3)+2/3*E(3)^2, 0, 0, -E(3), 0, -1/3*E(3)-2/3*E(3)^2, 1 ],
[0X
    [4X   [ 2/3*E(3)+4/3*E(3)^2, 0, 1, 0, 0, 1/3*E(3)-1/3*E(3)^2, 0 ],
[0X
    [4X   [ 2/3*E(3)+4/3*E(3)^2, 0, 0, 1, 0, 1/3*E(3)-1/3*E(3)^2, 0 ],
[0X
    [4X   [ E(3)^2, 0, 0, 0, 0, 0, 0 ],
[0X
    [4X   [ 2/3*E(3)+4/3*E(3)^2, 0, 0, 0, 1, 1/3*E(3)-1/3*E(3)^2, 0 ],
[0X
    [4X   [ -2/3*E(3)-1/3*E(3)^2, 0, 0, -1, 0, 2/3*E(3)+1/3*E(3)^2, E(3)^2 ],
[0X
    [4X   [ 0, 1, 0, 0, 0, 0, 0 ] ],
[0X
    [4X [ [ 1, 0, 0, 0, 0, 0, 0 ], [ 0, 1, 0, 0, 0, 0, 0 ],
[0X
    [4X   [ 0, 0, 0, 1, 0, 0, 0 ], [ 0, 0, 0, 0, 1, 0, 0 ],
[0X
    [4X   [ 0, 0, 1, 0, 0, 0, 0 ], [ 0, 0, 0, 0, 0, 1, 0 ],
[0X
    [4X   [ 0, 0, 0, -E(3), E(3), 0, 1 ] ] ]
[0X
    [4X	[0X
  [4X------------------------------------------------------------------[0X
  
  [1X2.4-3 AllCharacterPSubgroups[0m
  
  [2X> AllCharacterPSubgroups( [0X[3XG, chi[0X[2X ) _________________________________[0Xfunction
  
  returns  a  list  of  all  p-subgroups  of  [3XG[0m  which  are [3Xchi[0m-subgroups. The
  subgroups are chosen up to conjugacy in [3XG[0m.
  
  [1X2.4-4 AllCharacterStandardSubgroups[0m
  
  [2X> AllCharacterStandardSubgroups( [0X[3XG, chi[0X[2X ) __________________________[0Xfunction
  
  returns   a  list  containing  well  described  subgroups  of  [3XG[0m  which  are
  [3Xchi[0m-subgroups.  This  list  may  contain  Sylow  subgroups and their derived
  subgroups, normalizers and centralzers in [3XG[0m.
  
  [1X2.4-5 AllCharacterSubgroups[0m
  
  [2X> AllCharacterSubgroups( [0X[3XG, chi[0X[2X ) __________________________________[0Xfunction
  
  returns  a  list  of  all [3Xchi[0m-subgroups of [3XG[0m among the lattice of subgroups.
  This  function  call  can  be quite expensive for larger groups. The call is
  expensive  in  particular  if the lattice of subgroups of the given group is
  not yet known.
  
  
  [1X2.5 Equivalent Representation[0X
  
  [1X2.5-1 EquivalentRepresentation[0m
  
  [2X> EquivalentRepresentation( [0X[3Xrep[0X[2X ) __________________________________[0Xfunction
  
  computes  an  equivalent representation to an irreducible representation [3Xrep[0m
  by  transforming  [3Xrep[0m to a new basis by spinning up one vector (i.e. getting
  the  other  basis  vectors  as images under the first one under words in the
  generators).   If   the   input   representation,  [3Xrep[0m,  is  reducible  then
  [10XEquivalentRepresentation[0m  does  not  return  any  mapping.  In this case see
  section 3.
  
  [4X---------------------------  Example  ----------------------------[0X
    [4Xgap> G := SymmetricGroup( 7 );;
[0X
    [4Xgap> chi := Irr( G )[ 2 ];;
[0X
    [4Xgap> rep := CharacterSubgroupRepresentation( chi );;
[0X
    [4Xgap> equ := EquivalentRepresentation( rep );
[0X
    [4X[ (1,2,3,4,5,6,7), (1,2) ] ->
[0X
    [4X[ [ [ 0, 0, 0, E(5)+E(5)^2+E(5)^3+2*E(5)^4, -1, -E(5)-E(5)^2-E(5)^3-2*E(5)^4 ],
[0X
    [4X   [ E(5)^3-E(5)^4, E(5)^2+E(5)^3+E(5)^4, E(5)+E(5)^3-E(5)^4, -E(5)+E(5)^2
[0X
    [4X          -3*E(5)^3-E(5)^4, -E(5)-E(5)^3+E(5)^4, 2*E(5)-2*E(5)^2+2*E(5)^3 ]
[0X
    [4X    , [ 0, 0, 0, 1, 0, 0 ],
[0X
    [4X   [ 0, 4/5*E(5)+3/5*E(5)^2+2/5*E(5)^3+1/5*E(5)^4, E(5), 1, -E(5),
[0X
    [4X       6/5*E(5)+2/5*E(5)^2+3/5*E(5)^3+4/5*E(5)^4 ], [ 0, 1, 0, 0, 0, 0 ],
[0X
    [4X   [ 0, 0, E(5), 1, -E(5), 2*E(5)+E(5)^2+E(5)^3+E(5)^4 ] ],
[0X
    [4X [ [ -1, 0, E(5)+E(5)^2+E(5)^3+2*E(5)^4, -E(5)-E(5)^2-3*E(5)^4,
[0X
    [4X    -E(5)-E(5)^2-E(5)^3-2*E(5)^4, E(5)+E(5)^2+3*E(5)^4 ],
[0X
    [4X  [ 0, -1, 0, 0, 0, 0 ],
[0X
    [4X  [ 0, 0, 0, E(5)+E(5)^2+E(5)^3+2*E(5)^4, -1, -E(5)-E(5)^2-E(5)^3-2*E(5)^4
[0X
    [4X     ], [ 0, 0, -1, -E(5)^4, 1, E(5)+E(5)^2+E(5)^3+2*E(5)^4 ],
[0X
    [4X  [ 0, 0, -E(5)^4, -E(5)^3+E(5)^4, E(5)+E(5)^2+E(5)^3+2*E(5)^4,
[0X
    [4X      E(5)^3-E(5)^4 ], [ 0, 0, 0, 0, 0, -1 ] ] ]
[0X
    [4Xgap> IsAffordingRepresentation( chi, equ );
[0X
    [4Xtrue
[0X
    [4X	[0X
  [4X------------------------------------------------------------------[0X
  
