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:


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]

© 2005 John R. Stembridge