-
Notifications
You must be signed in to change notification settings - Fork 175
addressing issue #2646: Unused functions in ctbl.gi #2681
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -1235,39 +1235,6 @@ InstallGlobalFunction( CharacterTable_IsNilpotentFactor, function( tbl, N ) | |
| end ); | ||
|
|
||
|
|
||
| ############################################################################# | ||
| ## | ||
| #F CharacterTable_IsNilpotentNormalSubgroup( <tbl>, <N> ) | ||
| ## | ||
| InstallGlobalFunction( CharacterTable_IsNilpotentNormalSubgroup, | ||
| function( tbl, N ) | ||
|
|
||
| local classlengths, # class lengths | ||
| orders, # orders of class representatives | ||
| ppow, # list of classes of prime power order | ||
| part, # one pair `[ prime, exponent ]' | ||
| classes; # classes of p power order for a prime p | ||
|
|
||
| # Take the classes of prime power order. | ||
| classlengths:= SizesConjugacyClasses( tbl ); | ||
| orders:= OrdersClassRepresentatives( tbl ); | ||
| ppow:= Filtered( N, i -> IsPrimePowerInt( orders[i] ) ); | ||
|
|
||
| for part in Collected( Factors(Integers, Sum( classlengths{ N }, 0 ) ) ) do | ||
|
|
||
| # Check whether the Sylow p subgroup of `N' is normal in `N', | ||
| # i.e., whether the number of elements of p-power is equal to | ||
| # the size of a Sylow p subgroup. | ||
| classes:= Filtered( ppow, i -> orders[i] mod part[1] = 0 ); | ||
| if part[1] ^ part[2] <> Sum( classlengths{ classes }, 0 ) + 1 then | ||
| return false; | ||
| fi; | ||
|
|
||
| od; | ||
| return true; | ||
| end ); | ||
|
|
||
|
|
||
| ############################################################################# | ||
| ## | ||
| #M IsNilpotentCharacterTable( <tbl> ) | ||
|
|
@@ -5006,9 +4973,11 @@ BindGlobal( "CharacterTableDisplayDefault", function( tbl, options ) | |
| elif centralizers = true then | ||
| Print( "\n" ); | ||
| for i in [col..col+acol-1] do | ||
| fak:= Factors(Integers, tbl_centralizers[classes[i]] ); | ||
| fak:= Factors( Integers, tbl_centralizers[ classes[i] ] ); | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Optional: This could also be changed to |
||
| for prime in Set( fak ) do | ||
| cen[prime][i]:= Number( fak, x -> x = prime ); | ||
| if prime <> 1 then | ||
| cen[prime][i]:= Number( fak, x -> x = prime ); | ||
| fi; | ||
| od; | ||
| od; | ||
| for j in [1..Length(cen)] do | ||
|
|
@@ -6199,13 +6168,13 @@ InstallGlobalFunction( CharacterTableOfNormalSubgroup, | |
| nccl, # no. of classes | ||
| orders, # repr. orders of the result | ||
| centralizers, # centralizer orders of the result | ||
| result, # result table | ||
| err, # list of classes that must split | ||
| inverse, # inverse map of `classes' | ||
| p, # loop over primes | ||
| irreducibles, # list of irred. characters | ||
| chi, # loop over irreducibles of `tbl' | ||
| char; # one character values list for `result' | ||
| char, # one character values list for `result' | ||
| result, # result table | ||
| inverse, # inverse map of `classes' | ||
| p; # loop over primes | ||
|
|
||
| if not IsOrdinaryTable( tbl ) then | ||
| Error( "<tbl> must be an ordinary character table" ); | ||
|
|
@@ -6215,68 +6184,36 @@ InstallGlobalFunction( CharacterTableOfNormalSubgroup, | |
| size:= Sum( sizesclasses ); | ||
|
|
||
| if Size( tbl ) mod size <> 0 then | ||
| Error( "<classes> is not a normal subgroup" ); | ||
| # <classes> does not form a normal subgroup. | ||
| return fail; | ||
| fi; | ||
|
|
||
| nccl:= Length( classes ); | ||
| orders:= OrdersClassRepresentatives( tbl ){ classes }; | ||
| centralizers:= List( sizesclasses, x -> size / x ); | ||
|
|
||
| result:= Concatenation( "Rest(", Identifier( tbl ), ",", | ||
| String( classes ), ")" ); | ||
| ConvertToStringRep( result ); | ||
|
|
||
| result:= rec( | ||
| UnderlyingCharacteristic := 0, | ||
| Identifier := result, | ||
| Size := size, | ||
| SizesCentralizers := centralizers, | ||
| SizesConjugacyClasses := sizesclasses, | ||
| OrdersClassRepresentatives := orders, | ||
| ComputedPowerMaps := [] ); | ||
|
|
||
| err:= Filtered( [ 1 .. nccl ], | ||
| x-> centralizers[x] mod orders[x] <> 0 ); | ||
| x -> not IsInt( centralizers[x] / orders[x] ) ); | ||
| if not IsEmpty( err ) then | ||
| Info( InfoCharacterTable, 2, | ||
| "CharacterTableOfNormalSubgroup: classes in " , err, | ||
| " necessarily split" ); | ||
| return fail; | ||
| fi; | ||
| inverse:= InverseMap( classes ); | ||
|
|
||
| for p in [ 1 .. Length( ComputedPowerMaps( tbl ) ) ] do | ||
| if IsBound( ComputedPowerMaps( tbl )[p] ) then | ||
| result.ComputedPowerMaps[p]:= MakeImmutable( | ||
| CompositionMaps( inverse, | ||
| CompositionMaps( ComputedPowerMaps( tbl )[p], classes ) ) ); | ||
| # Compute the irreducibles. | ||
| irreducibles:= []; | ||
| for chi in Irr( tbl ) do | ||
| char:= ValuesOfClassFunction( chi ){ classes }; | ||
| if Sum( [ 1 .. nccl ], | ||
| i -> sizesclasses[i] * char[i] * GaloisCyc(char[i],-1), 0 ) | ||
| = size | ||
| and not char in irreducibles then | ||
| Add( irreducibles, MakeImmutable( char ) ); | ||
| fi; | ||
| od; | ||
|
|
||
| # Compute the irreducibles if known. | ||
| irreducibles:= []; | ||
| if HasIrr( tbl ) then | ||
|
|
||
| for chi in Irr( tbl ) do | ||
| char:= ValuesOfClassFunction( chi ){ classes }; | ||
| if Sum( [ 1 .. nccl ], | ||
| i -> sizesclasses[i] * char[i] * GaloisCyc(char[i],-1), 0 ) | ||
| = size | ||
| and not char in irreducibles then | ||
| Add( irreducibles, MakeImmutable( char ) ); | ||
| fi; | ||
| od; | ||
|
|
||
| fi; | ||
|
|
||
| if Length( irreducibles ) = nccl then | ||
|
|
||
| result.Irr:= irreducibles; | ||
|
|
||
| # Convert the record into a library table. | ||
| ConvertToLibraryCharacterTableNC( result ); | ||
|
|
||
| else | ||
|
|
||
| if Length( irreducibles ) <> nccl then | ||
| p:= Size( tbl ) / size; | ||
| if IsPrimeInt( p ) and not IsEmpty( irreducibles ) then | ||
| Info( InfoCharacterTable, 2, | ||
|
|
@@ -6286,11 +6223,35 @@ InstallGlobalFunction( CharacterTableOfNormalSubgroup, | |
| "#I (now ", Length( classes ), ", after nec. splitting ", | ||
| Length( classes ) + (p-1) * Length( err ), ")" ); | ||
| fi; | ||
| return fail; | ||
| fi; | ||
|
|
||
| Error( "tables in progress not yet supported" ); | ||
| #T !! | ||
| result:= Concatenation( "Rest(", Identifier( tbl ), ",", | ||
| String( classes ), ")" ); | ||
| ConvertToStringRep( result ); | ||
|
Member
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I don't think calling |
||
|
|
||
| fi; | ||
| result:= rec( | ||
| UnderlyingCharacteristic := 0, | ||
| Identifier := MakeImmutable( result ), | ||
| Size := size, | ||
| SizesCentralizers := MakeImmutable( centralizers ), | ||
| SizesConjugacyClasses := MakeImmutable( sizesclasses ), | ||
| OrdersClassRepresentatives := MakeImmutable( orders ), | ||
| ComputedPowerMaps := [], | ||
| Irr := irreducibles ); | ||
|
|
||
| inverse:= InverseMap( classes ); | ||
|
|
||
| for p in [ 1 .. Length( ComputedPowerMaps( tbl ) ) ] do | ||
| if IsBound( ComputedPowerMaps( tbl )[p] ) then | ||
| result.ComputedPowerMaps[p]:= MakeImmutable( | ||
| CompositionMaps( inverse, | ||
| CompositionMaps( ComputedPowerMaps( tbl )[p], classes ) ) ); | ||
| fi; | ||
| od; | ||
|
|
||
| # Convert the record into a library table. | ||
| ConvertToLibraryCharacterTableNC( result ); | ||
|
|
||
| # Store the fusion into `tbl'. | ||
| StoreFusion( result, classes, tbl ); | ||
|
|
||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Optional: Using
Elementshere is not needed, it's perfectly fine to doFirst( Centre( dp ), ...)