Axiom
Axiom is a free, open source computer algebra system
Install / Use
/learn @daly/AxiomREADME
"What matters the most is what you do for free" -- John Gorka
"...even more important, for the progress of mathematics in the computer age, is the beaver, who will build the needed infrastructure of computer mathematics, that would eventually enable us to solve many outstanding open problems, and many new ones. Consequently, the developers of computer algebra systems, and creators of algorithms, are even more important than both birds and frogs." --Doron Zeilberger (http://www.math.rutgers.edu/~zeilberg/Opinion95.html)
Listening to computer scientists argue, it seems that the standards of proof is I've had two beers and there is this anecdote about a tribe in New Guinea from one of Scott Birkins books that seems to be applicable.
The debate is hindered by low standards of proof. -- Greg Wilson "What We Actually Know About Software Development" https://vimeo.com/9270320
Thinking, analyzing, and inventing are not anomalous acts; they are the normal respiration of the intelligence. -- Zero HP Lovecraft (The Gig Economy) https://zerohplovecraft.wordpress.com/2018/05/11/the-gig-economy-2
When you teach, you do something useful. When you do research, most days you don't. -- June Huh IAS Princeton
Therapist: So you're afraid that you're letting down people you've never met and who you've given something for free? Me: Yeah, basically -- Matthew Garrett
Only those who aren't trying to make money can afford to advance a technology that doesn't pay. -- Robert X. Cringely
You've unpacked the Axiom source code to some directory. In this document we'll call that directory /home/me/axiom. Note that the path cannot contain spaces.
======================================================================= ================= MAKING AXIOM ========================================
Axiom builds a system-specific version based on a string we'll call the SYSNAME. Currently recognized SYSNAME strings can be found on the Axiom website at: http://axiom.axiom-developer.org/axiom-website/download.html
Replace SYSNAME below with the likely name of your system.
We also assume that you downloaded AXIOM to someplace. Suppose that place is /home/me/axiom, then:
cd /home/me/axiom << where you unpacked the sources export AXIOM=/home/me/axiom/mnt/SYSNAME << which axiom to build export PATH=$AXIOM/bin:$PATH make << build the system
A recent cause of likely build failures is SELinux. See the faq file for possible solutions.
When the make completes you'll have an executable called $AXIOM/bin/axiom
======================================================================= ================= INSTALLING AXIOM ====================================
You can install Axiom on your system by typing (as root):
make install
This will put Axiom into /usr/local/axiom and the axiom command in /usr/local/bin/axiom
You can change these defaults to anything thus:
make INSTALL=/home/me/myaxiom COMMAND=/home/me/bin/myaxiom install
=====================================================================
Documentation can be found at various places in the system or on the Axiom website: http://axiom.axiom-developer.org
There is a book (available on Amazon.com): Jenks, Richard D. and Sutor, Robert S. "Axiom, The Scientific Computation System" Springer-Verlag, NY, 1992, ISBN 0-387-97855-0
The book is automatically built as part of the make and lives in:
(yourpath)/axiom/mnt/(sysname)/doc/bookvol0.pdf
In general every directory will contain a Makefile.dvi file. These files document facts about how Axiom is built. The directory mnt/linux/doc will contain .dvi files as they are written.
Axiom is free and open source software. It is copyrighted code that is released under the Modified BSD license. Much debate about this topic has already been archived on the axiom-legal and axiom-developer mailing lists. The mail archives are available at the Axiom website: http://savannah.gnu.org/projects/axiom
For the purposes of copyright, Axiom is to be considered "Joint Work". Specifically:
"A joint work is a work prepared by two or more individuals, with the intention that their separate contributions be merged into a single work. A joint author can also be an organization or a corporation under the definition of "work for hire." A person who has merely contributed ideas without actually documenting those ideas generally cannot be considered an author.
Authors own the work jointly and equally, unless the authors make an agreement otherwise. Each joint author has the right to exercise any or all of the exclusive rights inherent in the joint work. Each author may:
- Grant thirds parties permission to use the work on a nonexclusive basis without the consent of the other joint authors
- Transfer his or her entire ownership interest to another person without the other joint author's consent
- Update the work for his or her own purpose
Additionally, each joint author must account to the other joint authors for any profits received from licensing their joint work."
(http://copyright.universityofcalifornia.edu/ownership/joint-works.html)
Questions and comments should be sent to: axiom-developer@nongnu.org
Tim Daly daly@axiom-developer.org
=====================================================================
Philosophy
Scratchpad was a large, general purpose computer algebra system that was originally developed by IBM under the direction of Richard Jenks. The project started in 1971 and evolved slowly. Barry Trager was key to the technical direction of the project. Scratchpad developed over a 20 year stretch and was basically considered as a research platform for developing new ideas in computational mathematics. In the 1990s, as IBM's fortunes slid, the Scratchpad project was renamed to Axiom, sold to the Numerical Algorithms Group (NAG) in England and became a commercial system. As part of the Scratchpad project at IBM in Yorktown I worked on all aspects of the system and eventually helped transfer the product to NAG. For a variety of reasons it never became a financial success and NAG withdrew it from the market in October, 2001.
NAG agreed to release Axiom as free software. The basic motivation was that Axiom represents something different from other programs in a lot of ways. Primarily because of its foundation in mathematics the Axiom system will potentially be useful 30 years from now. In its current state it represents about 30 years and 300 man-years of research work. To strive to keep such a large collection of knowledge alive seems a worthwhile goal.
However, keeping Axiom alive means more than just taking the source code and dumping it onto a public server. There are a lot of things about the system that need to change if it is going to survive and thrive for the next 30 years.
The system is complex and difficult to build. There are few people who know how it is structured and why it is structured that way. Somehow it needs to be documented deeply so others can contribute.
The mathematics is difficult. Unlike other free software you can't just reach for the old saying ``read the source code''. The source code is plain, clear and about as close to the mathematical theory as is practical. Unfortunately the mathematical theory is enshrined in some research library where few people will have access. Somehow this must change. The research work, the mathematics, the published papers, and the source code have all got to be kept together for the next generation to read, understand and modify.
The mathematics is narrow and very focused. This was due to the fact that, while Axiom is a great research platform, we only had a limited number of visitors at IBM Research. So there is very little in the way of, say, infinite group theory in Axiom. We can add it. Doing so will show up shortcomings in the system. For example, how do you represent an infinite object? There are many possible representations and they depend on your goals. The system will have to change, expand, and, hopefully, become cleaner as more thought is applied. Scratchpad changed continuously while it was being used for research and we expect Axiom to do the same.
The language (spad) is designed to let you write algorithms that are very close to the mathematics. However, the algorithms as presented in the current system have never been shown or proven (an important distinction) to be correct. It is vital that we undertake the huge effort of verifying and validating the code. How else can we trust the results and of what use is a system this complex without trust? Somehow we have to extend the system to integrate program proof techniques. That is, we have to make computational mathematics hold to the same standard as the rest of mathematics.
All of which seems to integrate into a requirement for better documentation. The key change which developers of Axiom will find with this version is that the documentation is primary and the code is secondary. Taking direction from Knuth and Dijkstra the system is now in a literate programming style. The hope is that the next generation of developers and users will be able to understand, maintain and extend the system gracefully. And that eventually papers submitted to journals (an Axiom Journal?) will be easily imported into the system with their running code made available automatically.
There is no guarantee that this attempt to change the culture of computational mathematicians is going to succeed. But it is our firm belief that current systems have reached a complexity plateau and we need to find new techniques to push the envelope.
In general, we need to consider changes to the system with a 30 year horizon rather than the current write-ship-debug mentality of software development. This is, after
