HOME: BACK: Maple Packages

Initialization of SF

> with(SF):

Auxiliary

Lambda Ring notation

> lambda:=proc(expr,f) global s:
local poly,d,j,res;
poly := top(expr);
d := varset(poly,'p');
res:=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:

Macdonald Bases:
P is P_\mu[X;q,t] and
J is J_\mu[X;q,t] and
H is H_\mu[X;q,t]

> add_basis(P,mu->zee(mu,q,t)):
add_basis(cP,mu->zee(mu,q,t),mu->1/hp(mu)):
dual_basis(H,cP,mu->zee(mu,q,0)):
add_basis(J,mu->zee(mu,q,t),mu->SF/hooks(mu,q,t)):
hp:=proc(mu) option remember;
SF/hooks(SF/conjugate(mu),t,q);
end:

Hall-Littlewood Basis
F is H_\mu[X;t] = H_\mu[X;0,t]

> add_basis(cp,mu->zee(mu,0,t),mu->hpt(mu)):
hpt:=proc(mu) option remember;
1/SF/hooks(SF/conjugate(mu),t,0); end:
dual_basis(F,cp,zee):

Vertex operator computation of these:

Macdonald Basis
partitions ² 8 that don't fit Vertex operator setting
n=7 [4,1,1,1], n=8 [5,1,1,1], [4,2,2], [4,2,1,1], [4,1,1,1,1], [3,3,2], [3,3,1,1]
formula that adds a row of size 4 to a column is conjectured (for the
moment...I know how to prove it, I just haven't yet)

> H:=mu->tos(doH(mu)):
doH:=proc(mu) option remember; local n;
n:=convert(mu,+);
if n=0 then RETURN(1);
elif n=1 then RETURN(p1);
elif nops(mu)=1 then
RETURN(subs(t=q,omega(doH([seq(1,i=1..n)]))));
elif mu[1]=1 then
RETURN(Hmt(1,doH(mu[2..nops(mu)])));
elif mu[1]=2 then
RETURN(H2qt(doH(mu[2..nops(mu)])));
elif mu[1]=3 and (mu[2]=2 or mu[2]=1) then
RETURN(H3qt(doH(mu[2..nops(mu)])));
elif mu[1]=4 and mu[2]=1 then
RETURN(H4qt(doH(mu[2..nops(mu)])));
elif nops(mu)=2 or (nops(mu)=3 and mu[3]=1) or
(nops(mu)=4 and mu[2]=1) then
RETURN(subs({t=q,q=t},omega(doH(SF/conjugate(mu)))));
else
RETURN(tos(lambda(toe(J[op(mu)],J[]),k->p.k/(1-t^k))));
fi;
end:

> J:=proc(mu) option remember; local n;
n:=convert(mu,+);
if mu[1]=1 then
RETURN(product(1-t^k,k=1..n)*e.n);
elif nops(mu)=1 then
RETURN(lambda(subs(t=q,omega(J([seq(1,i=1..n)]))),
k->p.k*(1-t^k)/(1-q^k)));
elif mu[1]=2 then
RETURN(J2qt(J(mu[2..nops(mu)])));
elif mu[1]=3 and (mu[2]=2 or mu[2]=1) then
RETURN(J3qt(J(mu[2..nops(mu)])));
elif mu[1]=4 and mu[2]=1 then
RETURN(J4qt(J(mu[2..nops(mu)])));
elif nops(mu)=2 or (nops(mu)=3 and mu[3]=1) or
(nops(mu)=4 and mu[2]=1) then
RETURN(lambda(subs({t=q,q=t},omega(J(SF/conjugate(mu)))),
k->p.k*(1-t^k)/(1-q^k)));
fi;
toe(J[op(mu)],J[]);
end:

Hall-Littlewood Basis

> F:=proc(mu) option remember;
if nops(mu)=0 then RETURN(1);
elif nops(mu)=1 then RETURN(s[nops(mu)]);
elif nops(mu)=2 then RETURN(t^mu[2]*s[mu[1]+mu[2]] +
convert([seq(t^i*s[mu[1]+i,mu[2]-i],i=0..mu[2]-1)],+));
else RETURN(Hmt(mu[1],F(mu[2..nops(mu)])));
fi;
end:

Auxiliary

Vertex opertator for the F=Hall-Littlewood Basis

> Hmt:=proc(m,EX)
local i,pat,out,pex,te,d,coe,k,H,HH;
pat:={seq(p.i=p.i+(t^i-1)*z^i,i=1..10)};
pex:=top(EX);
te:=expand(subs(pat,pex));
d:=degree(te,z);
H:=[seq(h.i,i=m..d+m)];
HH:=map(top,H);
out:=subs(z=0,te)*HH[1];
for k from 1 to d do
coe:=coeff(te,z,k);
out:=out+coe*HH[1+k];
od;
tos(out);
end:

Vertex operator Macdonald H for row of size 2

> H2qt:=proc(EX)
local i,pat,out,pex,te,d,coe,k,E,EE;
pat:={seq(p.i=p.i+(t^i-1)*z^i,i=1..10)};
pex:=top(EX);
te:=expand(subs(pat,pex));
d:=degree(te,z);
EE:=[seq(RH2(i,d), i=2..d+2)];
out:=subs(z=0,te)*EE[1];
for k from 1 to d do
coe:=coeff(te,z,k);
out:=out+coe*EE[1+k];
od;
expand(out);
end:
RH2:=proc(i,d) option remember;
top(h.i + q*t^(d+2-i)*(-1)^i*e.i);
end:

Vertex operator Macdonald H for row of size 3 on two column only

> H3qt:=proc(EX)
local i,pat,out,pex,te,d,coe,k,E,EE;
pat:={seq(p.i=p.i+(t^i-1)*z^i,i=1..10)};
pex:=top(EX);
te:=expand(subs(pat,pex));
d:=degree(te,z);
EE:=[seq(RH3(i,d), i=3..d+3)];
out:=subs(z=0,te)*EE[1];
for k from 1 to d do
coe:=coeff(te,z,k);
out:=out+coe*EE[1+k];
od;
expand(out);
end:
RH3:=proc(i,d) option remember;
top(h.i + q*s[i-1,1]+ q^2*t^(d+3-i)*(-1)^(i-1)*(e1*e.(i-1)) + (q-1)*q^2*t^(d+3-i)*(-1)^(i-1)*e.i);
end:

Vertex operator Macdonald H for row of size 4 on one column only

> H4qt:=proc (EX) local i, pat, out, pex, te, d, coe, k, E, EE;
pex := top(EX);
d := SF/stdeg(EX);
pat := {seq(p.i = p.i+(t^i-1)*z^i,i = 1 .. d)};
te := expand(subs(pat,pex));
EE := [seq(RH4(i,d),i = 4 .. d+4)];
out := subs(z = 0,te)*EE[1];
for k to d do coe := coeff(te,z,k);
out := out+coe*EE[k+1] od;
tos(out)
end:
RH4:=proc (i, d) local xx, yy;
option remember;
xx := convert([seq(q^j*h.(i-j)*h.j,j = 1 ..3)],+)
+h.(i)-q*(1-q^3)*h.(i)/(1-q);
yy := q^6*subs({seq(h.j = e.j, j = 1 .. 4+i), q = 1/q},xx);
top(xx+yy*t^(d-i+4)*(-1)^(i));
end:

Vertex operator for Macdonald J for row of size 2

> J2qt:=proc(EX)
local i,pat,out,pex,te,d,coe,k,E,EE;
pat:={seq(p.i=p.i-z^i,i=1..10)};
pex:=top(EX);
te:=expand(subs(pat,pex));
d:=degree(te,z);
EE:=[seq(RJ2(i,d), i=2..d+2)];
out:=subs(z=0,te)*EE[1];
for k from 1 to d do
coe:=coeff(te,z,k);
out:=out+coe*EE[1+k];
od;
expand(out);
end:
RJ2:=proc(i,d) option remember;
top(hp1mt(i) + q*t^(d-i+2)*(-1)^i*ep1mt(i));
end:

Vertex operator Macdonald J for row of size 3 on two column only

> J3qt:=proc(EX)
local i,pat,out,pex,te,d,coe,k,E,EE;
pat:={seq(p.i=p.i-z^i,i=1..10)};
pex:=top(EX);
te:=expand(subs(pat,pex));
d:=degree(te,z);
E:=[seq(RJ3(i,d), i=3..d+3)];
EE:=map(top,E);
out:=subs(z=0,te)*EE[1];
for k from 1 to d do
coe:=coeff(te,z,k);
out:=out+coe*EE[1+k];
od;
expand(out);
end:
RJ3:=proc(i,d) option remember;
top(hp1mt(i)*(1-q) + q*hp1mt(i-1)*ep1mt(1) +
q^2*t^(d+3-i)*(-1)^(i-1)*(ep1mt(1)*ep1mt(i-1)) +
(q-1)*q^2*t^(d+3-i)*(-1)^(i-1)*ep1mt(i));
end:

Vertex operator Macdonald J for row of size 4 on one column only

> J4qt:=proc(EX)
local i,pat,out,pex,te,d,coe,k,E,EE;
pat:={seq(p.i=p.i-z^i,i=1..10)};
pex:=top(EX);
te:=expand(subs(pat,pex));
d:=degree(te,z);
E:=[seq(RJ4(i,d), i=4..d+4)];
EE:=map(top,E);
out:=subs(z=0,te)*EE[1];
for k from 1 to d do
coe:=coeff(te,z,k);
out:=out+coe*EE[1+k];
od;
expand(out);
end:
RJ4:=proc(i,d) local xx, yy;
option remember;
xx := hp1mt(i)+
convert([seq(q^j*hp1mt(i-j)*hp1mt(j),j = 1 ..3)],+)
-q*(1-q^3)*hp1mt(i)/(1-q);
yy := q^6*subs({q = 1/q},omega(xx));
top(xx+yy*t^(d-i+4)*(-1)^(i));
end:

> hp1mt:=proc(n) option remember;
if n=0 then 1;
else subs({seq(p.i=p.i*(1-t^i),i=1..n)},top(h.n,h));
fi;
end:
ep1mt:=proc(n) option remember;
if n=0 then 1;
else subs({seq(p.i=p.i*(1-t^i),i=1..n)},top(e.n,e));
fi;
end: