# [GAP Forum] G-invariant linear character

Thomas Breuer thomas.breuer at math.rwth-aachen.de
Fri Apr 25 15:07:38 BST 2008

Dear GAP Forum,

Dan Lanke wrote

>  Let H be a normal subgroup of a finite group G.
>  Let \rho be a G-invariant linear character of H.
>  Is it true that there exists a linear character
>  of G whose restriction to H is equal to \rho?
>
>  If the answer is no, how can I use GAP to find
>  some examples?

Meanwhile Frank L"ubeck has answered the first question
in a private e-mail to Dan:

> No, just take any  perfect group with a non-trivial center H and any
> non-trivial irreducible character of H. E.g., G = SL(2,5).

Concerning the second question,
the GAP function test_group' appended below can be used to collect,
for a given group G, all invariant linear characters of normal subgroups of G
that do not extend to G.
(There are enough examples of very small groups G for which such characters
exist, such as extraspecial p-groups.
For groups of larger order, the IdGroup' call in the function may not work.)

Examples can be found as follows.

gap> AllSmallGroups( Size, [ 1 .. 30 ], g -> test_group( g ) <> [], true );
#I  example for G = [ 8, 3 ], N = [ 2, 1 ]
#I  example for G = [ 8, 4 ], N = [ 2, 1 ]
#I  example for G = [ 16, 3 ], N = [ 2, 1 ]
...

Alternatively, the function test_table' collects, for a given character
table from the GAP character table library, all not extendible invariant
linear characters of those normal subgroups of G whose character table is
contained in the GAP character table library.

gap> OneCharacterTableName( t -> test_table(t) <> [], true );
#I  example for G = O8+(3).D8, N = O8+(3).2_1
"O8+(3).D8"

In fact this shows again that the dihedral group of order eight provides
an example.
So the character table library is not very suitable for this
question,
but perhaps the code below gives an idea how one can proceed
in similar situations.

All the best,
Thomas

--------------------------------------------------------------------------

test_group:= function( G )
local expls, lin_G, N, map, inv, rest, found;

expls:= [];
lin_G:= LinearCharacters( G );
for N in NormalSubgroups( G ) do
map:= InverseMap( FusionConjugacyClasses( N, G ) );
inv:= Filtered( LinearCharacters( N ),
x -> not ForAny( CompositionMaps( x, map ), IsList ) );
rest:= RestrictedClassFunctions( lin_G, N );
found:= Difference( inv, rest );
if not IsEmpty( found ) then
Add( expls, [ G, found ] );
Print( "#I  example for G = ", IdGroup( G ),
", N = ", IdGroup( N ), "\n" );
fi;
od;

return expls;
end;

test_table:= function( tbl )
local expls, lin_tbl, name, subtbl, fus, map, inv, rest, found;

expls:= [];
lin_tbl:= LinearCharacters( tbl );
for name in NamesOfFusionSources( tbl ) do
subtbl:= CharacterTable( name );
if subtbl <> fail then
fus:= GetFusionMap( subtbl, tbl );
if Size( subtbl )
= Sum( SizesConjugacyClasses( tbl ){ Set( fus ) } ) then
map:= InverseMap( fus );
inv:= Filtered( LinearCharacters( subtbl ),
x -> not ForAny( CompositionMaps( x, map ), IsList ) );
rest:= RestrictedClassFunctions( lin_tbl, subtbl );
found:= Difference( inv, rest );
if not IsEmpty( found ) then
Add( expls, [ tbl, found ] );
Print( "#I  example for G = ", Identifier( tbl ),
", N = ", Identifier( subtbl ), "\n" );
fi;
fi;
fi;
od;

return expls;
end;

`