SLIDE 1
2nd International Congress On Mathematical Softwares Castro Urdiales - 2 september 2006
MAKING RESEARCH ON SYMMETRIC FUNCTIONS USING MUPAD-COMBINAT
Francois Descouens
Laboratoire d’Informatique de l’Institut Gaspard Monge Universit´ e de Marne-la-Vall´ ee
1
SLIDE 2 Computer science for algebraic combinatorics
- Interpretation of mathematical identities using
combinatorial objects (groups representation theory, Hopf algebras, symmetric functions, ...) − → efficient software for huge computations.
- Throught an example of collaborative situation of
research in quantum algebra, we present in MuPAD-Combinat, the feactures – implementation of symmetric functions, – implementation of combinatorial objects, – integration of C/C++ programs.
2
SLIDE 3 Generality on MuPAD-Combinat
- A library for the computer algebra system MuPAD.
- Research in algebraic combinatorics.
- Under licence LGPL and hosted on Sourceforge
servers (www.mupad-combinat.sf.net).
- Borned in 2001 under the leadership of
– F. Hivert (florent.hivert@univ-rouen.fr), – N. Thi´ ery (nthiery@users.sf.net).
3
SLIDE 4 Symmetric functions I: Basic definitions A symmetric polynomial in X = (x1, . . . , xn) is a polynomial invariant under permutation of X. If X is infinite we says symmetric function. Several linear bases indexed by partitions.
pk(X) =
n
xk
i
et pµ(X) = pµ1(X) . . . pµq(X) .
- The monomials functions (mλ)λ
mλ =
xv avec xv = xv1
1 . . . xvn n . 4
SLIDE 5
Implementation I: classical bases
domain powersum(R) inherits Dom::FreeModule(R, partitions) category Cat::ModuleWithBasis(R)
...
... end domain domain monomial(R) inherits ... category ... ... end domain domain Sym(R=Dom::Complex) inherits Dom::BaseDomain category Cat::ModuleWithSeveralBases(R) p := powersum(dom::coeffRing) m := monomial(dom::coeffRing) basisChangesBasis := table( (dom::p, dom::m) = (part − → dom::p::algebraMorphism(i − → dom::m([i]))) (dom::m, dom::p) = dom::invertBasisChangeBasis(dom::p, dom::m)) end domain
5
SLIDE 6 Symmetric functions I: Scalar product The space of symmetric functions Λ can be endowed with a scalar product pµ, pλ = δµ,λ
n
imi(λ)mi(λ)! = δµ,λzλ . Schur functions are obtained by orthogonalization of monomials functions with respect to , . Example: S21(x1, x2, x3) = x1
2 x2 + x1 2 x3 + x1 x2 2 + 2 x1 x2 x3 +
x1 x3
2 + x2 2 x3 + x2 x3 2 . 6
SLIDE 7 Implementation III: Overloaded operators Implementation of the previous scalar product as an
- verloaded operator
- declaration of the new operator
scalar := operators::overloaded((x,y) − → error(...));
- implementation of a nice or simpler expression
declareSignature (dom::scalar, [dom::p, dom::p], proc(f,g) : dom::coeffRing local u; begin simplify(_plus( combinat::partitions::centralizerSize(op(u,2),)* coeff(f,op(u,2))*op(u,1) $ u in poly2list(g)); end_proc)
>> S::scalar(S::m([2,1]), S::m([1,1,1])) ;
7
SLIDE 8 Symmetric functions II: Hall-Littlewood functions Let consider a t-deformation of the usual scalar product pµ, pλt = δµ,λzλ
1 1 − tλi . The Hall-Littlewood functions Pλ(X; t) are obtained by
- rthogonalization of the monomials functions.
P21(X; t) = (−t2 − t + 2)m111 + m21 = −(t2 + t)s111 + s21. The Hall-Littlewood functions Qλ(X; t) are defined as the dual functions of the Pλ(X; t) with respect to , t. Q21(X; t) = −(t4 − t3 − t2 + t)s111 + (t2 − 2t + 1)s21 .
8
SLIDE 9 Symmetric functions II: Hall-Littlewood functions Hall-Littlewood functions Q
′
λ(X; t) are defined as the
dual functions of the Pλ(X; t) with respect to ,
′
λ(X; t) =
Kµ,λ(t)sµ =
Hµ,λ(t)mµ where
- Kµ,λ(t) are the Kostka polynomials,
- Hµ,λ(t) are the unrestricted Kostka polynomials.
Q
′
21(X; t) = ts3 + s21
Q
′
21(X; t) = (t + 2)m111 + tm3 + (t + 1)m21 . 9
SLIDE 10 A combinatorial interpretation of Kµ,λ(t) Using ribbon rigged configurations (A. Schilling 2001)
1 1 2 1 2 1 2 1 1
◮ Increasing sequence of partitions with
- with outside numbers called quantum numbers
- and the frontier filled with vacancy numbers
◮ Cocharge: (1 × 1 + 0 × 1 + 0 × 2) + (1 + 1 + 1) = 4. Hµ,λ(t) =
tcc(ν,J)
10
SLIDE 11
Implementation of combinatorial objects
domain combinat::skewRiggings inherits Dom::BaseDomain; category Cat::CombinatorialClassWith2DBoxedRepresentation; new := ... ... list := ... count := ... ... end_domain:
An object is built from its operands and it is printing on the screen
>> a:=combinat::skewRiggings([[], [[[0], [0, 1]], [[""], [0, 1]]]]); +---+ | 0 | 0 1 +---+ | | 0 1 +---+ >> expr(a); [[], [[[0], [0, 1]], [[""], [0, 1]]]]
11
SLIDE 12 Filtration of Kostka polynomials For a given partition λ, we define combinatorialy an increasing sequence of functions (H(k)
λ )k∈N using
unrestricted rigged configurations (L. Deka and A. Schilling 2004) H(k)
λ (X; t) =
µ,λ(t)mµ
where H(k)
µ,λ(t) =
tcc(ν,J) .
−1 1 1 1 −1 1 2 −2 −1 1
12
SLIDE 13 Implementation of these new bases To add new basis on the fly
- we use a generic basis S::newBasis
S::declareBasis(S::newBasis(‘‘H2’’))
- and we declare the change of basis we want
S::declareBasisChangeBasis(S::H2, S::m, part -> ...)
Pb: We need a function computing the generating polynomial H(k)
µ,λ(t).
− → We will use a existing implementation in C++
13
SLIDE 14 Find a bijection for the top level case Open problem in the case of Hall-Littlewood functions find a bijection between these two kind of rigged configurations which preserve the statistics.
- Existing very technical and difficult implementation
- f the unrestricted rigged configurations written in
C++.
- Existing implementation in pure MuPAD of
unrestricted rigged configurations. − → For manipulating both of these structures, we interface the C++ code with MuPAD in a transparent way for the user.
14
SLIDE 15 Integration of external C++ programs We use MAPITL library (MuPAD Application Programming Interface Template Library)
- Wrappers to use MuPAD lists as standard containers.
- Easy C++ ←
→ MuPAD conversions with one single
- verloaded template for each directions
– C++ data types − → MuPAD data types: CtoM – MuPAD data types − → C++ data types: MtoC.
15
SLIDE 16 Steps for the integration
MuPAD file module(‘‘test.mdm’’)
build the mupad object corresponding to the
Original C++ file class path class { ...} void path class::bj(){... } void path class::cc(){... } Module C++ file #include ”... .h” #include ”MAPITL.h” MFUNC(funct, MCnop){
- n = MtoC(MFarg(1))
- call C++ functions
- return operands}
Dynamic module test.mdm
Compilation
16
SLIDE 17 Future works
- Improvement of symmetric functions
– fastest conversion in each case – design and implementation of manipulation of alphabets – implementation of others filtrations of Kostka polynomials (quick k-Schur functions for example,
- thers definitions from quantum algebra, ...)
- Make conversion from C++ code easier
17