HOME: | |
BACK: | Maple Packages |
>
with(SF);
Determinental formula for H_\mu[X;q,t]
Expansion in terms of s_\la[X/(1-q)] is LLMtqformula, use H(mu) to compute a specific SF
>
LLMtqmatrix:=proc(mu) local pars,npars;
>
LLMtqformula:=proc(mu);
>
H:=proc(mu)
>
doHs:=proc(n) local i,ptns,slst,la;
Auxiliary
>
lambda:=proc(expr,f) global s:
>
so1mq:=proc(mu) option remember;
>
mkhooks:=proc(mu)
>
clap:=proc(lambda);
>
cla:=proc(lambda);
>
vla:=proc(la) local npars;
>
dbqt:=proc(mu) local n;
>
makelength:=proc(n,mulst);
>
eps:=proc(mu,alpha) local n,lst,i,j,cnt;
>
sgnorbit:=proc(nu) local lst,last,sgn,n,cur,i,j,nl;
>
sbqt:=proc(lambda,mu,nu);
pars:=map(conjugate,dominate(conjugate(mu)));
npars:=makelength(nops(mu),pars);
matrix(nops(pars),nops(pars),[[seq(T[op(la)],la=pars)],
seq([seq(sbqt(mu,la,npars[i]),la=npars)],i=2..nops(pars))]);
end:
simplify(clap(mu)/vla(mu)*linalg[det](LLMtqmatrix(mu)));
end:
subs({seq(T[op(la)]=so1mq(la),la=ptns)},LLMtqformula(mu));
end:
ptns:=Par(n);
slst:={seq(T[op(la)]=so1mq(la),la=ptns)};
print("Calculated substitions...");
for i from 1 to nops(ptns) do
print("Working on ",ptns[i]);
member(conjugate(ptns[i]),ptns,'j');
if i<=j then
Hs(ptns[i]):=simplify(subs(slst,LLMtqformula(ptns[i])));
else
Hs(ptns[i]):=subs({q=t,t=q},omega(Hs(ptns[j])));
fi;
od;
local poly,d,j,res;
poly := top(expr);
d := varset(poly,'p');
res:=tos(collect(subs({seq(cat('p',j)= f(j),j = 1 .. d)},poly),
[seq(cat('p',j),j = 1 .. d)],distributed)):
map(factor,%):
subs(s[]=1,%):
end:
lambda(s[op(mu)],k->p.k/(1-q^k));
end:
option remember;
local i,j;
[seq(seq([arm(i,j,mu),carm(i,j,mu),leg(i,j,mu),cleg(i,j,mu)],
j=1..mu[i]),
i=1..nops(mu))]
end:
arm:=proc(i,j,mu) mu[i]-j end:
carm:=proc(i,j,mu) j-1 end:
leg:=proc(i,j,mu) op(j,`SF/conjugate`(mu))-i end:
cleg:=proc(i,j,mu) i-1 end:
hook:=proc(mu) map(proc(x) x[1]+x[3]+1 end,mkhooks(mu)) end:
convert(map(s->1-q^(s[1]+1)*t^s[3],mkhooks(lambda)),`*`);
end:
convert(map(s->1-q^s[1]*t^(s[3]+1),mkhooks(lambda)),`*`);
end:
npars:=makelength(nops(la),map(conjugate,dominate(conjugate(la))));
convert([seq(dbqt(la) - dbqt(npars[i]),i=2..nops(npars))],`*`);
end:
n:=nops(mu);
convert([seq(q^mu[i]*t^(n-i),i=1..n)],`+`);
end:
map(proc(mu) local i; [op(mu),seq(0*i,i=1..n-nops(mu))] end,mulst);
end:
n:=nops(alpha);
cnt:=0;
lst:=alpha;
if n<>nops(mu) then RETURN(0); fi;
for i from 1 to n do
for j from n-1 to i by -1 do
if lst[j+1]-lst[j]-1>0 then
lst:=subsop(j=lst[j+1]-1,j+1=lst[j]+1,lst);
cnt:=cnt+1;
fi;
od;
od;
if lst=mu then RETURN((-1)^cnt) else RETURN(0); fi;
end:
sgn:=-1;
last:=[nu];
n:=nops(nu);
lst:=NULL;
while last<>{} do
sgn:=-sgn;
nl:=NULL;
for j from 1 to nops(last) do
cur:=last[j];
lst:=lst,[sgn,cur];
for i from 1 to n-1 do
if cur[i+1]-cur[i]<1 then
nl:=nl,subsop(i=cur[i+1]-1,i+1=cur[i]+1,cur);
fi;
od;
od;
last:={nl};
od;
{lst};
end:
convert([seq(eps(mu,alpha)*(dbqt(lambda)-dbqt(alpha)),
alpha=combinat[permute](nu))],`+`);
end: