Axiom (computer algebra system)
Axiom is a free, general-purpose computer algebra system. It consists of an interpreter environment, a compiler and a library, which defines a strongly typed hierarchy.
History
Two computer algebra systems named Scratchpad were developed by IBM. The first one was started in 1965 by James Griesmer at the request of Ralph Gomory, and written in Fortran. The development of this software was stopped before any public release. The second Scratchpad, originally named Scratchpad II, was developed from 1977 on, at Thomas J. Watson Research Center, under the direction of Richard Dimick Jenks.The design is principally due to Richard D. Jenks, James H. Davenport, Barry M. Trager, David Y.Y. Yun and Victor S. Miller. Early consultants on the project were David Barton and James W. Thatcher. Implementation included Robert Sutor, Scott C. Morrison, Christine J. Sundaresan, Timothy Daly, Patrizia Gianni, Albrecht Fortenbacher, Stephen M. Watt, Josh Cohen, Michael Rothstein, Manuel Bronstein, Michael Monagan, Jonathan Steinbach, William Burge, Jim Wen, William Sit, and Clifton Williamson
Scratchpad II was renamed Axiom when IBM decided, circa 1990, to make it a commercial product. A few years later, it was sold to NAG. In 2001, it was withdrawn from the market and re-released under the Modified BSD License. Since then, the project's lead developer has been Tim Daly.
In 2007, Axiom was forked twice, originating two different open-source projects: OpenAxiom and FriCAS, following "serious disagreement about project goals". The Axiom project continued to be developed by Tim Daly.
The current research direction is , that is, logical, rational, judicious, and sound.
Documentation
Axiom is a literate program. The source code is becoming available in a set of volumes which are available on thewww.nongnu.org/axiom website. These volumes contain the actual source code of the system.The currently available documents are:
- Volume 0: —The main textbook
- Volume 1: —A simple introduction
- Volume 2: —Detailed examples of domain use
- Volume 3: —Guided examples of program writing
- Volume 4: —Short essays on developer-specific topics
- Volume 5: —Source code for Axiom interpreter
- Volume 6: —Source code for system commands and scripts
- Volume 7: —Source code and explanation of X11 Hyperdoc help browser
- * Volume 7.1 —Source code for Hyperdoc pages
- Volume 8: —Source code for X11 Graphics subsystem
- * Volume 8.1 —A Gallery of Axiom images
- Volume 9: —Source code for Spad compiler
- Volume 10: —Essays on implementation issues
- * Volume 10.1: —Essays containing background theory
- * Volume 10.2: —Source code for Axiom categories
- * Volume 10.3: —Source code for Axiom domains
- * Volume 10.4: —Source code for Axiom packages
- * Volume 10.5: —Source code for Axiom numerics
- Volume 11: —Source pages for Axiom Firefox browser front end
- Volume 12: —Source code for Axiom Crystal front end
- Volume 13: —Prove Axiom Algebra
- Volume 15:
- Bibliography: —Literature references
- Bug List: -Bug List
- Reference Card: —Useful function summary
Videos
The Axiom project has a major focus on providing documentation. Recently the project announced the first in a series of instructional videos, which are also available on thewww.nongnu.org/axiom website. The first video provides details on the Axiom information sources.Philosophy
The Axiom project focuses on the “30 Year Horizon”. The primary philosophy is that Axiom needs to develop several fundamental features in order to be useful to the next generation of computational mathematicians. Knuth's literate programming technique is used throughout the source code. Axiom plans to use proof technology to prove the correctness of the algorithms.Binary AXIOM packages are available for installation on a wide variety of platforms, such as Debian GNU/Linux.
Design
In Axiom, each object has a type. Examples of types are mathematical structures as well as data structures from computer science.A function can take a type as argument, and its return value can also be a type. For example,
Fraction is a function, that takes an IntegralDomain as argument, and returns the field of fractions of its argument. As another example, the ring of matrices with rational entries would be constructed as SquareMatrix. Of course, when working in this domain, 1 is interpreted as the identity matrix and A^-1 would give the inverse of the matrix A, if it exists.Several operations can have the same name, and the types of both the arguments and the result are used to determine which operation is applied.
Axiom comes with an extension language called SPAD. All the mathematical knowledge of Axiom is written in this language. The interpreter accepts roughly the same language.
Features
Within the interpreter environment, Axiom uses type inference and a heuristic algorithm to make explicit type annotations mostly unnecessary.It features 'HyperDoc', an interactive browser-like help system, and can display two and three dimensional graphics, also providing interactive features like rotation and lighting. It also has a specialized interaction mode for Emacs, as well as a plugin for the TeXmacs editor.
Axiom has an implementation of the Risch algorithm for elementary integration, which was done by Manuel Bronstein and Barry Trager. While this implementation can find most elementary antiderivatives and whether they exist, it does have some non-implemented branches, and raises an error when such cases are encountered during integration.