Processing math: 100%

25 votos

Paquete informático para la teoría de la representación del grupo simétrico

¿Existe algún paquete de álgebra computacional en el que pueda calcular lo siguiente para representaciones de un grupo simétrico específico (por ejemplo S7 ):

(1) VW

(2) SλV , donde Sλ es un functor de Schur, o incluso sólo sV ,

donde V y W se introducen como sumas de representaciones irreducibles, es decir, por particiones con coeficientes, y se emiten en el mismo formato?

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!

16voto

James Ricken Puntos 31

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]

8voto

Ira Gessel Puntos 4853

Si he entendido bien, se puede hacer el cálculo con funciones simétricas utilizando la operación de pletismografía interna, que guarda la misma relación con el producto interno, o de Kronecker, sobre funciones simétricas que la pletismografía ordinaria con la multiplicación ordinaria de funciones simétricas (y además convierte el anillo de funciones simétricas con el producto interno en un λ -anillo). El plethysm interno no es tan conocido como debería (creo que no se menciona en el libro de Macdonald), pero las fórmulas para calcularlo no son complicadas:

Utilizando, para simplificar, la notación f[g] para esta operación, se determina por lo siguiente:

(1) para los fijos g el mapa ff[g] es un homomorfismo del anillo de funciones simétricas con el producto habitual al anillo de funciones simétricas con el producto interno.

(2) Para una partición λ de n y un número entero k , dejemos que λk denotan el tipo de ciclo del k potencia de una permutación con tipo de ciclo λ . Entonces pk[λnaλpλzλ]=λnaλkpλzλ No creo que el plethysm interno esté implementado en el paquete SF de John Stembridge, pero expresará fácilmente las funciones de Schur en términos de funciones simétricas de suma de potencias y viceversa, y calcular plethysms internos con funciones simétricas de suma de potencias no es difícil; si sabes Maple, esencialmente todo lo que necesitas hacer es escribir una función para calcular λk . Entonces, para calcular la característica de SλV Todo lo que hay que hacer es calcular el pletus interno sλ[ch V] .

3voto

Shlomi Fish Puntos 1951

Con Magma se puede hacer (1) tomando productos de caracteres, y (2) usando la función 'Symmetrization', siempre que |λ|6 . En cualquier caso, la salida será un carácter χ de un grupo simétrico. Entonces puedes escribir una función corta que calcule todos los productos internos de χ con caracteres irreducibles para obtener la respuesta en la forma deseada. La función 'SymmetricCharacter' devuelve el carácter irreducible etiquetado por una partición dada.

Editar: Gap también tiene incorporadas la mayoría de las funciones necesarias. Para generar los caracteres irreducibles de S7 utilizar 'Irr(SymmetricGroup(7))'. A continuación, puede sumar y multiplicar caracteres para obtener el carácter del producto tensorial de dos representaciones de S7 . Entonces 'Symmetrizations(Irr(SymmetricGroup(7)),s)' calcula Sλχ para todos los caracteres irreducibles de S7 y todas las particiones λ de s . Esto casi no tomó tiempo para ejecutar, incluso para s=10 , un caso en el que Magma falla.

No estoy seguro de que Gap proporcione alguna forma de determinar la partición que etiqueta un carácter irreducible de Sn . Antes de que se introdujera 'SymmetricCharacter' en Magma, utilizaba algún código propio para identificar la partición de etiquetado, mirando primero el grado (utilizando la fórmula del gancho), y luego resolviendo cualquier ambigüedad utilizando fórmulas clásicas para los valores de los caracteres de grupos simétricos en ciclos de longitud corta. Por favor, envíame un correo electrónico si quieres más detalles.

3voto

carrie bradley Puntos 103

El paquete de combinatoria en Sage debería hacer estas cosas, al menos si sólo estás interesado en las descomposiciones en irreducibles y no en las matrices reales.

2voto

Mark Reed Puntos 264

Podrías probar con GAP. Esto está lejos de ser elegante, sólo si estás muy desesperado ;-)

gap> g := SymmetricGroup(7);;

gap> regmod := RegularModule(g,GF(19));;

/Esto no es elegante: he elegido GF(11) para que el anillo del grupo sea semisimple (como si se trabajara sobre un campo de característica 0. Esto es necesario aquí, ya que GAP utiliza el MeatAxe que necesita campos finitos). Además, sería mejor obtener los constituyentes simples de otra fuente que no sea el módulo regular, ya que el módulo regular pronto adquiere una dimensión demasiado grande. Tal vez se podría considerar una acción de g en los cosets de un subgrupo donde sus simples de interés ocurren como factores de composición. Pida más detalles si está interesado. Para g=S7 esto es demasiado grande para manejarlo. Así que tomo el PermutationModule natural, que tiene dos constituyentes, un módulo de dimensión 1 y un módulo de dimensión 6.//

gap> permod := PermutaciónGMódulo(g,GF(11));;

gap> comps := MTX.CompositionFactors(permod);

[ rec( campo := GF(11), isMTXModule := true, dimensión := 1, generadores := [ [ Z(11)^0 ] ], [ [ Z(11)^0 ] ] ], smashMeataxe := rec( algebraElement := [ [ 1, 2 ], [ 3, 1 ] ], [ Z(11)^0, Z(11)^0, Z(11)^9, Z(11) ] ], algebraElementMatrix := [ Z(11)^5 ], characteristicPolynomial := x_1+Z(11)^0, charpolFactors := x_1+Z(11)^0, nullspaceVector := [ Z(11)^0 ], ndimFlag := 1 ), IsIrreducible := true ), rec( campo := GF(11), isMTXModule := true, dimensión := 6, generadores := [ < matriz comprimida inmutable 6x6 sobre GF(11) >, < matriz comprimida inmutable 6x6 sobre GF(11) > ], smashMeataxe := rec( algebraElement := [ [ 2, 1 ], [ 2, 3 ] ], [ Z(11)^6, Z(11)^9, Z(11)^8, Z(11) ] ], algebraElementMatrix := < matriz comprimida inmutable 6x6 sobre GF( 11) >, characteristicPolynomial := x_1^6+Z(11)^6*x_1^5+Z(11)^7*x_1^3+Z(11)^3*x_1^2+Z(11)^4*x_1+Z(11)^8, charpolFactors := x_1-Z(11)^0, nullspaceVector := [ Z(11), Z(11)^8, Z(11)^5, Z(11)^3, Z(11)^7, Z(11)^0 ], ndimFlag := 1 ), IsIrreducible := true ) ]

gap> c1 := comps[1];;

gap> c2 := comps[2];;

gap> TensorProductGModule(c1,c2);

rec( campo := GF(19), isMTXModule := true, dimensión := 6, generadores := [ < matriz comprimida inmutable 6x6 sobre GF(19) >, < matriz comprimida inmutable 6x6 sobre GF(19) > ] ) gap>

A partir de este momento puedes hacer todo lo que el MTX en GAP te permite hacer con los módulos. Ver también http://www.gap-system.org/Manuals/doc/htm/ref/CHAP067.htm#SSEC002.2 para obtener más información sobre las BPA.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X