MMM:=15: with(LinearAlgebra): with(combinat): tot := proc(part) local i: add(i, i=part); end proc: prod := proc(part) local i: mul(i, i=part); end proc: revpar := proc(par) sort(par,`>`) end proc: ppartition := proc(n) map(revpar,partition(n)) end proc: transp := proc(part) local i: [seq(nops(select(j -> j- i > -1, part)),i=1..max(part))] end proc: pset := proc(n) local i; [seq(p[i], i=1..n)]; end proc: P := proc(part) prod(map(j -> p[j], part)); end proc: #arm := proc(part, i, j) #part[i]-j #end proc: #leg := proc (part, i, j) #arm(transp(part), j, i) #end proc: conj := proc(part) local i; [seq(nops(select(x -> (x >= i), part)), i=1..max(part))] end proc: arm := proc(part, i, j) part[i]-j end proc; leg := proc(part, i, j) arm(conj(part), j, i) end proc; coarm := proc(part, i, j) j-1 end proc; coleg := proc(part, i, j) i-1 end proc; C := proc(part) local i, j: product(product((1-q^(arm(part, i, j)+1) * t^leg(part, i, j)) / (1 - q^arm(part, i, j) * t^(leg(part, i, j) + 1)), j=1.. part[i]), i=1..nops(part)) end proc: qtchar := proc(part) local i, j: factor(sum(sum(t^(i-1) * q^(j-1) , j=1.. part[i]), i=1..nops(part))) end proc: coefff := proc(PP, T, t) local L, HHH, i, k: L := [coeffs(expand(PP), T, 'hhh')]: HHH:= [hhh]: k:=0: for i from 1 to nops(HHH) do if HHH[i]=t then k:= L[i] fi: od: k; end proc: pexpand := proc(pol, n) local u: tot([seq(factor(coefff(pol, pset(n), P(u))) * P(u), u in ppartition(n))]) end proc: symm := proc(n) option remember; local Z, R, i: if n<0 then return 0 end if; R:= taylor(exp(sum(p[i]/i * Z^i, i=1..n)),Z=0, n+1): coeff(R, Z, n) end proc: comsymm := proc(part) option remember; prod(map(symm, part)) end proc: schur := proc(part) option remember; local M: if part=[] then return 1 end if; M := [seq([seq(symm(part[i]-i+j),j=1..nops(part))],i=1..nops(part))]; expand(Determinant(M)) end proc: countelem := proc(a, part) local M, k: M := select( k -> k=a, part); nops(M) end proc: z := proc(part) local M, i, N: M := [seq([i,countelem(i,part)], i=1..max(part))]; prod(map(u -> u[1]^u[2] * u[2]!, M)); end proc: pair := proc(f, g, n) local u: tot([seq(coefff(f, pset(n), P(u)) * coefff(g, pset(n), P(u)) * z(u), u in ppartition(n))]) end proc: pairmac := proc(f, g, n) local u: tot([seq(coefff(f, pset(n), P(u)) * coefff(g, pset(n), P(u)) * z(u) * prod(map(y -> (1-q^y)/(1-t^y) ,u)), u in ppartition(n))]) end proc: pairjack := proc(f, g, n) local u: tot([seq(coefff(f, pset(n), P(u)) * coefff(g, pset(n), P(u)) * z(u) * beta^(-nops(u)) , u in ppartition(n))]) end proc: hpair := proc(n) option remember; local u, v: [seq([seq(pair(comsymm(u), comsymm(v),n),u in ppartition(n))], v in ppartition(n))] end proc: mh := proc(n) option remember; MatrixInverse(convert(hpair(n), Matrix)): end proc: m := proc(part) option remember; local MH, kkk, i,bas: bas := ppartition(tot(part)); MH := mh(tot(part)); member(part, ppartition(tot(part)), 'kkk'); expand(tot([seq(MH[kkk, i] * comsymm(bas[i]), i=1..nops(bas))])) end proc: mdef := proc(part) option remember; local kk, MM, ll; MM := ppartition(tot(part)); member(part, MM, 'kk'); eval(subs(mm=m,mm(part) + tot([seq(c[kk, ll] * mm(MM[ll]), ll=1.. kk-1)]))); end proc: macstupid := proc(part) local level, bas, dim, num, equations, variables, sol: level:=tot(part); bas := ppartition(level); dim := nops(part); member(part, bas, 'num'); equations:=[seq(seq(pairmac(mdef(bas[i]), mdef(bas[j]), level),i=1..j-1),j=2..num)]: variables := [seq(seq(c[i,j],j=1..i-1),i=2..num)]: sol:=solve(equations,variables)[1]: pexpand(subs(sol, mdef(part)),level); end proc: macdcompute := proc(level) local bas, dim, st, equations, equations0, variables, stt, solution, iw: bas := ppartition(level); dim := min(nops(bas), trunc((nops(bas)+3)/2)); st := time(): equations := [seq(seq(pairmac(mdef(bas[i]), mdef(bas[j]), level),j=i+1..dim),i=1..dim-1)]: equations0 := [seq(seq(pairmac(m(bas[i]), m(bas[j]), level),j=i+1..dim),i=1..dim-1)]: variables := [seq(seq(c[j,dim-i],j=dim-i+1..dim),i=1.. dim-1)]; solution := solve(equations, variables)[1]: for iw in ppartition(level)[1..dim] do macd(iw) := pexpand(subs(solution,mdef(iw)),level): print(iw); end do: print("transposition identity"); for iw in ppartition(level)[dim+1..] do macd(iw) := pexpand( (-1)^level * factor(subs( [q=t, t=q] , subs( [seq(p[i]=-(1-q^i)/(1-t^i) * p[i], i=1..MMM)] ,macd(transp(iw)) ) / C(transp(iw)) )), level); print(iw); end do: print("success"); stt := time(): stt-st; end proc: macdonalds := proc(n) local i: for i from 0 to n do macdcompute(i) end do; end proc: Omuz := proc(n) local i: convert(taylor(exp( sum(- p[i]/i * u^i, i=1..n) ), u=0, n+1), polynom) end proc: D0 := proc( f, lev) coeff(expand(subs( [seq( p[i] = p[i] + (1-q^i) * (1-t^i) * u^(-i), i=1..MMM )] , f ) * Omuz(lev)), u, 0) end proc: DD := proc(f, lev) pexpand((f - D0(f, lev)) / ((1-q) * (1-t) ), lev) end proc: Matr := proc(level) option remember: local bas: bas := ppartition(level); Matrix( [seq([ seq( coefff(DD(P(uu), level), pset(level), P(vv) ) , uu in bas) ], vv in bas)]): end proc: mmacdmod := proc(part) local level, bas, sol: level := tot(part); bas := ppartition(level); sol := NullSpace(Matr(level) - IdentityMatrix(nops(bas)) * qtchar(part))[1]; convert([seq(sol[ijk] * P(bas[ijk]), ijk=1..nops(bas))], `+`); end proc: mmacd := proc(part) local unnormed, no: unnormed := expand(subs([seq(p[i] = p[i] * (1-t^(i)), i=1..10)], subs([t=t^(-1)] , mmacdmod(part)))); no := factor(pair(unnormed, comsymm(part), tot(part))); pexpand(expand(unnormed/no), tot(part)); end proc: skschur := proc(par1, par2) option remember; convert([seq(pair(schur(par2) * schur(ppp), schur(par1), tot(par1)) * schur(ppp), ppp in ppartition(tot(par1)-tot(par2)))], `+`); end proc: subpart := proc(partt) local iuu, rr, pa, pa1,paa; pa := [seq( op( ppartition(rr) ), rr=1..tot(partt))]; pa1 := select(paa -> nops(paa) <= nops(partt), pa); select(paa -> min([seq(partt[iuu]-paa[iuu], iuu=1..nops(paa))]) >-1, pa1) end proc: ##################################### contr := proc (par1, par2) local i,j; subs([seq(p[i]=(A^i-A^(-i))/(q^i-q^(-i)), i=1..2*MMM)], skschur(par1, par2)*schur(par2)/schur(par1)) * convert([seq(seq(DA(arm(par1,i,j)-leg(par1,i,j)-coarm(par1,i,j)+coleg(par1,i,j))/DA(coarm(par1,i,j)-coleg(par1,i,j))*DA(1+2*coarm(par1,i,j)+arm(par1,i,j)-coleg(par1,i,j))*DA(-1-leg(par1,i,j)-2*coleg(par1,i,j)+coarm(par1,i,j)), j=1..par2[i]), i=1..nops(par2))], `*`); end proc; summa := proc(par1) factor( 1 + convert([seq( subs([seq(p[i]=(A^i-A^(-i))/(q^i-q^(-i)), i=1..2*MMM)], (-1)^tot(par2) * skschur(par1, par2) * schur(par2)/schur(par1)), par2 in subpart(par1))], `+`)) end proc: summa2 := proc(par1) factor( 1 + convert([seq( subs([seq(p[i]=(A^i-A^(-i))/(q^i-q^(-i)), i=1..2*MMM)], A = A*q^(tot(par2)-1) ,(-1)^tot(par2) * skschur(par1, par2) * schur(par2)/schur(par1)), par2 in subpart(par1))], `+`)) end proc: cont := proc(part) local i, j; convert([seq(seq(j-i, j=1..part[i]), i=1..nops(part))], `+`); end proc; revpar := proc (par) sort(par, `>`) end proc; ppartition := proc (n) map(revpar, partition(n)) end proc; subpart := proc (partt) local iuu, rr, pa, pa1, paa; pa := [seq(op(ppartition(rr)), rr = 1 .. tot(partt))]; pa1 := select(proc (paa) options operator, arrow; nops(paa) <= nops(partt) end proc, pa); select(proc (paa) options operator, arrow; -1 < min([seq(partt[iuu]-paa[iuu], iuu = 1 .. nops(paa))]) end proc, pa1) end proc;