############## ####################################################### # this is example 4.7.8 in the book ###################################################################### ###################################################################### testmodpi := function( t, y, p ) # t character table, y classfunction, p a prime; the function tests # whether for all i IsIntegralCyclotomic( y[i]^m / p ) where # m = Phi( OrdersClassRepresentatives(t)[i] ) local i, res ; res:= true; for i in [1..Length(y)] do if IsInt( y[i] ) and not IsInt( y[i]/p ) then res := false; elif not IsInt( y[i] ) and not IsIntegralCyclotomic( y[i]^Phi( OrdersClassRepresentatives(t)[i] )/ p ) then res := false; fi; od; return( res ); end; ###################################################################### t := TableOfMarks( "M11" );; ct := CharacterTable( UnderlyingGroup(t) );; p := 2;; omegaBs := List( Irr(ct){[1,6,7]} , CentralCharacter );; ###################################################################### pb := PrimeBlocks( ct, p );; omegaBs := List( Irr(ct){List( [1..Length(pb.defect)], j -> Position(pb.block,j) )} ,CentralCharacter);; ###################################################################### inducedblocks := [];; for i in [1..Length(OrdersTom(t))-1] do h := RepresentativeTom( t, i );; cth := CharacterTable(h); blh := PrimeBlocks( cth, p ); for k in [1..Length(blh.defect)] do y := Irr(cth)[ Position( blh.block, k ) ]; y := InducedClassFunction( y, ct ); for z in omegaBs do if testmodpi( ct, CentralCharacter(y) - z , p ) then Add( inducedblocks , [ i, k, Position( omegaBs , z) ] ); fi; od; od; od;