QF: The Q-Functions subpackage of SF
Help Texts for the Vanilla Edition of QF 0.93
This is in-development software. Stuff may be broken.
This package requires SF 2.4 (or later).
After loading the vanilla edition of QF, and the unix or vanilla edition
of SF, each QF function may be accessed using the calling sequence
QF[functionname](arguments). In order to use the abbreviated form
functionname(arguments), run the command 'withQF()'. If there is a conflict
between the names of one of the package functions and another name in the
same session, a warning is printed.
To use the abbreviated form for a subset of the procedures in the package
(e.g., to avoid conflicts), run the command 'withQF(name1,name2,...)'.
In addition to the names e, h, p, s, cl, and e1, p1, h1, e2, h2, p2,....
that are reserved for use by SF, the names q, Q, P, and q1, q2,... play
special roles as global variables in the QF package and should not be
assigned values by the user.
This document provides help texts for each of the functions in QF:
- char2qf - convert spin characters to symmetric functions
- DPar - list partitions with distinct parts
- OPar - list partitions with odd parts
- pfaff - pfaffian for a (possibly skew) Schur Q-function
- qf2char - convert symmetric functions to spin characters
- spin - spin characters of the symmetric group
- super - superfication of symmetric functions
- toddp - convert to the basis of odd power-sums
- toddq - convert to the odd q-basis
- toP - convert to Schur P-functions
- toq - convert to a polynomial in the q-functions
- toQ - convert to Schur Q-functions
- zeeQ - squared norm of (odd) power sums
FUNCTION: char2qf - convert spin characters to symmetric functions
CALLING SEQUENCE: char2qf(clf);
char2qf(clf,b);
PARAMETERS: clf = a signed class function (i.e., a linear combination of
the indicator functions cl[mu] for partitions mu)
b = (optional) a basis name
SYNOPSIS:
The spin characteristic is an isometric linear map from signed class
functions on a double cover of the symmetric group of degree n onto
homogeneous symmetric functions of degree n in the Omega algebra.
A class function f is "signed" if f(-w)=-f(w) for all group elements w,
where -1 denotes the central element of the extension.
Under this map, the irreducible spin character(s) of S_n indexed by
lambda correspond to a multiple of the Schur Q-function Q[lambda]
(see the help for 'spin'). Signed class functions that are supported
only on elements whose symmetric group images have at least one even-
length cycle are in the kernel of the spin characteristic.
Signed class functions are expressed as linear combinations of terms of
the form cl[mu], where mu ranges over partitions. Here, cl[mu] denotes
a signed class function that takes the value +/- 1 at elements whose
symmetric group image has cycle-type mu, and 0 otherwise. The signs are
determined by the convention that the coefficients for the basic spin
character are positive. In particular, the coefficient of cl[1,....,1]
is the value at the identity element.
If clf is any signed class function, char2qf(clf) returns the symmetric
function in Omega corresponding to f, expressed in terms of the odd
power sums p1,p3,....
If a second argument b is one of the special bases of QF; namely, p, q,
Q (or Q[]), or P (or P[]), then the result is expressed in that basis.
EXAMPLES:
char2qf(cl[5,3,3,1]); yields 2/45*p5*p3^2*p1
char2qf(10*cl[5,1],Q); yields 2*Q[6]-Q[5,1]+Q[3,2,1]
SEE ALSO: OPar, qf2char, spin, zeeQ, SF[char2sf], SF[sf2char], SF[zee]
FUNCTION: DPar - list partitions with distinct parts
CALLING SEQUENCE: DPar(n); DPar(n,l); DPar(n,k,l);
PARAMETERS: n = a nonnegative integer
l = (optional) maximum number of parts allowed
k = (optional) maximum part size allowed
SYNOPSIS:
A partition of n is defined to be a non-increasing list of positive
integers with sum n. The members of the list are called parts.
DPar(n) returns a list consisting of all partitions of n with no
repeated parts; i.e., each list is strictly decreasing.
DPar(n,l) returns a list of all partitions of n with distinct parts,
restricted to those with at most l parts.
DPar(n,k,l) returns a list of all partitions of n with distinct parts,
restricted to those with at most l parts and all parts <= k.
In all cases, the list of partitions is arranged in reverse lex order.
EXAMPLES:
DPar(6); yields [[6], [5,1], [4,2], [3,2,1]]
DPar(8,2); yields [[8], [7,1], [6,2], [5,3]]
DPar(10,7,3); yields [[7,3], [7,2,1], [6,4], [6,3,1], [5,4,1], [5,3,2]]
SEE ALSO: OPar, SF[Par]
FUNCTION: OPar - list partitions with odd parts
CALLING SEQUENCE: OPar(n); OPar(n,l); OPar(n,k,l);
PARAMETERS: n = a nonnegative integer
l = (optional) maximum number of parts allowed
k = (optional) maximum part size allowed
SYNOPSIS:
A partition of n is defined to be a non-increasing list of positive
integers with sum n. The members of the list are called parts.
OPar(n) returns a list consisting of all partitions of n in which
all of the parts are odd.
OPar(n,l) returns a list of all partitions of n with at most l parts,
all of which are odd.
OPar(n,k,l) returns a list of all partitions of n with at most l parts,
all of which are odd and <= k.
In all cases, the list of partitions is arranged in reverse lex order.
EXAMPLES:
OPar(6); yields [[5,1], [3,3], [3,1,1,1], [1,1,1,1,1,1]]
OPar(8,4); yields [[7,1], [5,3], [5,1,1,1], [3,3,1,1]]]
OPar(11,5,3); yields [[5,5,1], [5,3,3]]
SEE ALSO: DPar, SF[Par]
FUNCTION: pfaff - pfaffian for a (possibly skew) Schur Q-function
CALLING SEQUENCE: pfaff(lambda);
pfaff(lambda,mu);
PARAMETERS: lambda,mu = partitions with distinct parts
SYNOPSIS:
If lambda is a partition with l parts, all distinct, then the Schur
Q-function Q[lambda] is expressible as the pfaffian of the skew
symmetric matrix whose [i,j] entry is the two-rowed Q-function
Q[lambda[i],lambda[j]]. If l is odd, then one should add an extra
row and column by setting lambda[l+1]=0.
More generally, if mu is a second partition with m parts, all distinct,
then the Schur Q-function associated to the "skew shape" lambda/mu is
the pfaffian of the skew symmetric matrix
[ A B ]
[ C 0 ]
where A is the above matrix, C=-B^T, and B is the l x m matrix whose
[i,j] entry is the one-rowed Q-function Q[lambda[i]-mu[m+1-j]]. If l+m
is odd, one adds an extra row and column by setting lambda[l+1]=0.
pfaff(lambda) evaluates the pfaffian associated to lambda, leaving the
result as a polynomial in one- and two-rowed Q-functions.
pfaff(lambda,mu) does the same for the skew shape lambda/mu.
EXAMPLES:
pfaff([8,4,1]); yields Q[8]*Q[4,1]-Q[4]*Q[8,1]+Q[1]*Q[8,4]
pfaff([8,4,3],[3]); yields Q[5]*Q[4,3]-Q[1]*Q[8,3]+Q[8,4]
SEE ALSO: DPar, toddq, toq, toP, toQ
FUNCTION: qf2char - convert symmetric functions to spin characters
CALLING SEQUENCE: qf2char(f);
qf2char(f,b);
PARAMETERS: f = a symmetric function in the Omega algebra
b = (optional) a basis name
SYNOPSIS:
The inverse spin characteristic is an isometric linear map from
homogeneous symmetric functions of degree n in the Omega algebra to
signed class functions on a double cover of the symmetric group of
degree n. A class function g is "signed" if g(-w)=-g(w) for all group
elements w, where -1 denotes the central element of the extension.
The image of the Omega algebra under this map is the space of signed
class functions that vanish on all elements whose symmetric group
images have one or more cycles of even length. The image of the
Schur Q-function Q[lambda] is closely related to the irreducible spin
character indexed by lambda (see the help for 'spin').
If f is any symmetric function in the Omega algebra, qf2char(f)
returns the corresponding signed class function.
Signed class functions are expressed as linear combinations of terms of
the form cl[mu], where mu ranges over partitions. Here, cl[mu] denotes
a signed class function that takes the value +/- 1 at elements whose
symmetric group image has cycle-type mu, and 0 otherwise. The signs are
determined by the convention that the coefficients for the basic spin
character are positive. In particular, the coefficient of cl[1,....,1]
is the value at the identity element.
If a second argument b is one of the special bases of QF; namely, p, q,
Q (or Q[]), or P (or P[]), then f is assumed to be expressed purely in
terms of this basis.
EXAMPLES:
qf2char(q4*p3*p1); yields cl[3,1,1,1,1,1]+12*cl[3,3,1,1]
qf2char(Q[3,1],Q); yields 8*cl[1,1,1,1] - 2*cl[3,1]
SEE ALSO: OPar, char2qf, spin, zeeQ, SF[char2sf], SF[sf2char]
FUNCTION: spin - spin characters of the symmetric group
CALLING SEQUENCE: spin(lambda);
PARAMETERS: lambda = a partition with distinct parts
SYNOPSIS:
The irreducible spin characters of the symmetric group of degree n are
indexed by partitions lambda of n with distinct parts. If n-l is odd
(where l is the length of lambda), then there are two distinct
characters indexed by lambda, distinguished by the fact that their
values at group elements whose symmetric group images have cycle type
lambda are negatives of each other. On all other conjugacy classes, the
two characters agree.
If lambda is a partition of n with distinct parts, spin(lambda) returns
(one of) the corresponding spin character(s). The result is expressed
as a signed class function (see the help for 'char2qf').
The spin characteristic of spin(lambda) is 2^(-k/2) * Q[lambda],
where k = l + modp(n-l,2) and l denotes the length of lambda.
EXAMPLES:
spin([3,2,1]); yields
4*cl[1,1,1,1,1,1]-cl[3,1,1,1]-2*cl[3,3]+cl[5,1]+3^(1/2)*cl[3,2,1]
SEE ALSO: DPar, char2qf, qf2char, zeeQ, SF[char2sf], SF[sf2char]
FUNCTION: super - superfication of symmetric functions
CALLING SEQUENCE: super(f);
PARAMETERS: f = a symmetric function
SYNOPSIS:
The superfication map is a homomorphism from the ring of symmetric
functions onto the subalgebra Omega. It can be determined by its
action on various sets of generators. For example, e.n and h.n both
correspond to q.n under this map, and p.n maps to (1-(-1)^n)*p.n.
If f is a symmetric function, expressed in terms of bases known to the
'SF' package, then super(f) returns the result of applying this map.
The results are expressed in terms of the bases q.i and p.j.
If the expression for f involves any of the special bases of QF, such
as q, Q (or Q[]), or P (or P[]), then these terms are ignored. This may
be a bug, but it is intentional.
EXAMPLES:
f:=super(s[3,3,1]); yields q3^2*q1-q4*q3-q2*q4*q1+q5*q2
toQ(f); yields Q[5,2]+Q[4,3]+Q[4,2,1]
SEE ALSO: toddp, toddq, toP, toQ
FUNCTION: toddp - convert to the basis of odd power-sums
CALLING SEQUENCE: toddp(f); toddp(f,b);
PARAMETERS: f = a symmetric function in the Omega algebra
b = (optional) a basis name
SYNOPSIS:
If f is any symmetric function in the Omega algebra, toddp(f) will
convert f into a polynomial in the odd power-sum symmetric functions
p1,p3,p5,..., with the result collected in 'distributed' form with
respect to p1,p3,p5,..., and 'normal' applied to the coefficients.
If a second argument b is one of the special bases of QF; namely,
q, Q (or Q[]), or P (or P[]), then f is assumed to be expressed
purely in terms of this basis.
If f is an expression involving symmetric functions known to SF but
not to QF, use SF[top].
EXAMPLES:
toddp(Q[4,2,1],Q); yields 8/45*p1^7-8/9*p3*p1^4+8/5*p5*p1^2-8/9*p3^2*p1
toddp(q5+2*P[4,1]); yields 4/3*p1^2*p3+2/3*p1^5
SEE ALSO: toq, toddq, toP, toQ, SF[top]
FUNCTION: toddq - convert to the odd q-basis
CALLING SEQUENCE: toddq(f); toddq(f,b);
PARAMETERS: f = a symmetric function in the Omega algebra
b = (optional) a basis name
SYNOPSIS:
If f is any symmetric function in the Omega algebra, toddq(f) will
convert f into a polynomial in the generators q1,q3,q5,..., with the
result collected in 'distributed' form with respect to q1,q3,q5,...,
and 'normal' applied to the coefficients. The generator q.i is the
same as the one-rowed Q-function Q[i].
If a second argument b is one of the special bases of QF; namely,
p, Q (or Q[]), or P (or P[]), then f is assumed to be expressed
purely in terms of this basis.
Note that 'toq' is faster, but produces a non-canonical answer.
EXAMPLES:
toddq(8*q4); yields 8*q3*q1 - q1^4
toddq(12*q6-8*p1*p5); yields 2*q1*q5 - q1^3*q3 + 6*q3^2
toddq(2^7*P[4,2,1],P); yields q1^7-4*q1^4*q3+16*q1^2*q5-16*q1*q3^2
SEE ALSO: toq, toddp, toP, toQ
FUNCTION: toP - convert to Schur P-functions
CALLING SEQUENCE: toP(f,<options>);
PARAMETERS: f = a symmetric function
<options> = zero or more of the following (in any order):
(1) a basis name
(2) a list of partitions with distinct parts
(3) an equation of the form 'nrows=<integer>'
SYNOPSIS:
If f is any symmetric function in the Omega algebra, toP(f) will convert
f into a linear combination of Schur P-functions P[lambda], with 'normal'
applied to the coefficients.
A number of optional arguments can be passed to the procedure that may
increase the efficiency, or (in some cases) modify the behavior of 'toP'.
In particular, if one of the arguments passed to 'toP' is ...
(1) One of the special bases of QF; namely, p, q, or Q (or Q[]), then
the procedure assumes that f is expressed purely in terms of this basis.
(2) A list of partitions with distinct parts, then the procedure will
assume (without verification) that if the coefficient of P[lambda] is
nonzero in f, then lambda appears in this list. If f is "sparse" with
respect to Schur P-functions, this can significantly speed up the
computation. The procedure 'DPar' can be useful for producing lists of
partitions for this purpose.
(3) An equation of the form 'nrows=n', where n is a positive integer,
then the calculation will be performed in a quotient ring of Omega;
namely, the quotient in which there are only n variables. This is
equivalent to setting P[mu]=0 whenever mu has more than n parts.
EXAMPLES:
toP(Q[6,4,2,1],Q); yields 16*P[6,4,2,1]
toP(p1^8, nrows=2); yields P[8]+6*P[7,1]+14*P[6,2]+14*P[5,3]
SEE ALSO: DPar, pfaff, top, toq, toddp, toddq, toP
FUNCTION: toq - convert to a polynomial in the q-functions
CALLING SEQUENCE: toq(f); toq(f,b);
PARAMETERS: f = a symmetric function in the Omega algebra
b = (optional) a basis name
SYNOPSIS:
If f is any symmetric function in the Omega algebra, toq(f) will
convert f into a polynomial expression in the symmetric functions
q1,q2,q3,..., with the result collected in 'distributed' form with
respect to q1,q2,q3,..., and 'normal' applied to the coefficients.
The generator q.i is the same as the one-rowed Q-function Q[i].
Note that the generators q.i are not algebraically independent, so
the expression is not unique. For a canonical expression, use 'toddq'
to express the result in terms of q1,q3,q5,...
If a second argument b is one of the special bases of QF; namely,
p, Q (or Q[]), or P (or P[]), then f is assumed to be expressed
purely in terms of this basis.
EXAMPLES:
toq(8*p5*p1+5*Q[4,2]); yields -6*q4*q1^2+2*q2*q3*q1+10*q6+5*q4*q2
toq(Q[5,2],Q); yields q5*q2-2*q6*q1+2*q7
SEE ALSO: toddp, toddq, toP, toQ
FUNCTION: toQ - convert to Schur Q-functions
CALLING SEQUENCE: toQ(f,<options>);
PARAMETERS: f = a symmetric function
<options> = zero or more of the following (in any order):
(1) a basis name
(2) a list of partitions with distinct parts
(3) an equation of the form 'nrows=<integer>'
SYNOPSIS:
If f is any symmetric function in the Omega algebra, toQ(f) will convert
f into a linear combination of Schur Q-functions Q[lambda], with 'normal'
applied to the coefficients.
A number of optional arguments can be passed to the procedure that may
increase the efficiency, or (in some cases) modify the behavior of 'toQ'.
In particular, if one of the arguments passed to 'toQ' is ...
(1) One of the special bases of QF; namely, p, q, or P (or P[]), then
the procedure assumes that f is expressed purely in terms of this basis.
(2) A list of partitions with distinct parts, then the procedure will
assume (without verification) that if the coefficient of Q[lambda] is
nonzero in f, then lambda appears in this list. If f is "sparse" with
respect to Schur Q-functions, this can significantly speed up the
computation. The procedure 'DPar' can be useful for producing lists of
partitions for this purpose.
(3) An equation of the form 'nrows=n', where n is a positive integer,
then the calculation will be performed in a quotient ring of Omega;
namely, the quotient in which there are only n variables. This is
equivalent to setting Q[mu]=0 whenever mu has more than n parts.
EXAMPLES:
toQ(2*p5*Q[3,2]); yields 2*Q[8,2]-2*Q[7,3]+Q[5,3,2]-Q[4,3,2,1]
toQ(Q[2,1]*Q[3,2], Q, DPar(8,5,4));
yields 4*Q[5,3]+2*Q[5,2,1]+2*Q[4,3,1]
##Compute the expansion of a skew Schur Q-function in 3 variables:
f:=pfaff([6,4,3,1],[2,1]);
toQ(f, nrows=3); yields Q[6,4,1]+Q[6,3,2]+2*Q[5,4,2]
SEE ALSO: DPar, pfaff, top, toq, toddp, toddq, toP
FUNCTION: zeeQ - squared norm of (odd) power sums
CALLING SEQUENCE: zeeQ(lambda);
PARAMETERS: lambda = a partition
SYNOPSIS:
If lambda is a partition with m[i] parts equal to i, then zeeQ(lambda)
is defined to be 0 if any any of m[2], m[4], m[6], ... are positive,
and otherwise equal to (1/2)^m[1] * m[1]! * (3/2)^m[3] * m[3]! * ...
This is the squared norm of the power-sum symmetric function indexed
by lambda, relative to the bilinear form on Omega in which the Schur
P-functions and Q-functions are dual bases.
The procedure zeeQ is designed to be used in conjunction with
SF[scalar] for computing scalar products in the algebra Omega (see the
help for 'SF[scalar]'). However, it is important to note that the power
sums are (currently) the only symmetric functions understood by both SF
and QF, so this requires arguments for SF[scalar] to be expressed in
terms of power sums.
EXAMPLES:
zeeQ([3,3,2]); yields 0
zeeQ([3,3,1]); yields 9/4
scalar(toddp(P[4,2]),toddp(Q[4,2]),zeeQ);
yields 1
SEE ALSO: OPar, SF[Par], SF[scalar]