*-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a...

73
*-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

Transcript of *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a...

Page 1: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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/

α∨0

α∨1

α∨2

Page 2: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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

Page 3: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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

Page 4: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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 ?

Page 5: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-Combinat in a nutshell Demonstration History and development model Future directions

It all started there

Page 6: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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

Page 7: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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

Page 8: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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

Page 9: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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

Page 10: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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

Page 11: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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

Page 12: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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)

Page 13: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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)

Page 14: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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)

Page 15: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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)

Page 16: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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)

Page 17: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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)

Page 18: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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)

Page 19: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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)

Page 20: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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)

Page 21: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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?

Page 22: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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?

Page 23: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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?

Page 24: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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?

Page 25: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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?

Page 26: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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?

Page 27: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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?

Page 28: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-Combinat in a nutshell Demonstration History and development model Future directions

State of the art in 2000

Algebraic combinatorics packages

• guess, combstruct, gfun, CS (Projet Algo, INRIA)

• SF (Stembridge)

• ACE, µ-EC (Marne-la-Vallee)

• Symmetrica (Bayreuth)

• Rate, ...

Platforms

• Maple / Maxima

• GAP

• Magma

• Axiom / Aldor

• MuPAD

Page 29: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-Combinat in a nutshell Demonstration History and development model Future directions

State of the art in 2000

Algebraic combinatorics packages

• guess, combstruct, gfun, CS (Projet Algo, INRIA)

• SF (Stembridge)

• ACE, µ-EC (Marne-la-Vallee)

• Symmetrica (Bayreuth)

• Rate, ...

Platforms

• Maple / Maxima

• GAP

• Magma

• Axiom / Aldor

• MuPAD

Page 30: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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/...)

Page 31: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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/...)

Page 32: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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/...)

Page 33: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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/...)

Page 34: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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/...)

Page 35: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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/...)

Page 36: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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/...)

Page 37: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-Combinat in a nutshell Demonstration History and development model Future directions

The MuPAD-Combinat team in (full) action

Page 38: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-Combinat in a nutshell Demonstration History and development model Future directions

*-Combinat

: limits of the model

Nicolas11k

*-Combinat

15 devs100k

MuPAD15 devs1M

SciPi, NumPi, Scientific Python, Atlas, Linbox, GMP, Matplotlib, JMOL, JSMath, ...1k devs10M

Python, IPython, Firefox, Ajax, OpenGL, ...1M devs

Page 39: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-Combinat in a nutshell Demonstration History and development model Future directions

MuPAD-Combinat: limits of the model

Nicolas11k

MuPAD-Combinat

15 devs100k

MuPAD15 devs1M

SciPi, NumPi, Scientific Python, Atlas, Linbox, GMP, Matplotlib, JMOL, JSMath, ...1k devs10M

Python, IPython, Firefox, Ajax, OpenGL, ...1M devs

Page 40: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-Combinat in a nutshell Demonstration History and development model Future directions

Scaling further

• Negotiation with the MuPAD team

• 2002 Open source computer algebra workshop

• 2005 SAGE on radar

• 2006-2007 Axiom meetings → Aldor-Combinat

• 2007 Mike Hansen on radar

• 2008 February SAGE days 7

• 2008 June: let’s join forces with Sage

• 2008 September: MuPAD bought out by Mathworks

• 2008 October: SAGE days 10

• 2009 July: *-Combinat 2009

• 2010 January: SAGE days 20!

Page 41: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-Combinat in a nutshell Demonstration History and development model Future directions

Scaling further

• Negotiation with the MuPAD team

• 2002 Open source computer algebra workshop

• 2005 SAGE on radar

• 2006-2007 Axiom meetings → Aldor-Combinat

• 2007 Mike Hansen on radar

• 2008 February SAGE days 7

• 2008 June: let’s join forces with Sage

• 2008 September: MuPAD bought out by Mathworks

• 2008 October: SAGE days 10

• 2009 July: *-Combinat 2009

• 2010 January: SAGE days 20!

Page 42: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-Combinat in a nutshell Demonstration History and development model Future directions

Scaling further

• Negotiation with the MuPAD team

• 2002 Open source computer algebra workshop

• 2005 SAGE on radar

• 2006-2007 Axiom meetings → Aldor-Combinat

• 2007 Mike Hansen on radar

• 2008 February SAGE days 7

• 2008 June: let’s join forces with Sage

• 2008 September: MuPAD bought out by Mathworks

• 2008 October: SAGE days 10

• 2009 July: *-Combinat 2009

• 2010 January: SAGE days 20!

Page 43: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-Combinat in a nutshell Demonstration History and development model Future directions

Scaling further

• Negotiation with the MuPAD team

• 2002 Open source computer algebra workshop

• 2005 SAGE on radar

• 2006-2007 Axiom meetings → Aldor-Combinat

• 2007 Mike Hansen on radar

• 2008 February SAGE days 7

• 2008 June: let’s join forces with Sage

• 2008 September: MuPAD bought out by Mathworks

• 2008 October: SAGE days 10

• 2009 July: *-Combinat 2009

• 2010 January: SAGE days 20!

Page 44: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-Combinat in a nutshell Demonstration History and development model Future directions

Scaling further

• Negotiation with the MuPAD team

• 2002 Open source computer algebra workshop

• 2005 SAGE on radar

• 2006-2007 Axiom meetings → Aldor-Combinat

• 2007 Mike Hansen on radar

• 2008 February SAGE days 7

• 2008 June: let’s join forces with Sage

• 2008 September: MuPAD bought out by Mathworks

• 2008 October: SAGE days 10

• 2009 July: *-Combinat 2009

• 2010 January: SAGE days 20!

Page 45: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-Combinat in a nutshell Demonstration History and development model Future directions

Scaling further

• Negotiation with the MuPAD team

• 2002 Open source computer algebra workshop

• 2005 SAGE on radar

• 2006-2007 Axiom meetings → Aldor-Combinat

• 2007 Mike Hansen on radar

• 2008 February SAGE days 7

• 2008 June: let’s join forces with Sage

• 2008 September: MuPAD bought out by Mathworks

• 2008 October: SAGE days 10

• 2009 July: *-Combinat 2009

• 2010 January: SAGE days 20!

Page 46: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-Combinat in a nutshell Demonstration History and development model Future directions

Scaling further

• Negotiation with the MuPAD team

• 2002 Open source computer algebra workshop

• 2005 SAGE on radar

• 2006-2007 Axiom meetings → Aldor-Combinat

• 2007 Mike Hansen on radar

• 2008 February SAGE days 7

• 2008 June: let’s join forces with Sage

• 2008 September: MuPAD bought out by Mathworks

• 2008 October: SAGE days 10

• 2009 July: *-Combinat 2009

• 2010 January: SAGE days 20!

Page 47: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-Combinat in a nutshell Demonstration History and development model Future directions

Scaling further

• Negotiation with the MuPAD team

• 2002 Open source computer algebra workshop

• 2005 SAGE on radar

• 2006-2007 Axiom meetings → Aldor-Combinat

• 2007 Mike Hansen on radar

• 2008 February SAGE days 7

• 2008 June: let’s join forces with Sage

• 2008 September: MuPAD bought out by Mathworks

• 2008 October: SAGE days 10

• 2009 July: *-Combinat 2009

• 2010 January: SAGE days 20!

Page 48: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-Combinat in a nutshell Demonstration History and development model Future directions

Scaling further

• Negotiation with the MuPAD team

• 2002 Open source computer algebra workshop

• 2005 SAGE on radar

• 2006-2007 Axiom meetings → Aldor-Combinat

• 2007 Mike Hansen on radar

• 2008 February SAGE days 7

• 2008 June: let’s join forces with Sage

• 2008 September: MuPAD bought out by Mathworks

• 2008 October: SAGE days 10

• 2009 July: *-Combinat 2009

• 2010 January: SAGE days 20!

Page 49: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-Combinat in a nutshell Demonstration History and development model Future directions

Scaling further

• Negotiation with the MuPAD team

• 2002 Open source computer algebra workshop

• 2005 SAGE on radar

• 2006-2007 Axiom meetings → Aldor-Combinat

• 2007 Mike Hansen on radar

• 2008 February SAGE days 7

• 2008 June: let’s join forces with Sage

• 2008 September: MuPAD bought out by Mathworks

• 2008 October: SAGE days 10

• 2009 July: *-Combinat 2009

• 2010 January: SAGE days 20!

Page 50: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-Combinat in a nutshell Demonstration History and development model Future directions

Scaling further

• Negotiation with the MuPAD team

• 2002 Open source computer algebra workshop

• 2005 SAGE on radar

• 2006-2007 Axiom meetings → Aldor-Combinat

• 2007 Mike Hansen on radar

• 2008 February SAGE days 7

• 2008 June: let’s join forces with Sage

• 2008 September: MuPAD bought out by Mathworks

• 2008 October: SAGE days 10

• 2009 July: *-Combinat 2009

• 2010 January: SAGE days 20!

Page 51: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-Combinat in a nutshell Demonstration History and development model Future directions

Nicolas11k

Sage-Combinat25 devs100k

Sage200 devs1M

SciPi, NumPi, Scientific Python, Atlas, Linbox, GMP, Matplotlib, JMOL, JSMath, ...1k devs10M

Python, IPython, Firefox, Ajax, OpenGL, ...1M devs

Page 52: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-Combinat in a nutshell Demonstration History and development model Future directions

Nicolas11k

Sage-Combinat25 devs100k

Sage200 devs1M

GAP, Maxima, Singular, ...

2M

SciPi, NumPi, Scientific Python, Atlas, Linbox, GMP, Matplotlib, JMOL, JSMath, ...1k devs10M

Python, IPython, Firefox, Ajax, OpenGL, ...1M devs

Page 53: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-Combinat in a nutshell Demonstration History and development model Future directions

Nicolas11k

Sage-Combinat25 devs100k

Sage200 devs1M

GAP, Maxima, Singular, ...

2M

SciPi, NumPi, Scientific Python, Atlas, Linbox, GMP, Matplotlib, JMOL, JSMath, ...1k devs10M

Python, IPython, Firefox, Ajax, OpenGL, ...1M devs

Page 54: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-Combinat in a nutshell Demonstration History and development model Future directions

Nicolas11k

Sage-Combinat25 devs100k

Sage200 devs1M

GAP, Maxima, Singular, ...

2M

SciPi, NumPi, Scientific Python, Atlas, Linbox, GMP, Matplotlib, JMOL, JSMath, ...1k devs10M

Python, IPython, Firefox, Ajax, OpenGL, ...1M devs

Page 55: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-Combinat in a nutshell Demonstration History and development model Future directions

Nicolas Borie11k

Sage-Combinat25 devs100k

Sage200 devs1M

GAP, Maxima, Singular, ...

2M

SciPi, NumPi, Scientific Python, Atlas, Linbox, GMP, Matplotlib, JMOL, JSMath, ...1k devs10M

Python, IPython, Firefox, Ajax, OpenGL, ...1M devs

Page 56: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-Combinat in a nutshell Demonstration History and development model Future directions

On the shoulders of a giant

Nicolas Borie11k

Sage-Combinat25 devs100k

Sage200 devs1M

GAP, Maxima, Singular, ...

2M

SciPi, NumPi, Scientific Python, Atlas, Linbox, GMP, Matplotlib, JMOL, JSMath, ...1k devs10M

Python, IPython, Firefox, Ajax, OpenGL, ...1M devs

Page 57: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-Combinat in a nutshell Demonstration History and development model Future directions

The Sage-Combinat team in action

Page 58: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-Combinat in a nutshell Demonstration History and development model Future directions

∗-Combinat building steps (combinatorics)

Concentrate on the foundations

Architecture tools, like:

• Coercion

• Categories (generic programming)

• Caching (trivial to use yet fine grained)

Page 59: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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

(partitions, trees, tableaux, permutations, graphs, ...)• Combinatorial Factories• Uniformization of enumerated sets

• 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, ...

Page 60: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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

(partitions, trees, tableaux, permutations, graphs, ...)• Combinatorial Factories• Uniformization of enumerated sets

• 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, ...

Page 61: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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

(partitions, trees, tableaux, permutations, graphs, ...)• Combinatorial Factories• Uniformization of enumerated sets

• 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, ...

Page 62: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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

(partitions, trees, tableaux, permutations, graphs, ...)• Combinatorial Factories• Uniformization of enumerated sets

• 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, ...

Page 63: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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

(partitions, trees, tableaux, permutations, graphs, ...)• Combinatorial Factories• Uniformization of enumerated sets

• 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, ...

Page 64: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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...

• Functors: tensor products, tensor, exterior, and symmetricalgebra, submodules, quotients, ...

• Generic Grobner/Involutive elimination tools

• Classical Hopf algebras (NCSF, polynomials)

• Representation theory of algebras

• Root systems, Coxeter groups, Hecke algebras

• Semigroups

• Operads

Page 65: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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...

• Functors: tensor products, tensor, exterior, and symmetricalgebra, submodules, quotients, ...

• Generic Grobner/Involutive elimination tools

• Classical Hopf algebras (NCSF, polynomials)

• Representation theory of algebras

• Root systems, Coxeter groups, Hecke algebras

• Semigroups

• Operads

Page 66: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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...

• Functors: tensor products, tensor, exterior, and symmetricalgebra, submodules, quotients, ...

• Generic Grobner/Involutive elimination tools

• Classical Hopf algebras (NCSF, polynomials)

• Representation theory of algebras

• Root systems, Coxeter groups, Hecke algebras

• Semigroups

• Operads

Page 67: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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...

• Functors: tensor products, tensor, exterior, and symmetricalgebra, submodules, quotients, ...

• Generic Grobner/Involutive elimination tools

• Classical Hopf algebras (NCSF, polynomials)

• Representation theory of algebras

• Root systems, Coxeter groups, Hecke algebras

• Semigroups

• Operads

Page 68: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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...

• Functors: tensor products, tensor, exterior, and symmetricalgebra, submodules, quotients, ...

• Generic Grobner/Involutive elimination tools

• Classical Hopf algebras (NCSF, polynomials)

• Representation theory of algebras

• Root systems, Coxeter groups, Hecke algebras

• Semigroups

• Operads

Page 69: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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...

• Functors: tensor products, tensor, exterior, and symmetricalgebra, submodules, quotients, ...

• Generic Grobner/Involutive elimination tools

• Classical Hopf algebras (NCSF, polynomials)

• Representation theory of algebras

• Root systems, Coxeter groups, Hecke algebras

• Semigroups

• Operads

Page 70: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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...

• Functors: tensor products, tensor, exterior, and symmetricalgebra, submodules, quotients, ...

• Generic Grobner/Involutive elimination tools

• Classical Hopf algebras (NCSF, polynomials)

• Representation theory of algebras

• Root systems, Coxeter groups, Hecke algebras

• Semigroups

• Operads

Page 71: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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...

• Functors: tensor products, tensor, exterior, and symmetricalgebra, submodules, quotients, ...

• Generic Grobner/Involutive elimination tools

• Classical Hopf algebras (NCSF, polynomials)

• Representation theory of algebras

• Root systems, Coxeter groups, Hecke algebras

• Semigroups

• Operads

Page 72: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-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...

• Functors: tensor products, tensor, exterior, and symmetricalgebra, submodules, quotients, ...

• Generic Grobner/Involutive elimination tools

• Classical Hopf algebras (NCSF, polynomials)

• Representation theory of algebras

• Root systems, Coxeter groups, Hecke algebras

• Semigroups

• Operads

Page 73: *-Combinat Sharing algebraic combinatorics since 2000€¦ · *-Combinat in a nutshellDemonstrationHistory and development modelFuture directions-Combinat Sharing algebraic combinatorics

*-Combinat in a nutshell Demonstration History and development model Future directions

Want to join?

combinat.sagemath.org

11⊗111

11⊗112

11⊗122

11⊗113

11⊗123

11⊗223

11⊗133

12⊗223

11⊗23311⊗222

22⊗223

12⊗233

11⊗333

12⊗222

22⊗233

12⊗333

22⊗222 22⊗333

13⊗333

23⊗333 33⊗333

1

1

2

1

2

1

1

2

1

2

1

1

2

1

2

1

2

2

1

2

1

1

2

2

1

2

2 2

1

2

α∨0

α∨1

α∨2

21 ⊗ 1

21 ⊗ 2

31 ⊗ 1

21 ⊗ 3

31 ⊗ 2

31 ⊗ 3

32 ⊗ 2

32 ⊗ 1

32 ⊗ 3

1 2

2 1

2 1

0

0

1

0

2

0