*-Combinat in a nutshell Demonstration History and development model Future directions *-Combinat Sharing algebraic combinatorics since 2000 Nicolas M. Thi´ ery Laboratoire de Math´ ematiques d’Orsay, Universit´ e Paris Sud Sage Days 20, MathInfo, 22nd of February 2010 http://mupad-combinat.sf.net/ http://combinat.sagemath.org/ α ∨ 0 α ∨ 1 α ∨ 2
73
Embed
*-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
*-Combinat in a nutshell Demonstration History and development model Future directions
∗-CombinatSharing algebraic combinatorics since 2000
Nicolas M. Thiery
Laboratoire de Mathematiques d’Orsay, Universite Paris Sud
Sage Days 20, MathInfo, 22nd of February 2010http://mupad-combinat.sf.net/http://combinat.sagemath.org/
*-Combinat in a nutshell Demonstration History and development model Future directions
*-Combinat
An open-source frameworkFor computer explorationIn algebraic combinatorics
*-Combinat in a nutshell
Demonstration
History and development model
Future directions
*-Combinat in a nutshell Demonstration History and development model Future directions
*-Combinat in a nutshell
Mission statement: To improve Sage as an extensible toolboxfor computer exploration in combinatorics, and foster codesharing among researchers in this area
*-Combinat in a nutshell Demonstration History and development model Future directions
*-Combinat in a nutshell
• 50+ research articles
• Sponsors: ANR, PEPS, NSF, Google Summer of Code
• Sage: 300 tickets / 100k lines integrated in Sage
• MuPAD: 115k lines of MuPAD, 15k lines of C++, 32k lines oftests, 600 pages of doc
• A community:
Nicolas Borie, Daniel Bump, Jason Bandlow, AdrienBoussicault, Vincent Delecroix, Paul-Olivier Dehaye,Tom Denton, Dan Drake, Teresa Gomez Diaz, Mike Hansen, RalfHemmecke, Florent Hivert, Brant Jones, Sebastien Labbe, YannLaigle-Chapuy, Andrew Mathas, Gregg Musiker, Steven Pon,Franco Saliola, Anne Schilling, Mark Shimozono, Nicolas M.Thiery, Justin Walker, Qiang Wang, Mike Zabrocki, ... And you ?
*-Combinat in a nutshell Demonstration History and development model Future directions
It all started there
*-Combinat in a nutshell Demonstration History and development model Future directions
*-Combinat: 1
+1 = 1.1
Nicolas
20k
Florent
20k
2 devs20k
• 95% of development effort are generic
• Opportunity for sharing and mutualisation
*-Combinat in a nutshell Demonstration History and development model Future directions
*-Combinat: 1+1 =
1.1
Nicolas
20k
Florent
20k
2 devs20k
• 95% of development effort are generic
• Opportunity for sharing and mutualisation
*-Combinat in a nutshell Demonstration History and development model Future directions
*-Combinat: 1+1 =
1.1
Nicolas
20k
Florent
20k
2 devs20k
• 95% of development effort are generic
• Opportunity for sharing and mutualisation
*-Combinat in a nutshell Demonstration History and development model Future directions
*-Combinat: 1+1 = 1.1
Nicolas
1k
Florent
1k
2 devs20k
• 95% of development effort are generic
• Opportunity for sharing and mutualisation
*-Combinat in a nutshell Demonstration History and development model Future directions
*-Combinat: 1+1 = 1.1
Nicolas
1k
Florent
1k
2 devs20k
• 95% of development effort are generic
• Opportunity for sharing and mutualisation
*-Combinat in a nutshell Demonstration History and development model Future directions
*-Combinat: 1+1 = 1.1
Nicolas
1k
Florent
1k
2 devs20k
• 95% of development effort are generic
• Opportunity for sharing and mutualisation
*-Combinat in a nutshell Demonstration History and development model Future directions
Trivial code that solves trivial problems is precious
Example
Computing the length of a permutation
• 5 minutes to write it down
• 15 minutes debugging later (forgotten base case(s))
• What happens if you share:• force yourself to cleanup the code, organize it, write tests, and
documentation• others will review it (better usability)• others will reuse it (includes yourself)• others will optimize it (n log n algorithm)• others will generalize it (any Coxeter group)
*-Combinat in a nutshell Demonstration History and development model Future directions
Trivial code that solves trivial problems is precious
Example
Computing the length of a permutation
• 5 minutes to write it down
• 15 minutes debugging later (forgotten base case(s))
• What happens if you share:• force yourself to cleanup the code, organize it, write tests, and
documentation• others will review it (better usability)• others will reuse it (includes yourself)• others will optimize it (n log n algorithm)• others will generalize it (any Coxeter group)
*-Combinat in a nutshell Demonstration History and development model Future directions
Trivial code that solves trivial problems is precious
Example
Computing the length of a permutation
• 5 minutes to write it down
• 15 minutes debugging later (forgotten base case(s))
• What happens if you share:• force yourself to cleanup the code, organize it, write tests, and
documentation• others will review it (better usability)• others will reuse it (includes yourself)• others will optimize it (n log n algorithm)• others will generalize it (any Coxeter group)
*-Combinat in a nutshell Demonstration History and development model Future directions
Trivial code that solves trivial problems is precious
Example
Computing the length of a permutation
• 5 minutes to write it down
• 15 minutes debugging later (forgotten base case(s))
• What happens if you share:• force yourself to cleanup the code, organize it, write tests, and
documentation• others will review it (better usability)• others will reuse it (includes yourself)• others will optimize it (n log n algorithm)• others will generalize it (any Coxeter group)
*-Combinat in a nutshell Demonstration History and development model Future directions
Trivial code that solves trivial problems is precious
Example
Computing the length of a permutation
• 5 minutes to write it down
• 15 minutes debugging later (forgotten base case(s))
• What happens if you share:• force yourself to cleanup the code, organize it, write tests, and
documentation• others will review it (better usability)• others will reuse it (includes yourself)• others will optimize it (n log n algorithm)• others will generalize it (any Coxeter group)
*-Combinat in a nutshell Demonstration History and development model Future directions
Trivial code that solves trivial problems is precious
Example
Computing the length of a permutation
• 5 minutes to write it down
• 15 minutes debugging later (forgotten base case(s))
• What happens if you share:• force yourself to cleanup the code, organize it, write tests, and
documentation• others will review it (better usability)• others will reuse it (includes yourself)• others will optimize it (n log n algorithm)• others will generalize it (any Coxeter group)
*-Combinat in a nutshell Demonstration History and development model Future directions
Trivial code that solves trivial problems is precious
Example
Computing the length of a permutation
• 5 minutes to write it down
• 15 minutes debugging later (forgotten base case(s))
• What happens if you share:• force yourself to cleanup the code, organize it, write tests, and
documentation• others will review it (better usability)• others will reuse it (includes yourself)• others will optimize it (n log n algorithm)• others will generalize it (any Coxeter group)
*-Combinat in a nutshell Demonstration History and development model Future directions
Trivial code that solves trivial problems is precious
Example
Computing the length of a permutation
• 5 minutes to write it down
• 15 minutes debugging later (forgotten base case(s))
• What happens if you share:• force yourself to cleanup the code, organize it, write tests, and
documentation• others will review it (better usability)• others will reuse it (includes yourself)• others will optimize it (n log n algorithm)• others will generalize it (any Coxeter group)
*-Combinat in a nutshell Demonstration History and development model Future directions
Trivial code that solves trivial problems is precious
Example
Computing the length of a permutation
• 5 minutes to write it down
• 15 minutes debugging later (forgotten base case(s))
• What happens if you share:• force yourself to cleanup the code, organize it, write tests, and
documentation• others will review it (better usability)• others will reuse it (includes yourself)• others will optimize it (n log n algorithm)• others will generalize it (any Coxeter group)
*-Combinat in a nutshell Demonstration History and development model Future directions
To program or not program?
Example
A real-life research session
A typical computation in algebraic combinatorics involves
• A bit of standard combinatorics
• A bit of standard linear algebra
• A bit of standard group theory
• A bit of standard computer algebra
• A bit of standard ...
• And that thin layer of your own magic powder
There is nothing like a complete combinatorics packageI want to be an architect, and focus on my own magic powderBut can I?
*-Combinat in a nutshell Demonstration History and development model Future directions
To program or not program?
Example
A real-life research session
A typical computation in algebraic combinatorics involves
• A bit of standard combinatorics
• A bit of standard linear algebra
• A bit of standard group theory
• A bit of standard computer algebra
• A bit of standard ...
• And that thin layer of your own magic powder
There is nothing like a complete combinatorics packageI want to be an architect, and focus on my own magic powderBut can I?
*-Combinat in a nutshell Demonstration History and development model Future directions
To program or not program?
Example
A real-life research session
A typical computation in algebraic combinatorics involves
• A bit of standard combinatorics
• A bit of standard linear algebra
• A bit of standard group theory
• A bit of standard computer algebra
• A bit of standard ...
• And that thin layer of your own magic powder
There is nothing like a complete combinatorics packageI want to be an architect, and focus on my own magic powderBut can I?
*-Combinat in a nutshell Demonstration History and development model Future directions
To program or not program?
Example
A real-life research session
A typical computation in algebraic combinatorics involves
• A bit of standard combinatorics
• A bit of standard linear algebra
• A bit of standard group theory
• A bit of standard computer algebra
• A bit of standard ...
• And that thin layer of your own magic powder
There is nothing like a complete combinatorics packageI want to be an architect, and focus on my own magic powderBut can I?
*-Combinat in a nutshell Demonstration History and development model Future directions
To program or not program?
Example
A real-life research session
A typical computation in algebraic combinatorics involves
• A bit of standard combinatorics
• A bit of standard linear algebra
• A bit of standard group theory
• A bit of standard computer algebra
• A bit of standard ...
• And that thin layer of your own magic powder
There is nothing like a complete combinatorics packageI want to be an architect, and focus on my own magic powderBut can I?
*-Combinat in a nutshell Demonstration History and development model Future directions
To program or not program?
Example
A real-life research session
A typical computation in algebraic combinatorics involves
• A bit of standard combinatorics
• A bit of standard linear algebra
• A bit of standard group theory
• A bit of standard computer algebra
• A bit of standard ...
• And that thin layer of your own magic powder
There is nothing like a complete combinatorics packageI have to to be an architect, and focus on my own magic powderBut can I?
*-Combinat in a nutshell Demonstration History and development model Future directions
To program or not program?
Example
A real-life research session
A typical computation in algebraic combinatorics involves
• A bit of standard combinatorics
• A bit of standard linear algebra
• A bit of standard group theory
• A bit of standard computer algebra
• A bit of standard ...
• And that thin layer of your own magic powder
There is nothing like a complete combinatorics packageI to be an architect, and focus on my own magic powderBut can I?
*-Combinat in a nutshell Demonstration History and development model Future directions
*-Combinat in a nutshell Demonstration History and development model Future directions
*-Combinat: development strategyIt’s all about sharing and building a community
• Free softwareWhile remaining pragmatic in collaborations
• International and decentralized developmentWarranty of independence
• Developed by researchers, for researchersWith a view toward broad usage
• Core development done by permanent researchersPhD students shall focus on their own needs
• Each line of code justified by a research projectWith a long term vision (agile development)
• Inspiration from computer science:To organize the code and the communityTo put a bit more math in the machine (categories)Programming concepts and methodologies (objects)Cooperative development tools (trac/mercurial/patches/...)
*-Combinat in a nutshell Demonstration History and development model Future directions
*-Combinat: development strategyIt’s all about sharing and building a community
• Free softwareWhile remaining pragmatic in collaborations
• International and decentralized developmentWarranty of independence
• Developed by researchers, for researchersWith a view toward broad usage
• Core development done by permanent researchersPhD students shall focus on their own needs
• Each line of code justified by a research projectWith a long term vision (agile development)
• Inspiration from computer science:To organize the code and the communityTo put a bit more math in the machine (categories)Programming concepts and methodologies (objects)Cooperative development tools (trac/mercurial/patches/...)
*-Combinat in a nutshell Demonstration History and development model Future directions
*-Combinat: development strategyIt’s all about sharing and building a community
• Free softwareWhile remaining pragmatic in collaborations
• International and decentralized developmentWarranty of independence
• Developed by researchers, for researchersWith a view toward broad usage
• Core development done by permanent researchersPhD students shall focus on their own needs
• Each line of code justified by a research projectWith a long term vision (agile development)
• Inspiration from computer science:To organize the code and the communityTo put a bit more math in the machine (categories)Programming concepts and methodologies (objects)Cooperative development tools (trac/mercurial/patches/...)
*-Combinat in a nutshell Demonstration History and development model Future directions
*-Combinat: development strategyIt’s all about sharing and building a community
• Free softwareWhile remaining pragmatic in collaborations
• International and decentralized developmentWarranty of independence
• Developed by researchers, for researchersWith a view toward broad usage
• Core development done by permanent researchersPhD students shall focus on their own needs
• Each line of code justified by a research projectWith a long term vision (agile development)
• Inspiration from computer science:To organize the code and the communityTo put a bit more math in the machine (categories)Programming concepts and methodologies (objects)Cooperative development tools (trac/mercurial/patches/...)
*-Combinat in a nutshell Demonstration History and development model Future directions
*-Combinat: development strategyIt’s all about sharing and building a community
• Free softwareWhile remaining pragmatic in collaborations
• International and decentralized developmentWarranty of independence
• Developed by researchers, for researchersWith a view toward broad usage
• Core development done by permanent researchersPhD students shall focus on their own needs
• Each line of code justified by a research projectWith a long term vision (agile development)
• Inspiration from computer science:To organize the code and the communityTo put a bit more math in the machine (categories)Programming concepts and methodologies (objects)Cooperative development tools (trac/mercurial/patches/...)
*-Combinat in a nutshell Demonstration History and development model Future directions
*-Combinat: development strategyIt’s all about sharing and building a community
• Free softwareWhile remaining pragmatic in collaborations
• International and decentralized developmentWarranty of independence
• Developed by researchers, for researchersWith a view toward broad usage
• Core development done by permanent researchersPhD students shall focus on their own needs
• Each line of code justified by a research projectWith a long term vision (agile development)
• Inspiration from computer science:To organize the code and the communityTo put a bit more math in the machine (categories)Programming concepts and methodologies (objects)Cooperative development tools (trac/mercurial/patches/...)
*-Combinat in a nutshell Demonstration History and development model Future directions
*-Combinat: development strategyIt’s all about sharing and building a community
• Free softwareWhile remaining pragmatic in collaborations
• International and decentralized developmentWarranty of independence
• Developed by researchers, for researchersWith a view toward broad usage
• Core development done by permanent researchersPhD students shall focus on their own needs
• Each line of code justified by a research projectWith a long term vision (agile development)
• Inspiration from computer science:To organize the code and the communityTo put a bit more math in the machine (categories)Programming concepts and methodologies (objects)Cooperative development tools (trac/mercurial/patches/...)
*-Combinat in a nutshell Demonstration History and development model Future directions
The MuPAD-Combinat team in (full) action
*-Combinat in a nutshell Demonstration History and development model Future directions
• Generic enumeration kernels:• Decomposable classes / species• Linear extensions of a poset• Lexicographic enumeration of list of integers• Integral points of a polyhedron• Objects mod a group action
• Posets, ...
• Words, ...
• Tilings, ...
*-Combinat in a nutshell Demonstration History and development model Future directions
∗-Combinat building steps (combinatorics)
• Support tools for combinatorics:• Counting functions / generating series
(lazy Karatsuba product, plethysm, implicit equation)• Data structures for combinatorial objects
• Generic enumeration kernels:• Decomposable classes / species• Linear extensions of a poset• Lexicographic enumeration of list of integers• Integral points of a polyhedron• Objects mod a group action
• Posets, ...
• Words, ...
• Tilings, ...
*-Combinat in a nutshell Demonstration History and development model Future directions
∗-Combinat building steps (combinatorics)
• Support tools for combinatorics:• Counting functions / generating series
(lazy Karatsuba product, plethysm, implicit equation)• Data structures for combinatorial objects
• Generic enumeration kernels:• Decomposable classes / species• Linear extensions of a poset• Lexicographic enumeration of list of integers• Integral points of a polyhedron• Objects mod a group action
• Posets, ...
• Words, ...
• Tilings, ...
*-Combinat in a nutshell Demonstration History and development model Future directions
∗-Combinat building steps (combinatorics)
• Support tools for combinatorics:• Counting functions / generating series
(lazy Karatsuba product, plethysm, implicit equation)• Data structures for combinatorial objects
• Generic enumeration kernels:• Decomposable classes / species• Linear extensions of a poset• Lexicographic enumeration of list of integers• Integral points of a polyhedron• Objects mod a group action
• Posets, ...
• Words, ...
• Tilings, ...
*-Combinat in a nutshell Demonstration History and development model Future directions
∗-Combinat building steps (combinatorics)
• Support tools for combinatorics:• Counting functions / generating series
(lazy Karatsuba product, plethysm, implicit equation)• Data structures for combinatorial objects
• Generic enumeration kernels:• Decomposable classes / species• Linear extensions of a poset• Lexicographic enumeration of list of integers• Integral points of a polyhedron• Objects mod a group action
• Posets, ...
• Words, ...
• Tilings, ...
*-Combinat in a nutshell Demonstration History and development model Future directions
*-Combinat building steps (algebra)
• FreeModule(set, Coefficient Ring)Categories: AlgebraWithBasis and friendsSupport for seamless linear algebraHom(..., ...)Unification with polynomials, ...
• Spaces with several representations, Bases changes...
*-Combinat in a nutshell Demonstration History and development model Future directions
*-Combinat building steps (algebra)
• FreeModule(set, Coefficient Ring)Categories: AlgebraWithBasis and friendsSupport for seamless linear algebraHom(..., ...)Unification with polynomials, ...
• Spaces with several representations, Bases changes...
*-Combinat in a nutshell Demonstration History and development model Future directions
*-Combinat building steps (algebra)
• FreeModule(set, Coefficient Ring)Categories: AlgebraWithBasis and friendsSupport for seamless linear algebraHom(..., ...)Unification with polynomials, ...
• Spaces with several representations, Bases changes...
*-Combinat in a nutshell Demonstration History and development model Future directions
*-Combinat building steps (algebra)
• FreeModule(set, Coefficient Ring)Categories: AlgebraWithBasis and friendsSupport for seamless linear algebraHom(..., ...)Unification with polynomials, ...
• Spaces with several representations, Bases changes...
*-Combinat in a nutshell Demonstration History and development model Future directions
*-Combinat building steps (algebra)
• FreeModule(set, Coefficient Ring)Categories: AlgebraWithBasis and friendsSupport for seamless linear algebraHom(..., ...)Unification with polynomials, ...
• Spaces with several representations, Bases changes...
*-Combinat in a nutshell Demonstration History and development model Future directions
*-Combinat building steps (algebra)
• FreeModule(set, Coefficient Ring)Categories: AlgebraWithBasis and friendsSupport for seamless linear algebraHom(..., ...)Unification with polynomials, ...
• Spaces with several representations, Bases changes...
*-Combinat in a nutshell Demonstration History and development model Future directions
*-Combinat building steps (algebra)
• FreeModule(set, Coefficient Ring)Categories: AlgebraWithBasis and friendsSupport for seamless linear algebraHom(..., ...)Unification with polynomials, ...
• Spaces with several representations, Bases changes...
*-Combinat in a nutshell Demonstration History and development model Future directions
*-Combinat building steps (algebra)
• FreeModule(set, Coefficient Ring)Categories: AlgebraWithBasis and friendsSupport for seamless linear algebraHom(..., ...)Unification with polynomials, ...
• Spaces with several representations, Bases changes...
*-Combinat in a nutshell Demonstration History and development model Future directions
*-Combinat building steps (algebra)
• FreeModule(set, Coefficient Ring)Categories: AlgebraWithBasis and friendsSupport for seamless linear algebraHom(..., ...)Unification with polynomials, ...
• Spaces with several representations, Bases changes...