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
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
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
Symmetric functions I: Basic definitions A symmetric polynomial in X = (x 1 , . . . , x n ) is a polynomial invariant under permutation of X. If X is infinite we says symmetric function. Several linear bases indexed by partitions. • The powersums ( p λ ) λ n � x k p k ( X ) = et p µ ( X ) = p µ 1 ( X ) . . . p µ q ( X ) . i i =1 • The monomials functions ( m λ ) λ x v = x v 1 � x v 1 . . . x v n m λ = avec n . v ∈ S .λ 4
Implementation I: classical bases domain powersum(R) domain monomial(R) inherits Dom::FreeModule(R, partitions) inherits ... ... category Cat::ModuleWithBasis(R) category ... ... ... end domain 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
Symmetric functions I: Scalar product The space of symmetric functions Λ can be endowed with a scalar product n � i m i ( λ ) m i ( λ )! = δ µ,λ z λ . � p µ , p λ � = δ µ,λ i =1 Schur functions are obtained by orthogonalization of monomials functions with respect to � , � . Example: 2 x 2 + x 1 2 x 3 + x 1 x 2 2 + 2 x 1 x 2 x 3 + S 21 (x 1 , x 2 , x 3 ) = x 1 2 + x 2 2 x 3 + x 2 x 3 2 . x 1 x 3 6
Implementation III: Overloaded operators Implementation of the previous scalar product as an overloaded 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) • use of this new operator >> S::scalar(S::m([2,1]), S::m([1,1,1])) ; -2 7
Symmetric functions II: Hall-Littlewood functions Let consider a t -deformation of the usual scalar product 1 � � p µ , p λ � t = δ µ,λ z λ 1 − t λ i . i ≥ 1 The Hall-Littlewood functions P λ ( X ; t ) are obtained by orthogonalization of the monomials functions. P 21 ( X ; t ) = ( − t 2 − t + 2) m 111 + m 21 = − ( t 2 + t ) s 111 + s 21 . The Hall-Littlewood functions Q λ ( X ; t ) are defined as the dual functions of the P λ ( X ; t ) with respect to � � t . , Q 21 ( X ; t ) = − ( t 4 − t 3 − t 2 + t ) s 111 + ( t 2 − 2 t + 1) s 21 . 8
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 µ Q µ ⊢| λ | µ ⊢| λ | where - K µ,λ ( t ) are the Kostka polynomials, - H µ,λ ( t ) are the unrestricted Kostka polynomials. ′ 21 ( X ; t ) = ts 3 + s 21 Q ′ 21 ( X ; t ) = ( t + 2) m 111 + tm 3 + ( t + 1) m 21 . Q 9
A combinatorial interpretation of K µ,λ ( t ) Using ribbon rigged configurations (A. Schilling 2001) 0 0 1 2 2 2 1 1 1 0 0 0 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. � t cc ( ν,J ) H µ,λ ( t ) = ( ν,J ) ∈ RC ( λ,µ ) 10
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
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 ) H ( k ) � λ ( X ; t ) = µ,λ ( t ) m µ where t cc ( ν,J ) . H ( k ) � µ,λ ( t ) = ( ν,J ) ∈ URC ( λ,µ ) 1 0 1 −1 1 1 0 −1 2 1 −1 0 −2 0 0 0 0 12
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
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 of 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
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 overloaded template for each directions – C++ data types − → MuPAD data types: CtoM – MuPAD data types − → C++ data types: MtoC . 15
Steps for the integration Original C++ file Module C++ file #include ”... .h” class path class { ... } #include ”MAPITL.h” void path class::bj() { ... } MFUNC(funct, MCnop) { • n = MtoC(MFarg(1)) void path class::cc() { ... } • call C++ functions MuPAD file • return operands } module(‘‘test.mdm’’) opers:=test::funct(args) Compilation build the mupad object corresponding to the operandes opers Dynamic module test.mdm 16
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, others definitions from quantum algebra, ...) • Make conversion from C++ code easier 17
Recommend
More recommend