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 Common Lisp Multi-paradigm and general-purpose programming lang. CVXOPT Convex optimization, linear programming, least squares Cython C-Extensions for Python F2c Converts Fortran 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 computer algebra system Mercurial 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 Polynomials Over Boolean Rings PyCrypto Python Cryptography Toolkit Python Interpreted language Qd Quad-double/Double-double Computation Package R Statistical Computing Readline Line-editing Rpy Python interface to R Scipy Python library for scientic computation Singular 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, Macaulay2 (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-linux-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 Computer Algebra System for Polynomial 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 free software, 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