GAP: how to obtain the Young Symmetrizer?

270 Views Asked by At

Given a partition $\lambda$ of $n$ and a standard Young Tableaux filled with numbers from $1$ to $n$ (e.g. increasing row by row), how does one obtain the corresponding Young Symmetrizer using GAP?

I could imagine that GAP already has such a functionality built in, e.g. in the package Specht. However I do not understand the language used in the package description. I would highly appreciate a pointer.

1

There are 1 best solutions below

1
On BEST ANSWER

A very naive way of implementing the definition is:

YoungSymmetrizer:=function(lambda)
local f,n,sym,a,emb,pl,al,ql,bl,g;
  f:=Flat(lambda);
  Sort(f);
  n:=f[Length(f)];
  if f<>[1..n] then Error("not a tableau");fi;
  sym:=SymmetricGroup(n);
  a:=GroupRing(Rationals,sym);
  emb:=Embedding(sym,a);
  pl:=Stabilizer(sym,lambda,OnTuplesSets);
  al:=Zero(a);
  for g in Iterator(pl) do
    al:=al+ImagesRepresentative(emb,g);
  od;
  ql:=Stabilizer(sym,TransposedMat(lambda),OnTuplesSets);
  bl:=Zero(a);
  for g in Iterator(ql) do
    bl:=bl+SignPerm(g)*ImagesRepresentative(emb,g);
  od;
  return al*bl;
end;

I suspect that the dense support will make this infeasible for n much beyond 8 or 9.