En los años transcurridos desde que dejé la respuesta a continuación, Sage ha mejorado mucho, especialmente su teoría de funciones simétricas. Para calcular la tercera potencia exterior de la S7 -irrep correspondiente a la partición 3+3+1 Sólo hay que teclear lo siguiente:
s = SymmetricFunctions(QQ).schur()
s[1,1,1].inner_plethysm(s[3,3,1])
que devuelve
s[2, 1, 1, 1, 1, 1] + 2*s[2, 2, 1, 1, 1] + 4*s[2, 2, 2, 1] + 6*s[3, 1, 1, 1, 1] + 9*s[3, 2, 1, 1] + 7*s[3, 2, 2] + 4*s[3, 3, 1] + 7*s[4, 1, 1, 1] + 9*s[4, 2, 1] + 4*s[4, 3] + 2*s[5, 1, 1] + 4*s[5, 2] + s[6, 1] + s[7]
la misma respuesta descubierta por el código GAP de abajo. Sage también es más rápido. Por lo que tengo entendido, GAP sigue ganando cuando quieres estudiar representaciones sobre un campo finito. (¡Pero no es realmente un concurso ya que GAP está incluido en Sage!) Desde Sage, puedes iniciar una consola GAP con
gap_console()
La respuesta de 2012 aparece a continuación.
Aquí está el código GAP que utilizo para hacer estos cálculos:
SchurFunctorOfCharacter:=function(char,p)
local n,t,c;
if p=[] then
return TrivialCharacter(UnderlyingCharacterTable(char));
fi;
n:=Sum(p);
t:=CharacterTable("Symmetric",n);
c:=List(CharacterParameters(t),u->u[2]);
return Symmetrizations([char],n)[Position(c,p)];
end;;
CharacterFromPartition:=function(table,p)
local c;
c:=List(CharacterParameters(table),u->u[2]);
return Irr(table)[Position(c,p)];
end;;
DecomposeCharacter:=char->List(Irr(UnderlyingCharacterTable(char)),x->ScalarProduct(x,char));;
t:=CharacterTable("Symmetric",7);;
chi:=CharacterFromPartition(t,[3,3,1]);;
DecomposeCharacter(SchurFunctorOfCharacter(chi,[1,1,1]));
Este código calcula la tabla de caracteres de S7 encuentra el carácter correspondiente a la partición 3+3+1 y aplica el functor de Schur correspondiente a la partición 1+1+1 (también conocido como ∧3 ). Este es el resultado:
[ 0, 1, 2, 4, 6, 9, 7, 4, 7, 9, 4, 2, 4, 1, 1 ]
Son las multiplicidades de los constituyentes irreductibles de nuestro carácter. La ordenación de las particiones es lexicográfica. Por ejemplo, para determinar el significado del 6 , sólo hay que tomar la quinta partición de 7 :
Partitions(7)[5];
El resultado muestra que el coeficiente 6 aparece antes del tabique en forma de L 3+1+1+1+1 :
[3,1,1,1,1]
2 votos
Estoy escribiendo módulos en Haskell para hacer este tipo de cosas. Véase www.github.com/rotskoff. Todavía no será útil para este tipo de preguntas, pero si otras personas tienen cálculos como los de los ejemplos (1) y (2) que les gustaría ver implementados, ¡háganmelo saber!