diff --git a/doc/ref/ctblfuns.xml b/doc/ref/ctblfuns.xml index deacb0f476..f4390c1419 100644 --- a/doc/ref/ctblfuns.xml +++ b/doc/ref/ctblfuns.xml @@ -127,6 +127,7 @@ true <#Include Label="DeterminantOfCharacter"> <#Include Label="EigenvaluesChar"> <#Include Label="Tensored"> +<#Include Label="TensorProduct_characters"> @@ -171,6 +172,8 @@ true <#Include Label="Symmetrizations"> <#Include Label="SymmetricParts"> <#Include Label="AntiSymmetricParts"> +<#Include Label="ExteriorPower_character"> +<#Include Label="SymmetricPower_character"> <#Include Label="OrthogonalComponents"> <#Include Label="SymplecticComponents"> diff --git a/lib/ctblfuns.gd b/lib/ctblfuns.gd index f08928d0fc..19fcef6c86 100644 --- a/lib/ctblfuns.gd +++ b/lib/ctblfuns.gd @@ -1774,6 +1774,41 @@ DeclareOperation( "EigenvaluesChar", DeclareOperation( "Tensored", [ IsHomogeneousList, IsHomogeneousList ] ); +############################################################################# +## +#O TensorProduct( , ) +## +## <#GAPDoc Label="TensorProduct_characters"> +## +## +## +## +## For two characters chi and psi afforded by the modules +## V and W, +## returns the character +## that is afforded by the tensor product of V and W. +##

+## The result can also be computed as chi*psi, +## see also . +##

+## t:= CharacterTable( "A5" );; +## gap> chi:= Irr( t )[2]; +## Character( CharacterTable( "A5" ), +## [ 3, -1, 0, -E(5)-E(5)^4, -E(5)^2-E(5)^3 ] ) +## gap> psi:= Irr( t )[3]; +## Character( CharacterTable( "A5" ), +## [ 3, -1, 0, -E(5)^2-E(5)^3, -E(5)-E(5)^4 ] ) +## gap> TensorProduct( chi, psi ); +## Character( CharacterTable( "A5" ), [ 9, 1, 0, -1, -1 ] ) +## ]]> +## +## +## <#/GAPDoc> +## +DeclareOperation( "TensorProductOp", [ IsDenseList, IsClassFunction ] ); + + ############################################################################# ## ## 9. Restricted and Induced Class Functions @@ -2321,15 +2356,17 @@ DeclareGlobalFunction( "IrreducibleDifferences" ); ## where a_k(\rho) is the number of cycles of length k ## in \rho. ##

-## For special kinds of symmetrizations, -## see , , -## and , -## . -##

## Note that the returned list may contain zero class functions, ## and duplicates are not deleted. ## ##

+## For special kinds of symmetrizations, +## see , , +## and , +## , +## , +## . +##

## tbl:= CharacterTable( "A5" );; ## gap> Symmetrizations( Irr( tbl ){ [ 1 .. 3 ] }, 3 ); @@ -2376,6 +2413,7 @@ DeclareSynonym( "Symmetrisations", Symmetrizations ); ## (see ). ##

## tbl:= CharacterTable( "A5" );; ## gap> SymmetricParts( tbl, Irr( tbl ), 3 ); ## [ Character( CharacterTable( "A5" ), [ 1, 1, 1, 1, 1 ] ), ## Character( CharacterTable( "A5" ), [ 10, -2, 1, 0, 0 ] ), @@ -2401,11 +2439,12 @@ DeclareGlobalFunction( "SymmetricParts" ); ## ## exterior power ## is the list of symmetrizations of the characters characters -## of the character table tbl with the alternating character of +## of the character table tbl with the sign character of ## the symmetric group of degree n ## (see ). ##

## tbl:= CharacterTable( "A5" );; ## gap> AntiSymmetricParts( tbl, Irr( tbl ), 3 ); ## [ VirtualCharacter( CharacterTable( "A5" ), [ 0, 0, 0, 0, 0 ] ), ## Character( CharacterTable( "A5" ), [ 1, 1, 1, 1, 1 ] ), @@ -2420,6 +2459,76 @@ DeclareGlobalFunction( "SymmetricParts" ); DeclareGlobalFunction( "AntiSymmetricParts" ); +############################################################################# +## +#O ExteriorPower( , ) +## +## <#GAPDoc Label="ExteriorPower_character"> +## +## +## +## +## For a character chi afforded by the module V +## and a positive integer n, +## returns the class +## function that is afforded by the n-th exterior power of V. +##

+## This exterior power is the symmetrization of chi with the +## sign character of the symmetric group of degree n, +## see also and +## . +##

+## t:= CharacterTable( "A5" );; +## gap> List( Irr( t ), chi -> ExteriorPower( chi, 3 ) ); +## [ VirtualCharacter( CharacterTable( "A5" ), [ 0, 0, 0, 0, 0 ] ), +## Character( CharacterTable( "A5" ), [ 1, 1, 1, 1, 1 ] ), +## Character( CharacterTable( "A5" ), [ 1, 1, 1, 1, 1 ] ), +## Character( CharacterTable( "A5" ), [ 4, 0, 1, -1, -1 ] ), +## Character( CharacterTable( "A5" ), [ 10, -2, 1, 0, 0 ] ) ] +## ]]> +## +## +## <#/GAPDoc> +## +DeclareOperation( "ExteriorPower", [ IsClassFunction, IsPosInt ] ); + + +############################################################################# +## +#O SymmetricPower( , ) +## +## <#GAPDoc Label="SymmetricPower_character"> +## +## +## +## +## For a character chi afforded by the module V +## and a positive integer n, +## returns the class +## function that is afforded by the n-th symmetric power of V. +##

+## This symmetric power is the symmetrization of chi with the +## trivial character of the symmetric group of degree n, +## see also and +## . +##

+## t:= CharacterTable( "A5" );; +## gap> List( Irr( t ), chi -> SymmetricPower( chi, 3 ) ); +## [ Character( CharacterTable( "A5" ), [ 1, 1, 1, 1, 1 ] ), +## Character( CharacterTable( "A5" ), [ 10, -2, 1, 0, 0 ] ), +## Character( CharacterTable( "A5" ), [ 10, -2, 1, 0, 0 ] ), +## Character( CharacterTable( "A5" ), [ 20, 0, 2, 0, 0 ] ), +## Character( CharacterTable( "A5" ), [ 35, 3, 2, 0, 0 ] ) ] +## ]]> +## +## +## <#/GAPDoc> +## +DeclareOperation( "SymmetricPower", [ IsClassFunction, IsPosInt ] ); + + ############################################################################# ## #F RefinedSymmetrizations( , , , ) diff --git a/lib/ctblfuns.gi b/lib/ctblfuns.gi index a3a8f6eb0c..931e8080d3 100644 --- a/lib/ctblfuns.gi +++ b/lib/ctblfuns.gi @@ -2442,6 +2442,22 @@ InstallMethod( Tensored, end ); +############################################################################# +## +#M TensorProductOp( , ) +## +InstallMethod( TensorProductOp, + "for a list of class functions and a class function", + [ IsDenseList, IsClassFunction ], + function( list, chi ) + if Length( list ) = 0 then + return One( chi ); + else + return Iterated( list, \* ); + fi; + end ); + + ############################################################################# ## ## 9. Restricted and Induced Class Functions @@ -3925,6 +3941,30 @@ InstallGlobalFunction( AntiSymmetricParts, function( tbl, characters, n ) end ); +############################################################################# +## +#M ExteriorPower( , ) +## +InstallMethod( ExteriorPower, + "for a class function and a pos. integer", + [ IsClassFunction, IsPosInt ], + function( chi, n ) + return AntiSymmetricParts( UnderlyingCharacterTable( chi ), [ chi ], n )[1]; + end ); + + +############################################################################# +## +#M SymmetricPower( , ) +## +InstallMethod( SymmetricPower, + "for a class function and a pos. integer", + [ IsClassFunction, IsPosInt ], + function( chi, n ) + return SymmetricParts( UnderlyingCharacterTable( chi ), [ chi ], n )[1]; + end ); + + ############################################################################# ## #F RefinedSymmetrizations( , , , )