Sage? Python Freedom! Community Development model Some useful features

The Sage system

Franco Saliola Nicolas M. Thiéry

With slides from Franco Saliola, Florent Hivert, Dan Drake, William Stein, ...

Université du Québec à Montréal Laboratoire de Mathématiques d'Orsay, Université Paris Sud

Sage Days 30, Acadia University, 02/05/2011 ∨ α1

∨ α2

∨ α0 1/46 Sage? Python Freedom! Community Development model Some useful features Outline

1 Sage?

2 Python

3 Freedom!

4 Community

5 Development model

6 Some useful features

2/46 Sage? Python Freedom! Community Development model Some useful features

Sage?

3/46 . . . and more!

Sage? Python Freedom! Community Development model Some useful features Sage is a distribution of open source software

Software included in Sage:

ATLAS Automatically Tuned Linear Algebra Software BLAS Basic Fortan 77 linear algebra routines Bzip2 High-quality data compressor Cddlib Double Description Method of Motzkin Multi-paradigm and general-purpose programming lang. CVXOPT Convex optimization, linear programming, least squares Cython C-Extensions for Python F2c Converts 77 to C code Flint Fast Library for Number Theory FpLLL Euclidian lattice reduction FreeType A Free, High-Quality, and Portable Font Engine

4/46 . . . and more!

Sage? Python Freedom! Community Development model Some useful features Sage is a distribution of open source software

Software included in Sage:

G95 Open source Fortran 95 compiler GAP Groups, Algorithms, Programming GD Dynamic graphics generation tool Genus2reduction Curve data computation Gfan Gröbner fans and tropical varieties Givaro C++ library for arithmetic and algebra GMP GNU Multiple Precision Arithmetic Library GMP-ECM Elliptic Curve Method for Integer Factorization GNU TLS Secure networking GSL Gnu Scientic Library JsMath JavaScript implementation of LaTeX

4/46 . . . and more!

Sage? Python Freedom! Community Development model Some useful features Sage is a distribution of open source software

Software included in Sage:

IML Integer Matrix Library IPython Interactive Python shell LAPACK Fortan 77 linear algebra library Lcalc L-functions calculator Libgcrypt General purpose cryptographic library Libgpg-error Common error values for GnuPG components Linbox C++ linear algebra library Matplotlib Python plotting library Maxima system Revision control system MoinMoin Wiki

4/46 . . . and more!

Sage? Python Freedom! Community Development model Some useful features Sage is a distribution of open source software

Software included in Sage:

MPFI Multiple Precision Floating-point Interval library MPFR C library for multiple-precision oating-point computations ECLib Cremona's Programs for Elliptic curves NetworkX Graph theory NTL Number theory C++ library Numpy Numerical linear algebra OpenCDK Open Crypto Development Kit PALP A Package for Analyzing Lattice Polytopes PARI/GP Number theory calculator Pexpect Pseudo-tty control for Python PNG Bitmap image support

4/46 . . . and more!

Sage? Python Freedom! Community Development model Some useful features Sage is a distribution of open source software

Software included in Sage:

PolyBoRi Over Boolean Rings PyCrypto Python Cryptography Toolkit Python Interpreted language Qd Quad-double/Double-double Computation Package Statistical Computing Readline Line-editing Rpy Python interface to R Scipy Python library for scientic computation fast commutative and noncommutative algebra Scons Software construction tool SQLite Relation database

4/46 Sage? Python Freedom! Community Development model Some useful features Sage is a distribution of open source software

Software included in Sage:

Sympow L-function calculator Symmetrica Representation theory Sympy Python library for symbolic computation Tachyon lightweight 3d ray tracer Termcap for writing portable text mode applications Twisted Python networking library Weave Tools for including C/C++ code within Python Zlib Data compression library ZODB Object-oriented database

. . . and more!

4/46 Sage? Python Freedom! Community Development model Some useful features Sage is a distribution of mathematics software

Arbitrary precision arith. GMP, MPFR, MPFI, NTL, . . . Algebra GAP, Maxima, Singular Algebraic geometry Singular, (optional) Arithmetic geometry PARI, NTL, mwrank, ecm, . . . Symbolic computation Maxima, Sympy Exact linear algebra Linbox, IML Numerical calculations GSL, Scipy, Numpy Combinatorics Symmetrica, Lrcalc, PALP, Coxeter 3, Chevie Graph theory NetworkX, graphviz (optional) Group theory GAP

. . . and more!

5/46 Sage? Python Freedom! Community Development model Some useful features Sage Demo

Demo!

6/46 Sage? Python Freedom! Community Development model Some useful features Sage is a distribution of mathematics software

> sage -gap

######### ###### ########### ### ############# ###### ############ #### ############## ######## ############# ##### ############### ######## ##### ###### ##### ###### # ######### ##### ##### ###### ###### ########## ##### ##### ####### ##### ##### #### ##### ###### ######## #### ##### ##### ############# ### #### ##### ####### #### #### ########### #### #### ##### ####### ##### ##### ###### #### #### ##### ####### ##### ##### ##### ############# ##### ##### ################ ##### ############# ###### ##### ################ ##### ############# ################ ################## ##### #### ############### ##### ##### ##### #### ############# ##### ##### ##### #### ######### ##### ##### ##### ####

Information at: http://www.gap-system.org Try '?help' for help. See also '?copyright' and '?authors'

Loading the library. Please be patient, this may take a while. GAP4, Version: 4.4.12 of 17-Dec-2008, x86_64-unknown--gnu-gcc

gap>

7/46 Sage? Python Freedom! Community Development model Some useful features Sage is a distribution of mathematics software

> sage -singular

SINGULAR / Development A for Computations / version 3-1-1 0< by: G.-M. Greuel, G. Pfister, H. Schoenemann \ Feb 2010 FB Mathematik der Universitaet, D-67653 Kaiserslautern \ >

8/46 Sage? Python Freedom! Community Development model Some useful features Sage is a distribution of mathematics software

> sage -maxima

Maxima 5.22.1 http://maxima.sourceforge.net using Lisp ECL 10.4.1 Distributed under the GNU Public License. See the file COPYING. Dedicated to the memory of William Schelter. The function bug_report() provides bug reporting information. (%i1)

9/46 Sage? Python Freedom! Community Development model Some useful features Sage is a distribution of mathematics software

> sage -gp

GP/PARI CALCULATOR Version 2.4.3 (development svn-12623) amd64 running linux (x86-64/GMP-4.2.1 kernel) 64-bit version compiled: Apr 20 2011, gcc-4.4.3 (Ubuntu 4.4.3-4ubuntu5) (readline v6.1 enabled, extended help enabled)

Copyright (C) 2000-2008 The PARI Group

PARI/GP is , covered by the GNU General Public License, and comes WITHOUT ANY WARRANTY WHATSOEVER.

Type ? for help, \q to quit. Type ?12 for how to get moral (and possibly technical) support.

parisize = 8000000, primelimit = 500509 ?

10/46 Sage? Python Freedom! Community Development model Some useful features Sage is a distribution of mathematics software

> sage -R

R version 2.10.1 (2009-12-14) Copyright (C) 2009 The R Foundation for Statistical Computing ISBN 3-900051-07-0

R is free software and comes with ABSOLUTELY NO WARRANTY. You are welcome to redistribute it under certain conditions. Type 'license()' or 'licence()' for distribution details.

Natural language support but running in an English locale

R is a collaborative project with many contributors. Type 'contributors()' for more information and 'citation()' on how to cite R or R packages in publications.

Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R.

>

11/46 Sage? Python Freedom! Community Development model Some useful features Sage combines the power of multiple software

Demo!

12/46 Sage? Python Freedom! Community Development model Some useful features Sage includes a large native library

Sage is also new code, providing new or improved functionality not previously available.

500k lines of code 2500 classes 27200 functions Rich mathematical content: categories, combinatorics, graphs, number theory, ... Many new algorithms

13/46 and to foster a friendly community of users and developers

Sage? Python Freedom! Community Development model Some useful features Sage's mission

To create a viable high-quality and open-source alternative to MapleTM, MathematicaTM, MagmaTM, and MATLABTM

...

14/46 Sage? Python Freedom! Community Development model Some useful features Sage's mission

To create a viable high-quality and open-source alternative to MapleTM, MathematicaTM, MagmaTM, and MATLABTM

...

and to foster a friendly community of users and developers

14/46 Feb. 2006: Sage 1.0 Sage Days 1, San Diego, 10 participants? Feb. 2010: Sage 4.4.2 Sage Days 20, Luminy (France), 120 participants Jan. 2011: Sage 4.6.1 10000 users? Funding (postdoc, workshops, hardware): NSF, ANR, CNRS, Universities and Institutes, Google, Microsoft Research, . . .

Sage? Python Freedom! Community Development model Some useful features A short history of Sage

2002: Open Source Computer Algebra workshop in Lyon 1999-2005: William Stein writes over 25,000 lines of Magma code for his research, and realizes that Magma was a bad long term investment since he couldn't see or modify the internals Feb. 2005: Sage 0.1, a Python library linking together PARI, Maxima, Python, Singular, GAP.

15/46 Feb. 2010: Sage 4.4.2 Sage Days 20, Luminy (France), 120 participants Jan. 2011: Sage 4.6.1 10000 users? Funding (postdoc, workshops, hardware): NSF, ANR, CNRS, Universities and Institutes, Google, Microsoft Research, . . .

Sage? Python Freedom! Community Development model Some useful features A short history of Sage

2002: Open Source Computer Algebra workshop in Lyon 1999-2005: William Stein writes over 25,000 lines of Magma code for his research, and realizes that Magma was a bad long term investment since he couldn't see or modify the internals Feb. 2005: Sage 0.1, a Python library linking together PARI, Maxima, Python, Singular, GAP. Feb. 2006: Sage 1.0 Sage Days 1, San Diego, 10 participants?

15/46 Sage? Python Freedom! Community Development model Some useful features A short history of Sage

2002: Open Source Computer Algebra workshop in Lyon 1999-2005: William Stein writes over 25,000 lines of Magma code for his research, and realizes that Magma was a bad long term investment since he couldn't see or modify the internals Feb. 2005: Sage 0.1, a Python library linking together PARI, Maxima, Python, Singular, GAP. Feb. 2006: Sage 1.0 Sage Days 1, San Diego, 10 participants? Feb. 2010: Sage 4.4.2 Sage Days 20, Luminy (France), 120 participants Jan. 2011: Sage 4.6.1 10000 users? Funding (postdoc, workshops, hardware): NSF, ANR, CNRS, Universities and Institutes, Google, Microsoft Research, . . .

15/46 Sage? Python Freedom! Community Development model Some useful features Sage is very young!

Sage has: bugs inconsistencies blank or undocumented areas

Sage lacks: native support under Windows (upcoming) (working) packages under Debian / Ubuntu / ... Proper modularization

16/46 Sage? Python Freedom! Community Development model Some useful features

Python

17/46 Easy to use as a pocket calculator: python: x = 17 python: x 17 python: 3*x 51

Easy to read and write: n o math: and is odd 17x x ∈ {0, 1,..., 9} x python: [17*x for x in range(10) if x%2 == 1]

Easy to learn, with lots of free documentation: Dive into Python (http://diveintopython.adrahon.org) Python tutorial (http://www.ceramiko.ch/python/main.html)

Sage? Python Freedom! Community Development model Some useful features Sage's programming language is Python Python is an interpreted multiparadigm programming language

18/46 Easy to read and write: n o math: and is odd 17x x ∈ {0, 1,..., 9} x python: [17*x for x in range(10) if x%2 == 1]

Easy to learn, with lots of free documentation: Dive into Python (http://diveintopython.adrahon.org) Python tutorial (http://www.ceramiko.ch/python/main.html)

Sage? Python Freedom! Community Development model Some useful features Sage's programming language is Python Python is an interpreted multiparadigm programming language Easy to use as a pocket calculator: python: x = 17 python: x 17 python: 3*x 51

18/46 Easy to learn, with lots of free documentation: Dive into Python (http://diveintopython.adrahon.org) Python tutorial (http://www.ceramiko.ch/python/main.html)

Sage? Python Freedom! Community Development model Some useful features Sage's programming language is Python Python is an interpreted multiparadigm programming language Easy to use as a pocket calculator: python: x = 17 python: x 17 python: 3*x 51

Easy to read and write: n o math: and is odd 17x x ∈ {0, 1,..., 9} x python: [17*x for x in range(10) if x%2 == 1]

18/46 Sage? Python Freedom! Community Development model Some useful features Sage's programming language is Python Python is an interpreted multiparadigm programming language Easy to use as a pocket calculator: python: x = 17 python: x 17 python: 3*x 51

Easy to read and write: n o math: and is odd 17x x ∈ {0, 1,..., 9} x python: [17*x for x in range(10) if x%2 == 1]

Easy to learn, with lots of free documentation: Dive into Python (http://diveintopython.adrahon.org) Python tutorial (http://www.ceramiko.ch/python/main.html)

18/46 Google has made no secret of the fact they use Python a lot for a number of internal projects. Even knowing that, once I was an employee, I was amazed at how much Python code there actually is in the Google source code system.  Guido van Rossum Creator of Python Thousands of third party Python packages available: databases, graphics, network, parallel computing, ... Easy integration of C/C++/Fortran/... libraries Cython: Python is becoming a major platform for scientic computing

Sage? Python Freedom! Community Development model Some useful features Sage's programming language is Python

Python is a widely used language: One of the top 5 most used programming languages, with millions of programmers

19/46 Thousands of third party Python packages available: databases, graphics, network, parallel computing, ... Easy integration of C/C++/Fortran/... libraries Cython: Python is becoming a major platform for scientic computing

Sage? Python Freedom! Community Development model Some useful features Sage's programming language is Python

Python is a widely used language: One of the top 5 most used programming languages, with millions of programmers Google has made no secret of the fact they use Python a lot for a number of internal projects. Even knowing that, once I was an employee, I was amazed at how much Python code there actually is in the Google source code system.  Guido van Rossum Creator of Python

19/46 Easy integration of C/C++/Fortran/... libraries Cython: Python is becoming a major platform for scientic computing

Sage? Python Freedom! Community Development model Some useful features Sage's programming language is Python

Python is a widely used language: One of the top 5 most used programming languages, with millions of programmers Google has made no secret of the fact they use Python a lot for a number of internal projects. Even knowing that, once I was an employee, I was amazed at how much Python code there actually is in the Google source code system.  Guido van Rossum Creator of Python Thousands of third party Python packages available: databases, graphics, network, parallel computing, ...

19/46 Python is becoming a major platform for scientic computing

Sage? Python Freedom! Community Development model Some useful features Sage's programming language is Python

Python is a widely used language: One of the top 5 most used programming languages, with millions of programmers Google has made no secret of the fact they use Python a lot for a number of internal projects. Even knowing that, once I was an employee, I was amazed at how much Python code there actually is in the Google source code system.  Guido van Rossum Creator of Python Thousands of third party Python packages available: databases, graphics, network, parallel computing, ... Easy integration of C/C++/Fortran/... libraries Cython:

19/46 Sage? Python Freedom! Community Development model Some useful features Sage's programming language is Python

Python is a widely used language: One of the top 5 most used programming languages, with millions of programmers Google has made no secret of the fact they use Python a lot for a number of internal projects. Even knowing that, once I was an employee, I was amazed at how much Python code there actually is in the Google source code system.  Guido van Rossum Creator of Python Thousands of third party Python packages available: databases, graphics, network, parallel computing, ... Easy integration of C/C++/Fortran/... libraries Cython: Python is becoming a major platform for scientic computing

19/46 Sage? Python Freedom! Community Development model Some useful features

Freedom!

20/46 Sage? Python Freedom! Community Development model Some useful features Sage is completely free

You can read Sylow's Theorem and its proof in Huppert's book in the library . . . then you can use Sylow's Theorem for the rest of your life free of charge, but for many computer algebra systems license fees have to be paid regularly . . . . With this situation two of the most basic rules of conduct in mathematics are violated: In mathematics information is passed on free of charge and everything is laid open for checking.  J. Neubüser (1993) (started GAP in 1986)

21/46 Sage? Python Freedom! Community Development model Some useful features Freedom of execution

Anywhere, anytime, for any purpose, with only law as limit Freedom to redistribute copies or even to sell copies

Advantages: Technical and administrative simplicity Usage by students at home Remote computing, large scale calculations Sharing of your programs, worksheets

Non discrimination Free access for non academic Free access for developing countries

22/46 Sage? Python Freedom! Community Development model Some useful features Freedom of study

Advantages: Teaching Dissemination of science Most useful if the code is expressive! Reproducibility of scientic results Proof checking Control over the hypothesis, models, and algorithms Analysis of bugs and unexpected behavior

23/46 Sage? Python Freedom! Community Development model Some useful features Freedom to improve and publish one's improvements

Advantages: Adaptation to local needs (dialects, conventions) Specic developments Bug xes

Empowering of users Mutualisation of eorts Importance of being in a community

24/46 Sage? Python Freedom! Community Development model Some useful features

Community

25/46 Sage? Python Freedom! Community Development model Some useful features Sage's worldwide community

There currently are 235 contributors in 159 dierent places.

26/46 Sage? Python Freedom! Community Development model Some useful features Sage's worldwide community web sites http://www.sagemath.org/ http://www.sagemath.fr/ mailing lists sage-devel: development sage-windows: Windows port sage-release: release management sage-algebra: algebra sage-combinat-devel: combinatorics sage-finance: nance sage-nt: number theory sage-grid: grid computing sage-edu: teaching sagemath-edu: teaching (in French) irc-channel #sagemath on freenode.net 27/46 Sage? Python Freedom! Community Development model Some useful features Sage Days in 2010

Sage Days 19: Seattle, WA (January 2010) Sage Days 20: Marseille (February 2010) Sage Days 20.25: Montreal (March 2010) Sage Days 20.5: Fields Institute (May 2010) Sage Days 21: Seattle, WA (June 2010) Sage-Combinat/Chevie Workshop: France (June 2010) Sage Days 22: Berkeley, CA (July 2010) Sage Days 23: Leiden, Netherlands (July 2010) Sage Days 23.5: Kaiserslautern, Germany (July 2010) Sage Days 24: Linz, Austria (July 2010) Sage Days 25: Mumbai, India (August 2010) Sage Days 25.5 Montréal, Canada (September 2010) Sage Days 26 Seattle, Washington (December 7-10, 2010) 28/46 Sage? Python Freedom! Community Development model Some useful features Sage Days in 2011

Joint Math Meetings: New Orleans, LA (January 2011) Sage Days 27: Seattle, WA (January 2011) Sage Days 28: Orsay, France (January 2011) Sage Days 29: Seattle, WA (March 2011) → Sage Days 30: Wolfville, NS (May 2011) Sage Days 31: Seattle, WA (June 2011) Sage Education Days 3: Seattle, WA (June 2011) Sage Days X, for some X > 31: South Korea (Oct 2011)

29/46 Sage? Python Freedom! Community Development model Some useful features Some open source books! Calcul Mathématique avec Sage Alexandre Casamayou, Guillaume Connan Thierry Dumont, Laurent Fousse François Maltey, Matthias Meulien Marc Mezzarobba, Clément Pernet Nicolas M. Thiéry, Paul Zimmermann http://sagebook.gforge.inria.fr/ July 2010: 1.0 online August 2011: printed

Follow up to: Calcul formel, mode d'emploi Dumas, Gomez, Salvy, Zimmermann The Sage tutorial: http://www.sagemath.org/doc David Joyner, William Stein et al. A First Course in Linear Algebra: http://linear.ups.edu Robert Beezer 30/46 Sage? Python Freedom! Community Development model Some useful features

Development model

31/46 Build the car, don't reinvent the wheel Atlas, GAP, GMP, Linbox, Maxima, MPFR, PARI/GP, NetworkX, NTL, Numpy/Scipy, Singular, Symmetrica, ... Based on a standard programming language (Python) Bazaar development model Active proselytism

Sage? Python Freedom! Community Development model Some useful features Sage's design principles

Developed by a community of users, for users Open source from the ground up (GPL)

32/46 Bazaar development model Active proselytism

Sage? Python Freedom! Community Development model Some useful features Sage's design principles

Developed by a community of users, for users Open source from the ground up (GPL) Build the car, don't reinvent the wheel Atlas, GAP, GMP, Linbox, Maxima, MPFR, PARI/GP, NetworkX, NTL, Numpy/Scipy, Singular, Symmetrica, ... Based on a standard programming language (Python)

32/46 Sage? Python Freedom! Community Development model Some useful features Sage's design principles

Developed by a community of users, for users Open source from the ground up (GPL) Build the car, don't reinvent the wheel Atlas, GAP, GMP, Linbox, Maxima, MPFR, PARI/GP, NetworkX, NTL, Numpy/Scipy, Singular, Symmetrica, ... Based on a standard programming language (Python) Bazaar development model Active proselytism

32/46 Sage? Python Freedom! Community Development model Some useful features High-quality code and documentation

All new code is: rigorously tested well documented peer-reviewed

> sage -coverageall ... Overall weighted coverage score: 84.8% Total number of functions: 27200 We need 47 more function to get to 85% coverage. We need 1407 more function to get to 90% coverage. We need 2767 more function to get to 95% coverage.

33/46 Sage? Python Freedom! Community Development model Some useful features Development cycle

http://trac.sagemath.org/

Tickets (examples: #8154, #8890)

Patchs

New releases roughly every other month

34/46 And that thin layer of your own magic powder

There is nothing like a complete combinatorics package I to be an architect, and focus on my own magic powder

But can I?

Sage? Python Freedom! Community Development model Some useful features To program or not to program?

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

35/46 There is nothing like a complete combinatorics package I to be an architect, and focus on my own magic powder

But can I?

Sage? Python Freedom! Community Development model Some useful features To program or not to program?

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

35/46 I to be an architect, and focus on my own magic powder

But can I?

Sage? Python Freedom! Community Development model Some useful features To program or not to program?

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 package

35/46 But can I?

Sage? Python Freedom! Community Development model Some useful features To program or not to program?

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 package I want to be an architect, and focus on my own magic powder

35/46 But can I?

Sage? Python Freedom! Community Development model Some useful features To program or not to program?

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 package I have to be an architect, and focus on my own magic powder

35/46 Sage? Python Freedom! Community Development model Some useful features To program or not to program?

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 package I have to be an architect, and focus on my own magic powder

But can I?

35/46 Sage? Python Freedom! Community Development model Some useful features ∗-Combinat: it all started there

36/46 95% of development eort are generic Opportunity for sharing and mutualisation

Florent

20k

2 devs 20k

+1 = 1.1

Sage? Python Freedom! Community Development model Some useful features ∗-Combinat: 1

Nicolas

20k

37/46 95% of development eort are generic Opportunity for sharing and mutualisation

2 devs 20k

1.1

Sage? Python Freedom! Community Development model Some useful features ∗-Combinat: 1+1 =

Nicolas Florent

20k 20k

37/46 95% of development eort are generic Opportunity for sharing and mutualisation

2 devs 20k

1.1

Sage? Python Freedom! Community Development model Some useful features ∗-Combinat: 1+1 =

Nicolas Florent

20k 20k

37/46 95% of development eort are generic Opportunity for sharing and mutualisation

Sage? Python Freedom! Community Development model Some useful features ∗-Combinat: 1+1 = 1.1

Nicolas Florent

1k 1k

2 devs 20k

37/46 Opportunity for sharing and mutualisation

Sage? Python Freedom! Community Development model Some useful features ∗-Combinat: 1+1 = 1.1

Nicolas Florent

1k 1k

2 devs 20k

95% of development eort are generic

37/46 Sage? Python Freedom! Community Development model Some useful features ∗-Combinat: 1+1 = 1.1

Nicolas Florent

1k 1k

2 devs 20k

95% of development eort are generic Opportunity for sharing and mutualisation

37/46 Sage? Python Freedom! Community Development model Some useful features ∗-Combinat in a nutshell

http://mupad-combinat.sf.net http://combinat.sagemath.org

Mission statement: To improve MuPAD/Sage as an extensible toolbox for computer exploration in combinatorics, and foster code sharing among researchers in this area

38/46 70+ research articles A community: Nicolas Borie, Daniel Bump, Jason Bandlow, Adrien Boussicault, Frédéric Chapoton, Vincent Delecroix, Paul-Olivier Dehaye, Tom Denton, François Descouens, Dan Drake, Teresa Gomez Diaz, Valentin Feray, Mike Hansen, Ralf Hemmecke, Florent Hivert, Brant Jones, Sébastien Labbé, Yann Laigle-Chapuy, Éric Laugerotte, Patrick Lemeur, Andrew Mathas, Xavier Molinero, Thierry Monteil, Olivier Mallet, Gregg Musiker, Jean-Christophe Novelli, Janvier Nzeutchap, Steven Pon, Viviane Pons, Franco Saliola, Anne Schilling, Mark Shimozono, Christian Stump, Lenny Tevlin, Nicolas M. Thiéry, Justin Walker, Qiang Wang, Mike Zabrocki, ... And you ?

Sage? Python Freedom! Community Development model Some useful features ∗-Combinat in a nutshell MuPAD: 115k lines of MuPAD, 15k lines of C++, 32k lines of tests, 600 pages of doc Sage: 300 tickets / 100k lines integrated in Sage Sponsors: ANR, PEPS, NSF, Google Summer of Code

39/46 A community: Nicolas Borie, Daniel Bump, Jason Bandlow, Adrien Boussicault, Frédéric Chapoton, Vincent Delecroix, Paul-Olivier Dehaye, Tom Denton, François Descouens, Dan Drake, Teresa Gomez Diaz, Valentin Feray, Mike Hansen, Ralf Hemmecke, Florent Hivert, Brant Jones, Sébastien Labbé, Yann Laigle-Chapuy, Éric Laugerotte, Patrick Lemeur, Andrew Mathas, Xavier Molinero, Thierry Monteil, Olivier Mallet, Gregg Musiker, Jean-Christophe Novelli, Janvier Nzeutchap, Steven Pon, Viviane Pons, Franco Saliola, Anne Schilling, Mark Shimozono, Christian Stump, Lenny Tevlin, Nicolas M. Thiéry, Justin Walker, Qiang Wang, Mike Zabrocki, ... And you ?

Sage? Python Freedom! Community Development model Some useful features ∗-Combinat in a nutshell MuPAD: 115k lines of MuPAD, 15k lines of C++, 32k lines of tests, 600 pages of doc Sage: 300 tickets / 100k lines integrated in Sage Sponsors: ANR, PEPS, NSF, Google Summer of Code 70+ research articles

39/46 And you ?

Sage? Python Freedom! Community Development model Some useful features ∗-Combinat in a nutshell MuPAD: 115k lines of MuPAD, 15k lines of C++, 32k lines of tests, 600 pages of doc Sage: 300 tickets / 100k lines integrated in Sage Sponsors: ANR, PEPS, NSF, Google Summer of Code 70+ research articles A community: Nicolas Borie, Daniel Bump, Jason Bandlow, Adrien Boussicault, Frédéric Chapoton, Vincent Delecroix, Paul-Olivier Dehaye, Tom Denton, François Descouens, Dan Drake, Teresa Gomez Diaz, Valentin Feray, Mike Hansen, Ralf Hemmecke, Florent Hivert, Brant Jones, Sébastien Labbé, Yann Laigle-Chapuy, Éric Laugerotte, Patrick Lemeur, Andrew Mathas, Xavier Molinero, Thierry Monteil, Olivier Mallet, Gregg Musiker, Jean-Christophe Novelli, Janvier Nzeutchap, Steven Pon, Viviane Pons, Franco Saliola, Anne Schilling, Mark Shimozono, Christian Stump, Lenny Tevlin, Nicolas M. Thiéry, Justin Walker, Qiang Wang, Mike Zabrocki, ...

39/46 Sage? Python Freedom! Community Development model Some useful features ∗-Combinat in a nutshell MuPAD: 115k lines of MuPAD, 15k lines of C++, 32k lines of tests, 600 pages of doc Sage: 300 tickets / 100k lines integrated in Sage Sponsors: ANR, PEPS, NSF, Google Summer of Code 70+ research articles A community: Nicolas Borie, Daniel Bump, Jason Bandlow, Adrien Boussicault, Frédéric Chapoton, Vincent Delecroix, Paul-Olivier Dehaye, Tom Denton, François Descouens, Dan Drake, Teresa Gomez Diaz, Valentin Feray, Mike Hansen, Ralf Hemmecke, Florent Hivert, Brant Jones, Sébastien Labbé, Yann Laigle-Chapuy, Éric Laugerotte, Patrick Lemeur, Andrew Mathas, Xavier Molinero, Thierry Monteil, Olivier Mallet, Gregg Musiker, Jean-Christophe Novelli, Janvier Nzeutchap, Steven Pon, Viviane Pons, Franco Saliola, Anne Schilling, Mark Shimozono, Christian Stump, Lenny Tevlin, Nicolas M. Thiéry, Justin Walker, Qiang Wang, Mike Zabrocki, ... And you ? 39/46 MuPAD 15 devs 1M SciPi, NumPi, Scientic Python, Atlas, Linbox, GMP, Matplotlib, JMOL, JSMath, ... 1k devs 10M Python, IPython, Firefox, Ajax, OpenGL, ... 1M devs

: limits of the model

Sage? Python Freedom! Community Development model Some useful features ∗-Combinat

Me 1 1k

∗-Combinat 15 devs 100k

40/46 SciPi, NumPi, Scientic Python, Atlas, Linbox, GMP, Matplotlib, JMOL, JSMath, ... 1k devs 10M Python, IPython, Firefox, Ajax, OpenGL, ... 1M devs

Sage? Python Freedom! Community Development model Some useful features

Me 1 1k

Sage-Combinat 25 devs 100k

Sage 200 devs 1M

40/46 SciPi, NumPi, Scientic Python, Atlas, Linbox, GMP, Matplotlib, JMOL, JSMath, ... 1k devs 10M Python, IPython, Firefox, Ajax, OpenGL, ... 1M devs

Sage? Python Freedom! Community Development model Some useful features

Me 1 1k

Sage-Combinat 25 devs 100k

Sage GAP, Maxima, Singular, ... 200 devs 1M 2M

40/46 Python, IPython, Firefox, Ajax, OpenGL, ... 1M devs

Sage? Python Freedom! Community Development model Some useful features

Me 1 1k

Sage-Combinat 25 devs 100k

Sage GAP, Maxima, Singular, ... 200 devs 1M 2M SciPi, NumPi, Scientic Python, Atlas, Linbox, GMP, Matplotlib, JMOL, JSMath, ... 1k devs 10M

40/46 Sage? Python Freedom! Community Development model Some useful features

Me 1 1k

Sage-Combinat 25 devs 100k

Sage GAP, Maxima, Singular, ... 200 devs 1M 2M SciPi, NumPi, Scientic Python, Atlas, Linbox, GMP, Matplotlib, JMOL, JSMath, ... 1k devs 10M Python, IPython, Firefox, Ajax, OpenGL, ... 1M devs

40/46 Sage? Python Freedom! Community Development model Some useful features On the shoulders of a giant

Me 1 1k

Sage-Combinat 25 devs 100k

Sage GAP, Maxima, Singular, ... 200 devs 1M 2M SciPi, NumPi, Scientic Python, Atlas, Linbox, GMP, Matplotlib, JMOL, JSMath, ... 1k devs 10M Python, IPython, Firefox, Ajax, OpenGL, ... 1M devs

40/46 Sage? Python Freedom! Community Development model Some useful features

Some useful features

41/46 and it got replaced by:

Sage? Python Freedom! Community Development model Some useful features LATEX In this LATEX le, I typed: \sageplot{plot(-x^3+3*x^2+7*x-4,-5,5)}

43/46 Sage? Python Freedom! Community Development model Some useful features LATEX In this LATEX le, I typed: \sageplot{plot(-x^3+3*x^2+7*x-4,-5,5)} and it got replaced by:

43/46 Sage? Python Freedom! Community Development model Some useful features LATEX

In this LATEX le: \begin{sagesilent} sigma = Permutation([7,3,1,5,2,6,8,4]) P, Q = sigma.robinson_schensted() \end{sagesilent}

Let $\sigma = \sage{sigma}$. The Robinson-Schensted-Knuth algorithm produces the tableaux: \[\sage{P} \quad \sage{Q}\]

44/46 This is done with the sagetex package for LATEX, written by Dan Drake. Of course, the package is included with Sage.

Sage? Python Freedom! Community Development model Some useful features LATEX

It got replaced with:

Let σ = [7, 3, 1, 5, 2, 6, 8, 4]. The Robinson-Schensted-Knuth algorithm produces the tableaux:

1 2 4 8 1 4 6 7 3 5 6 2 5 8 7 3

45/46 Sage? Python Freedom! Community Development model Some useful features LATEX

It got replaced with:

Let σ = [7, 3, 1, 5, 2, 6, 8, 4]. The Robinson-Schensted-Knuth algorithm produces the tableaux:

1 2 4 8 1 4 6 7 3 5 6 2 5 8 7 3

This is done with the sagetex package for LATEX, written by Dan Drake. Of course, the package is included with Sage.

45/46