% $Date: 2003/09/15 16:37:46 $ $Author: nthiery $ $Revision: 1.1.1.1 $

\begin{Mhelppage}{SfDualBasis}{V. Prosper}

  \begin{MInfo}
    \eng{addition of a new basis, dual to an existing one}
  \end{MInfo}
  

  \begin{MCalls}
    \Mcall{b\Mopt{,old\Mpar{scal}}}
  \end{MCalls}

  \begin{MParameters}
    \param{b}
    \eng{any name}
    \param{old}
    \eng{any name of a previously defined basis}
    \param{scal}
    \eng{any procedures accepting a partition as input}
  \end{MParameters}

  \begin{MIntro}
    \eng{The  function
\Mmath{\Mex{part} -> \Mex{scal(part)}}{\mathtt{part}\to\mathtt{scal(part)}}
chosen  by the user defines a  scalar product \Mmath{<,>}{\langle~,~\rangle}
on symmetric functions for which power sums are orthogonal, and such that
\Mdmath{<\Mex{p[part], p[part]}> = \Mex{scal(part)}.}%
      {\langle\mathtt{p[part], p[part]}\rangle = \mathtt{scal(part)}.}
The  usual scalar product \Mup{SfScalar} corresponds to
\Mex{scal(part) = \Mup{SfZee}(part)}.

Given any existing linear basis \Mex{old} of the space of symmetric
functions, there exists a unique dual basis \Mex{b} relative to
\Mmath{<,>}{\langle~,~\rangle}, i.e. such that
\Mmath{<\Mex{b[part],old[part2]}>}{\langle\mathtt{b[part],old[part2]}\rangle}
= 1 for \Mmath{\Mex{part=part2}}{\mathtt{part=part2}}, and 0
otherwise. For example, the monomial symmetric functions \Mex{m[part]}
are dual (with respect to the standard scalar product) to the
\Mex{h}-basis (products of complete symmetric functions).

The new basis \Mex{b} is added to the list of bases and will be recognized  in
any expression; a new procedure \Mex{Tob} is available, with the  same  syntax
as  for  instance  \Mup{Tom},  \Mup{Tos},  and  is  devoted to express any
symmetric function in the \Mex{b}-basis.
 
It has also the effect to define a \Mex{Isb} function that  tests  whether  an
expression is an element of the \Mex{b}-basis.

The result is the current set of known bases.

An error is produced if \Mex{b} is the name of a  previously  defined  basis.
}
  \end{MIntro}
 
\begin{MExample}{ex1}
\begin{Mexin}
# Hall-Littlewood polynomials #
NewZee := proc(part) begin SfZee(part, 0, t) end_proc:
\end{Mexin}
\begin{Mexout}
                               
\end{Mexout}
% \begin{Mexout}[hide]
 % proc(part) name NewZee; begin SfZee( part, 0, t ) end_proc
% \end{Mexout}
\begin{Mexin}
muEC::SYMF::SfDualBasis( MS, 's', NewZee ); # Basis of modified Schur functions #
\end{Mexin}
\begin{Mexout}
                      [p, s, e, h, m, MS]
\end{Mexout}
\begin{Mexin} 
Tos(MS[3], Collect);
\end{Mexin} 
\begin{Mexout}
                         2                3    2
  (1 - t) s[3] + (- t + t ) s[2, 1] + (- t  + t ) s[1, 1, 1]
\end{Mexout}
% \begin{Mexout}[hide]
                           % null()
% \end{Mexout}
\begin{Mexin} 
Tos( SfTheta(s[3], t, 0), Collect );
\end{Mexin} 
\begin{Mexout}
                         2                3    2
  (1 - t) s[3] + (- t + t ) s[2, 1] + (- t  + t ) s[1, 1, 1]
\end{Mexout}
% \begin{Mexout}[hide]
                           % null()
% \end{Mexout}
\begin{Mexin} 
ToMS( MS[2]*s[2], Collect );
\end{Mexin} 
\begin{Mexout}
                MS[4]          (2 + t) MS[3, 1]     (t + 3) MS[2, 2]
         ------------------ + ------------------ + ------------------
                  2                    2                    2
         (- 1 + t)  (t + 1)   (- 1 + t)  (t + 1)   (- 1 + t)  (t + 1)

                (4 + 3 t) MS[2, 1, 1]     MS[1, 1, 1, 1]
              + --------------------- + 6 --------------
                           2                         2
                  (- 1 + t)  (t + 1)        (- 1 + t)
\end{Mexout}
% \begin{Mexout}[hide]
                           % null()
% \end{Mexout}
\begin{Mexin} 
SfMat( 4, MS, m );
\end{Mexin} 
\begin{Mexout}
                       [ 1  1  1  1  1 ]
                       [               ]
                       [ 0  1  1  2  3 ]
                       [               ]
                       [ 0  0  1  1  2 ]
                       [               ]
                       [ 0  0  0  1  3 ]
                       [               ]
                       [ 0  0  0  0  1 ]
\end{Mexout}
% \begin{Mexout}[hide]
                           % null()
% \end{Mexout}
\end{MExample}

\MRelatedFunctions{SfAddBasis,SfMat,SfScalar,SfZee}
\end{Mhelppage}
