Skip to content

Commit 0e575e7

Browse files
authored
Set InfoText when computing Irr (#6275)
Whenever the `Irr` value gets computed for a group or a character table, store in `InfoText` of the table which method was used. And add an `Irr` method for the case that `IrrDixonSchneider` is known. (We have at least one package with a method of higher rank than the `IrrDixonSchneider` based method, so this makes sense.)
1 parent 5397e70 commit 0e575e7

File tree

4 files changed

+57
-13
lines changed

4 files changed

+57
-13
lines changed

lib/ctblgrp.gi

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -290,7 +290,7 @@ local b;
290290
b:=List(b,i->i{d.invpermlist}); # permuted back
291291
r.niceBasis:=Immutable(b);
292292
fi;
293-
Assert(1,Length(r.niceBasis)=Length(r.base));
293+
Assert(1,Length(r.niceBasis)=Length(r.base), "in DxNiceBasis");
294294
return r.niceBasis;
295295
end );
296296

@@ -657,7 +657,7 @@ BindGlobal( "DxEigenbase", function(M)
657657

658658
minpol:=MinimalPolynomial(BaseDomain(M),M);
659659

660-
Assert(2,IsDuplicateFree(RootsOfUPol(minpol)));
660+
Assert(2,IsDuplicateFree(RootsOfUPol(minpol)), "in DxEigenbase, 1");
661661
eigenvalues:=Set(RootsOfUPol(minpol));
662662
dim:=0;
663663
bases:=[];
@@ -674,7 +674,8 @@ BindGlobal( "DxEigenbase", function(M)
674674
Error("Failed to calculate eigenspaces.");
675675
fi;
676676

677-
Assert(3, ForAll([1..Length(bases)],j->bases[j]*M = bases[j]*eigenvalues[j]));
677+
Assert(3, ForAll([1..Length(bases)],j->bases[j]*M = bases[j]*eigenvalues[j]),
678+
"in DxEigenbase, 2");
678679
return rec(base:=bases,
679680
values:=eigenvalues);
680681
end );
@@ -791,7 +792,7 @@ InstallGlobalFunction(SplitStep,function(D,bestMat)
791792
base:=Matrix(BaseDomain(base[1]),base);
792793
eigenbase:=List(eigen.base,i->List(i,j->j*base));
793794

794-
Assert(1,Length(eigenbase)>1);
795+
Assert(1,Length(eigenbase)>1, "in SplitStep");
795796

796797
ra:=List(eigenbase,i->rec(base:=i,dim:=Length(i)));
797798

@@ -2286,7 +2287,7 @@ local k,C,D,dsp;
22862287
od;
22872288

22882289
C:=DixontinI(D);
2289-
Assert(1,Length(C)=D.klanz);
2290+
Assert(1,Length(C)=D.klanz, "in IrrDixonSchneider");
22902291
# SetIrr(OrdinaryCharacterTable(G),C);
22912292
# (if `IrrDixonSchneider' is called explicitly,
22922293
# we want to ignore the attribute)
@@ -2326,6 +2327,19 @@ InstallMethod( Irr,
23262327
return irr;
23272328
end );
23282329

2330+
InstallMethod( Irr,
2331+
"for a group with known `IrrDixonSchneider'",
2332+
[ IsGroup and HasIrrDixonSchneider, IsZeroCyc ],
2333+
function( G, zero )
2334+
local irr, tbl;
2335+
irr:= IrrDixonSchneider( G );
2336+
tbl:= OrdinaryCharacterTable( G );
2337+
SetIrr( tbl, irr );
2338+
ComputeAllPowerMaps( tbl );
2339+
SetInfoText( tbl, "origin: Dixon's Algorithm" );
2340+
return irr;
2341+
end );
2342+
23292343

23302344
#############################################################################
23312345
##
@@ -2360,7 +2374,8 @@ InstallMethod( Irr,
23602374
fi;
23612375
od;
23622376
od;
2363-
Assert( 1, IsCollection( bijection ) and IsEmpty( cclnice ) );
2377+
Assert( 1, IsCollection( bijection ) and IsEmpty( cclnice ),
2378+
"in Irr via niceomorphism" );
23642379

23652380
# Compute the values of the irreducibles of the nice object.
23662381
irr:= List( Irr( nice ), ValuesOfClassFunction );
@@ -2374,6 +2389,7 @@ InstallMethod( Irr,
23742389
od;
23752390
irr:= List( irr, x -> Character( tbl, x ) );
23762391
SetIrr( tbl, irr );
2392+
SetInfoText( tbl, "origin: via the nice monomorphism of the group" );
23772393
return irr;
23782394
end );
23792395

lib/ctblsolv.gi

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -657,7 +657,8 @@ InstallGlobalFunction( CoveringTriplesCharacters, function( G, z )
657657
CanonicalRepresentativeOfExternalSet( orb ) );
658658
if not zn in k then
659659
t:= StabilizerOfExternalSet( orb );
660-
Assert( 1, IsIdenticalObj( Parent( t ), G ) );
660+
Assert( 1, IsIdenticalObj( Parent( t ), G ),
661+
"in CoveringTriplesCharacters" );
661662
h:= NaturalHomomorphismByNormalSubgroupNC( t, k );
662663
img:= ImagesSource( h );
663664
Append( r,
@@ -823,19 +824,23 @@ InstallMethod( Irr,
823824
"for a supersolvable group (Conlon's algorithm)",
824825
[ IsGroup and IsSupersolvableGroup, IsZeroCyc ],
825826
function( G, zero )
826-
local irr;
827+
local irr, tbl;
827828
irr:= IrrConlon( G );
828-
SetIrr( OrdinaryCharacterTable( G ), irr );
829+
tbl:= OrdinaryCharacterTable( G );
830+
SetIrr( tbl, irr );
831+
SetInfoText( tbl, "origin: Conlon's Algorithm" );
829832
return irr;
830833
end );
831834

832835
InstallMethod( Irr,
833836
"for a supersolvable group with known `IrrConlon'",
834837
[ IsGroup and IsSupersolvableGroup and HasIrrConlon, IsZeroCyc ],
835838
function( G, zero )
836-
local irr;
839+
local irr, tbl;
837840
irr:= IrrConlon( G );
838-
SetIrr( OrdinaryCharacterTable( G ), irr );
841+
tbl:= OrdinaryCharacterTable( G );
842+
SetIrr( tbl, irr );
843+
SetInfoText( tbl, "origin: Conlon's Algorithm" );
839844
return irr;
840845
end );
841846

@@ -853,6 +858,7 @@ InstallMethod( Irr,
853858
tbl:= OrdinaryCharacterTable( G );
854859
SetIrr( tbl, irr );
855860
ComputeAllPowerMaps( tbl );
861+
SetInfoText( tbl, "origin: Baum-Clausen Algorithm" );
856862
return irr;
857863
end );
858864

@@ -865,6 +871,7 @@ InstallMethod( Irr,
865871
tbl:= OrdinaryCharacterTable( G );
866872
SetIrr( tbl, irr );
867873
ComputeAllPowerMaps( tbl );
874+
SetInfoText( tbl, "origin: Baum-Clausen Algorithm" );
868875
return irr;
869876
end );
870877

lib/oprtpcgs.gi

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,10 @@ end );
174174

175175
InstallMethod( OrbitStabilizerAlgorithm,"for pcgs",true,
176176
[IsGroup,IsObject,IsObject,IsPcgs,
177-
IsList,IsRecord],0,
177+
IsList,IsRecord],
178+
# rank above the method based on 'DoOrbitStabilizerAlgorithmStabsize'
179+
{} -> RankFilter(IsGroup and IsFinite) - RankFilter(IsGroup),
180+
178181
function(G,D,blist,pcgs,acts,pntact)
179182
local S,stab,i,pnt,act;
180183
pnt:=pntact.pnt;

tst/testinstall/ctbl.tst

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#@local g,t,lin
1+
#@local g,t,lin,G
22
gap> START_TEST("ctbl.tst");
33

44
# `ClassPositionsOf...' for the trivial group (which usually causes trouble)
@@ -433,5 +433,23 @@ true
433433
gap> HasIsIrreducibleCharacter( TrivialCharacter( SymmetricGroup( 4 ) ) );
434434
true
435435

436+
# concurring 'Irr' methods
437+
gap> G:= SmallGroup( 24, 5 );;
438+
gap> IsSupersolvable( G );
439+
true
440+
gap> Irr( G );;
441+
gap> InfoText( OrdinaryCharacterTable( G ) );
442+
"origin: Baum-Clausen Algorithm"
443+
gap> G:= SmallGroup( 24, 5 );;
444+
gap> IsSupersolvable( G );
445+
true
446+
gap> IrrConlon( G );; Irr( G );;
447+
gap> InfoText( OrdinaryCharacterTable( G ) );
448+
"origin: Conlon's Algorithm"
449+
gap> G:= SmallGroup( 24, 5 );;
450+
gap> IrrDixonSchneider( G );; Irr( G );;
451+
gap> InfoText( OrdinaryCharacterTable( G ) );
452+
"origin: Dixon's Algorithm"
453+
436454
##
437455
gap> STOP_TEST( "ctbl.tst" );

0 commit comments

Comments
 (0)