Back to the main page on q-analog of Schur's Q-functions
home

The Schur-Q functions and their q-analogs G_\mu[X;q]

These procedures compute the functions Q_\la[X] and G_\la[X;q]

main functions:

Qlap( lambda )
returns Schur's Q function in the p-basis

Glaq( lambda )
returns G_\la^q in the p-basis

toSchurQ( expression )
turn an expression to Schur's Q-function basis

paraGq( seqoflambda )
returns the parabolic versions of these functions indexed by a sequence of partitions

requires the package SF from John Stembridge

> with(SF);

Some versions of SF don't have the degree function in the front end

> stdeg:=SF/stdeg:

> Qk:=proc(k) local i,j;
if k=0 then 1;
fi;
end:

> strict:=proc(la) local i,out;
out:=true;
for i from 1 to nops(la)-1 do
if la[i]=la[i+1] then out:=false; fi;
od;
out;
end:

> Qkp:=proc(k) option remember;
local i,j;
top(Qk(k));
end:

PEX:=top(EX);
end:

subs({seq(p.i=q^i*pp.i+(1-q^i)*p.i,i=1..stdeg(EX))},top(EX))));
end:

> Qlap:=proc(la) local out,i;
out:=1;
for i from nops(la) to 1 by -1 do
od;
out;
end:

> Glaq:=proc(la) local out,i;
out:=1;
for i from nops(la) to 1 by -1 do
od;
tos(out);
end:

out:=EX;
for i from nops(la) to 1 by -1 do
od;
out;
end:

subs({seq(p.i=q^i*pp.i+(1-q^i)*p.i,i=1..stdeg(EX))},top(EX))));
end:

> paraGla:=proc(R) local out,i;
out:=1;
for i from nops(R) to 1 by -1 do
od;
out;
end:

> toSchurQ:=proc(EX) local sp,prs,d,cfl,i,sln,inds;
if type(EX,'list') then sp:=top(op(EX));
else
RETURN(convert(map(x->toSchurQ([x]),[SF/homog_cmps(top(EX))]),+));
fi;
prs:=select(strict,Par(stdeg(sp)));
d:=stdeg(sp);
inds:={seq(p.i,i=1..d)};
inds,'distributed'),inds)};
sln:=readlib(solve/linear)(cfl,{seq(c[i],i=1..nops(prs))});
end:

Examples

> Glaq([3,2]);

> toSchurQ(%);

> toSchurQ(Glaq([3,3,2,1]));

> toSchurQ(Glaq([3,2,2,1]));

> for la in select(strict,Par(6)) do
Gq[op(la)] = toSchurQ(Glaq(la));
od;

> toSchurQ(Glaq([4,3,2,1]));

> toSchurQ(paraGla([[4,3],[2,1]]));

> toSchurQ(paraGla([[4],[3,2],[1]]));

Back to the main page on q-analog of Schur's Q-functions