1#@local g,t 2gap> START_TEST("ctbl.tst"); 3 4# `ClassPositionsOf...' for the trivial group (which usually causes trouble) 5gap> g:= TrivialGroup( IsPermGroup );; 6gap> t:= CharacterTable( g );; 7gap> ClassPositionsOfAgemo( t, 2 ); 8[ 1 ] 9gap> ClassPositionsOfCentre( t ); 10[ 1 ] 11gap> ClassPositionsOfDerivedSubgroup( t ); 12[ 1 ] 13gap> ClassPositionsOfDirectProductDecompositions( t ); 14[ ] 15gap> ClassPositionsOfElementaryAbelianSeries( t ); 16[ [ 1 ] ] 17gap> ClassPositionsOfFittingSubgroup( t ); 18[ 1 ] 19gap> ClassPositionsOfLowerCentralSeries( t ); 20[ [ 1 ] ] 21gap> ClassPositionsOfMaximalNormalSubgroups( t ); 22[ ] 23gap> ClassPositionsOfNormalClosure( t, [ 1 ] ); 24[ 1 ] 25gap> ClassPositionsOfNormalSubgroups( t ); 26[ [ 1 ] ] 27gap> ClassPositionsOfUpperCentralSeries( t ); 28[ [ 1 ] ] 29gap> ClassPositionsOfSolvableResiduum( t ); 30[ 1 ] 31gap> ClassPositionsOfSupersolvableResiduum( t ); 32[ 1 ] 33gap> ClassPositionsOfCentre( TrivialCharacter( t ) ); 34[ 1 ] 35gap> ClassPositionsOfKernel( TrivialCharacter( t ) ); 36[ 1 ] 37 38# Display for the table of the trivial group 39gap> Display( CharacterTable( CyclicGroup( 1 ) ) ); 40CT1 41 42 43 1a 44 45X.1 1 46 47# Display with unusual parameters 48gap> t:= CharacterTable( SymmetricGroup( 3 ) );; Irr( t );; 49gap> Display( t, rec( centralizers:= false ) ); 50CT2 51 52 1a 2a 3a 53 2P 1a 1a 3a 54 3P 1a 2a 1a 55 56X.1 1 -1 1 57X.2 2 . -1 58X.3 1 1 1 59gap> Display( t, rec( centralizers:= "ATLAS" ) ); 60CT2 61 62 6 2 3 63 64 1a 2a 3a 65 2P 1a 1a 3a 66 3P 1a 2a 1a 67 68X.1 1 -1 1 69X.2 2 . -1 70X.3 1 1 1 71gap> Display( t, rec( chars:= 1 ) ); 72CT2 73 74 2 1 1 . 75 3 1 . 1 76 77 1a 2a 3a 78 2P 1a 1a 3a 79 3P 1a 2a 1a 80 81X.1 1 -1 1 82gap> Display( t, rec( chars:= [ 2, 3 ] ) ); 83CT2 84 85 2 1 1 . 86 3 1 . 1 87 88 1a 2a 3a 89 2P 1a 1a 3a 90 3P 1a 2a 1a 91 92X.2 2 . -1 93X.3 1 1 1 94gap> Display( t, rec( chars:= PermChars( t ) ) ); 95CT2 96 97 2 1 1 . 98 3 1 . 1 99 100 1a 2a 3a 101 2P 1a 1a 3a 102 3P 1a 2a 1a 103 104Y.1 1 1 1 105Y.2 2 . 2 106Y.3 3 1 . 107Y.4 6 . . 108gap> Display( t, rec( chars:= PermChars( t ), letter:= "P" ) ); 109CT2 110 111 2 1 1 . 112 3 1 . 1 113 114 1a 2a 3a 115 2P 1a 1a 3a 116 3P 1a 2a 1a 117 118P.1 1 1 1 119P.2 2 . 2 120P.3 3 1 . 121P.4 6 . . 122gap> Display( t, rec( classes:= 1 ) ); 123CT2 124 125 2 1 126 3 1 127 128 1a 129 2P 1a 130 3P 1a 131 132X.1 1 133X.2 2 134X.3 1 135gap> Display( t, rec( classes:= [ 2, 3 ] ) ); 136CT2 137 138 2 1 . 139 3 . 1 140 141 2a 3a 142 2P 1a 3a 143 3P 2a 1a 144 145X.1 -1 1 146X.2 . -1 147X.3 1 1 148gap> Display( t, rec( indicator:= true ) ); 149CT2 150 151 2 1 1 . 152 3 1 . 1 153 154 1a 2a 3a 155 2P 1a 1a 3a 156 3P 1a 2a 1a 157 2 158X.1 + 1 -1 1 159X.2 + 2 . -1 160X.3 + 1 1 1 161gap> Display( t, rec( indicator:= [ 2, 3 ] ) ); 162CT2 163 164 2 1 1 . 165 3 1 . 1 166 167 1a 2a 3a 168 2P 1a 1a 3a 169 3P 1a 2a 1a 170 2 3 171X.1 + 0 1 -1 1 172X.2 + 1 2 . -1 173X.3 + 1 1 1 1 174gap> Display( t, rec( powermap:= false ) ); 175CT2 176 177 2 1 1 . 178 3 1 . 1 179 180 1a 2a 3a 181 182X.1 1 -1 1 183X.2 2 . -1 184X.3 1 1 1 185gap> Display( t, rec( powermap:= 2 ) ); 186CT2 187 188 2 1 1 . 189 3 1 . 1 190 191 1a 2a 3a 192 2P 1a 1a 3a 193 194X.1 1 -1 1 195X.2 2 . -1 196X.3 1 1 1 197gap> Display( t, rec( powermap:= [ 2, 3 ] ) ); 198CT2 199 200 2 1 1 . 201 3 1 . 1 202 203 1a 2a 3a 204 2P 1a 1a 3a 205 3P 1a 2a 1a 206 207X.1 1 -1 1 208X.2 2 . -1 209X.3 1 1 1 210gap> # Note that the 'ATLAS' option for power maps has the desired effect 211gap> # only if the function 'CambridgeMaps' is bound during the tests, 212gap> # which depends on the loaded packages; we omit this test. 213gap> # Display( t, rec( powermap:= "ATLAS" ) ); 214gap> Display( t, 215> rec( charnames:= List( CharacterParameters( t ), String ) ) ); 216CT2 217 218 2 1 1 . 219 3 1 . 1 220 221 1a 2a 3a 222 2P 1a 1a 3a 223 3P 1a 2a 1a 224 225[ 1, [ 1, 1, 1 ] ] 1 -1 1 226[ 1, [ 2, 1 ] ] 2 . -1 227[ 1, [ 3 ] ] 1 1 1 228gap> Display( t, 229> rec( classnames:= List( ClassParameters( t ), String ) ) ); 230CT2 231 232 2 1 1 . 233 3 1 . 1 234 235 [ 1, [ 1, 1, 1 ] ] [ 1, [ 2, 1 ] ] [ 1, [ 3 ] ] 236 2P [ 1, [ 1, 1, 1 ] ] [ 1, [ 1, 1, 1 ] ] [ 1, [ 3 ] ] 237 3P [ 1, [ 1, 1, 1 ] ] [ 1, [ 2, 1 ] ] [ 1, [ 1, 1, 1 ] ] 238 239X.1 1 -1 1 240X.2 2 . -1 241X.3 1 1 1 242 243# viewing and printing of character tables with stored groups 244gap> t:= CharacterTable( DihedralGroup( 8 ) );; 245gap> View( t ); Print( "\n" ); 246CharacterTable( <pc group of size 8 with 3 generators> ) 247gap> Print( t, "\n" ); 248CharacterTable( Group( [ f1, f2, f3 ] ) ) 249gap> ViewString( t ); 250"CharacterTable( <group of size 8 with 3 generators> )" 251gap> PrintString( t ); 252"CharacterTable( \"Group( \>[ f1, f2, f3 ]\<\> )\< )" 253gap> t:= CharacterTable( SymmetricGroup( 5 ) );; 254gap> View( t ); Print( "\n" ); 255CharacterTable( Sym( [ 1 .. 5 ] ) ) 256gap> Print( t, "\n" ); 257CharacterTable( SymmetricGroup( [ 1 .. 5 ] ) ) 258gap> ViewString( t ); 259"CharacterTable( Sym( [ 1 .. 5 ] ) )" 260gap> PrintString( t ); 261"CharacterTable( \"Group( \>[ (1,2,3,4,5), (1,2) ]\<\> )\< )" 262 263# entries of mutable attributes are immutable 264gap> t:= CharacterTable( SymmetricGroup( 5 ) ); 265CharacterTable( Sym( [ 1 .. 5 ] ) ) 266gap> PowerMap( t, 2 );; PowerMap( t, 3 );; 267gap> Length( ComputedPowerMaps( t ) ); 2683 269gap> IsMutable( ComputedPowerMaps( t ) ); 270true 271gap> ForAny( ComputedPowerMaps( t ), IsMutable ); 272false 273gap> Indicator( t, 2 );; 274gap> Length( ComputedIndicators( t ) ); 2752 276gap> IsMutable( ComputedIndicators( t ) ); 277true 278gap> ForAny( ComputedIndicators( t ), IsMutable ); 279false 280gap> PrimeBlocks( t, 2 );; 281gap> Length( ComputedPrimeBlockss( t ) ); 2822 283gap> IsMutable( ComputedPrimeBlockss( t ) ); 284true 285gap> ForAny( ComputedPrimeBlockss( t ), IsMutable ); 286false 287 288# create certain Brauer tables ... 289# ... of p-solvable groups 290gap> t:= CharacterTable( SymmetricGroup( 4 ) );; 291gap> IsCharacterTable( t mod 2 ); 292true 293gap> IsCharacterTable( t mod 3 ); 294true 295 296# ... where all Brauer characters lift to characteristic zero 297gap> g:= PSL(2,5);; 298gap> t:= CharacterTable( g );; 299gap> IsCharacterTable( t mod 3 ); 300true 301gap> IsCharacterTable( t mod 5 ); 302true 303 304# ... where the Brauer tables of the factors of a product can be computed 305gap> g:= AlternatingGroup( 5 );; 306gap> t:= CharacterTable( g );; 307gap> t:= CharacterTableDirectProduct( t, t );; 308gap> IsCharacterTable( t mod 5 ); 309true 310 311# test a bugfix 312gap> g:= SmallGroup( 96, 3 );; 313gap> t:= CharacterTable( g );; 314gap> ClassPositionsOfLowerCentralSeries( t ); 315[ [ 1 .. 12 ], [ 1, 3, 4, 5, 6, 9, 10, 11 ] ] 316gap> g:= SmallGroup( 3^5, 22 );; 317gap> t:= CharacterTable( g );; 318gap> ClassPositionsOfLowerCentralSeries( t ); 319[ [ 1 .. 35 ], [ 1, 4, 6, 12, 15 ], [ 1, 6, 15 ], [ 1 ] ] 320gap> g:= SmallGroup( 96, 66 );; 321gap> t:= CharacterTable( g );; 322gap> ClassPositionsOfSupersolvableResiduum( t ); 323[ 1, 5, 6 ] 324 325## 326gap> STOP_TEST( "ctbl.tst" ); 327