# # seminormal - matrices for Young's seminormal representations of S_n # rep_matrix - representing matrices for arbitrary permutations # # Calling sequence: # seminormal(mu); # rep_matrix(w,A); # # Parameters: # mu - a partition of some integer n>1 # w - a permutation of [1,2,...,n] # A - a table of matrices # # If mu is a partition of n>1, seminormal(mu) computes the representing # matrices for the adjacent transpositions in Young's seminormal form for # the irreducible representation of S_n indexed by mu. # # The results are returned in a table whose i-th entry is the representing # matrix for the transposition (i,i+1). Each matrix is in 'sparse' format, # with the rows and columns corresponding to standard Young tableaux in the # last-letter-highest-row-order. (See the documentation for the 'tableaux' # function elsewhere in the examples directory.) # # Once the matrices for the adjacent transpositions have been assigned to # some table A, the function rep_matrix(w,A) may be used to compute the # representing matrix for any permutation w of [1,2,...,n]. # # Reference: # G. James and A. Kerber, "The Representation Theory of the Symmetric # Group," Section 3.3. # # Examples: # A:=seminormal([3,1]); # print(A[1],A[2],A[3]); # rep_matrix([2,4,1,3],A); seminormal:=proc(mu) local k,m,tab,i,j,r1,r2,c1,c2,A,ad; tab:=tableaux(mu); m:=nops(tab); A:=table(); for k to convert(mu,`+`)-1 do A[k]:=array('sparse',1..m,1..m); for i to m do if member(subs({k=k+1,k+1=k},tab[i]),tab,'j') and j1 then A[k][j,j]:=-1/ad; A[k][i,j]:=1+1/ad; A[k][j,i]:=1-1/ad; fi od od; op(A) end; rep_matrix:=proc(w,A) local i,w0; for i to nops(w)-1 while w[i]1 then nu:=mu[i]-1 else nu:=NULL fi; old:=tableaux(subsop(i=nu,mu)); if mu[i]=1 then old:=map(x->[op(x),[]],old) fi; new:=new,op(map((x,j,m)->subsop(j=[op(x[j]),m],x),old,i,n)) od; [new] end;