Uncategorized

Open Source Mathematics Software

Posted in Uncategorized on January 7th, 2010 by Robin – Be the first to comment

Introduction to SAGE

Also, the sage-combinat-dev mailing list.

So, why am I still fumbling along trying to implement inefficient algorithms for basic algebraic and combinatorial structures in Haskell, when efficient versions already exist in this fabulous open source project? Well:

  • I like the idea of functional programming, especially higher order functions. The fact that the lambda calculus and turing machines provide equivalent models of computation is highly non-trivial. The natural way to decompose a problem into smaller sub-problems in a functional language is very different from the natural way to decompose the same problem in an imperative language. Once you have the “atomic” pieces of the puzzle, you can recombine them in novel ways. Having new ways to break something apart suggests new ways to put it back together again.
  • One of the things that originally attracted me to mathematics is the fact that everything can be reduced to first principles. Foundational paradoxes aside, I have always felt uncomfortable proving theorems using the results of other theorems which I don’t myself know how to prove. Similarly, I have always felt uncomfortable programming with sophisticated libraries, the inner workings of which I have no understanding. For this reason, I would like to implement my own “toy algorithms” for manipulating daily mathematical objects, even if in practice I end up using somebody elses library for efficiency reasons.
  • From what limited programming experience I have, the one thing I have learned is that even very simple things are actually much more complicated than they first seem. Forcing myself to explain my reasoning to a computer is a great way to uncover hidden, unarticulated assumptions. Even if this is a painful process, the resulting clarity of vision seems worth it.