HOME

TheInfoList



OR:

Axiom is a free, general-purpose
computer algebra system A computer algebra system (CAS) or symbolic algebra system (SAS) is any mathematical software with the ability to manipulate mathematical expressions in a way similar to the traditional manual computations of mathematicians and scientists. The ...
. It consists of an interpreter environment, a compiler and a library, which defines a
strongly typed In computer programming, one of the many ways that programming languages are colloquially classified is whether the language's type system makes it strongly typed or weakly typed (loosely typed). However, there is no precise technical definition ...
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 (IBM Research), James H. Davenport (University of Bath), Barry M. Trager (IBM Research), David Y.Y. Yun (Southern Methodist University) and Victor S. Miller (IBM Research). Early consultants on the project were David Barton (University of California, Berkeley) and James W. Thatcher (IBM Research). Implementation included Robert Sutor (IBM Research), Scott C. Morrison (University of California, Berkeley), Christine J. Sundaresan (IBM Research), Timothy Daly (IBM Research),
Patrizia Gianni Patrizia M. Gianni (born 1952) is an Italian mathematician specializing in computer algebra. She is known for her early research on Gröbner bases including her discovery of the FGLM algorithm for changing monomial orderings in Gröbner bases, ...
(University of Pisa), Albrecht Fortenbacher (Universitaet Karlsruhe), Stephen M. Watt (IBM Research and University of Waterloo), Josh Cohen (Yale University), Michael Rothstein (Kent State University), Manuel Bronstein (IBM Research), Michael Monagan (Simon Fraser University), Jonathon Steinbach (IBM Research), William Burge (IBM Research), Jim Wen (IBM Research), William Sit (City College of New York), and Clifton Williamson (IBM Research) 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 FriCAS is a general purpose computer algebra system with a strong focus on mathematical research and development of new algorithms. It comprises an interpreter, a compiler and a still-growing library of more than 1,000 domains and categories. Fr ...
, following "serious disagreement about project goals". The Axiom project continued to be developed by Tim Daly. The current research direction i
"Proving Axiom Sane"
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 the axiom-developer.org website. These volumes contain the actual source code of the system. The currently available documents are:
Combined Table of Contents
* Volume 0
Axiom Jenks and Sutor
��The main textbook * Volume 1
Axiom Tutorial
��A simple introduction * Volume 2
Axiom Users Guide
��Detailed examples of domain use (incomplete) * Volume 3
Axiom Programmers Guide
��Guided examples of program writing (incomplete) * Volume 4
Axiom Developers Guide
��Short essays on developer-specific topics (incomplete) * Volume 5
Axiom Interpreter
��Source code for Axiom interpreter (incomplete) * Volume 6
Axiom Command
��Source code for system commands and scripts (incomplete) * Volume 7
Axiom Hyperdoc
��Source code and explanation of X11 Hyperdoc help browser ** Volume 7.
Axiom Hyperdoc Pages
��Source code for Hyperdoc pages * Volume 8
Axiom Graphics
��Source code for X11 Graphics subsystem ** Volume 8.
Axiom Gallery
��A Gallery of Axiom images * Volume 9
Axiom Compiler
��Source code for Spad compiler (incomplete) * Volume 10
Axiom Algebra Implementation
��Essays on implementation issues (incomplete) ** Volume 10.1
Axiom Algebra Theory
��Essays containing background theory ** Volume 10.2
Axiom Algebra Categories
��Source code for Axiom categories ** Volume 10.3
Axiom Algebra Domains
��Source code for Axiom domains ** Volume 10.4
Axiom Algebra Packages
��Source code for Axiom packages ** Volume 10.5
Axiom Algebra Numerics
��Source code for Axiom numerics * Volume 11
Axiom Browser
��Source pages for Axiom Firefox browser front end * Volume 12
Axiom Crystal
��Source code for Axiom Crystal front end (incomplete) * Volume 13
Proving Axiom Correct
��Prove Axiom Algebra (incomplete) * Volume 15
The Axiom SANE Compiler
* Bibliography
Axiom Bibliography
��Literature references * Bug List
Axiom Bug List
Bug List * Reference Card
Axiom 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 the axiom-developer.org 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 (such as Coq and
ACL2 ACL2 ("A Computational Logic for Applicative Common Lisp") is a software system consisting of a programming language, created by Timothy Still it was an extensible theory in a first-order logic, and an automated theorem prover. ACL2 is designed ...
). Axiom uses Docker Containers as part of a continuous release process. The latest image is available on any platform using docker and the commands: docker pull daly/axiom docker run -i -t daly/axiom axiom


Design

In Axiom, each object has a type. Examples of types are mathematical structures (such as rings, fields,
polynomial In mathematics, a polynomial is an expression consisting of indeterminates (also called variables) and coefficients, that involves only the operations of addition, subtraction, multiplication, and positive-integer powers of variables. An exampl ...
s) as well as data structures from computer science (e.g., lists, trees, hash tables). 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 4\times 4 matrices with rational entries would be constructed as SquareMatrix(4, Fraction Integer). 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 (cf. function overloading). 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. Image:AxiomHyperDoc.png, HyperDoc displaying the available operations for a domain Image:AxiomGraphics.png, Axiom displaying a surface Image:Axiomfirefox.jpg, Axiom Firefox Browser Interface Image:Heatequation.jpg, Axiom simplifying a heat equation Image:Matrixinmatrix.jpg, Axiom matrix manipulation Image:RischIntegration.jpg, Axiom computing a Risch integral Axiom has an implementation of the Risch algorithm for elementary integration, which was done by Manuel Bronstein and Barry Trager.


See also

* A# programming language * Aldor programming language *
List of computer algebra systems The following tables provide a comparison of computer algebra systems (CAS). A CAS is a package comprising a set of algorithms for performing symbolic manipulations on algebraic objects, a language to implement them, and an environment in which to ...


References


Further reading

* * * * * * * * * * * * * * * * * * * * * * * * * * * * * Timothy Dal
"Axiom -- Thirty Years of Lisp"
* Timothy Daly "Axiom" Invited Talk, Free Software Conference, Lyon, France, May, 2002 * Timothy Daly "Axiom" Invited Talk
Libre Software Meeting
Metz, France, July 9–12, 2003


External links


Axiom Homepage

Online sandbox to try Axiom
* Source code repositories
GithubSourceForgeGNU Savannah

Jenks, R.D. and Sutor, R. "Axiom, The Scientific Computation System"

Daly, T. "Axiom Volume 1: Tutorial"
Software forks:
OpenAxiomSourceForge

FriCASSourceForge
{{DEFAULTSORT:Axiom (Computer Algebra System) Common Lisp (programming language) software Computer algebra system software for Linux Free computer algebra systems Free software programmed in Lisp