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 de ...
. 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
International Business Machines Corporation (using the trademark IBM), nicknamed Big Blue, is an American Multinational corporation, multinational technology company headquartered in Armonk, New York, and present in over 175 countries. It is ...
. 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
The Thomas J. Watson Research Center is the headquarters for IBM Research. Its main laboratory is in Yorktown Heights, New York, 38 miles (61 km) north of New York City. It also operates facilities in Cambridge, Massachusetts and Albany, ...
, 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), Jonathan 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
BSD licenses are a family of permissive free software licenses, imposing minimal restrictions on the use and distribution of covered software. This is in contrast to copyleft licenses, which have share-alike requirements. The original BSD licen ...
. Since then, the project's lead developer has been Tim Daly.
In 2007, Axiom was
forked twice, originating two different
open-source
Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use and view the source code, design documents, or content of the product. The open source model is a decentrali ...
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
www.nongnu.org/axiom
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 ListBug 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
www.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
Literate programming (LP) is a programming paradigm introduced in 1984 by Donald Knuth in which a computer program is given as an explanation of how it works in a natural language, such as English, interspersed (embedded) with snippets of macr ...
technique is used throughout the source code. Axiom plans to use proof technology to prove the correctness of the algorithms (such as
Coq
Coenzyme Q10 (CoQ10 ), also known as ubiquinone, is a naturally occurring biochemical cofactor (coenzyme) and an antioxidant produced by the human body. It can also be obtained from dietary sources, such as meat, fish, seed oils, vegetables, ...
and
ACL2).
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 (such as
rings,
fields
Fields may refer to:
Music
*Fields (band), an indie rock band formed in 2006
* Fields (progressive rock band), a progressive rock band formed in 1971
* ''Fields'' (album), an LP by Swedish-based indie rock band Junip (2010)
* "Fields", a song by ...
,
polynomial
In mathematics, a polynomial is a Expression (mathematics), mathematical expression consisting of indeterminate (variable), indeterminates (also called variable (mathematics), variables) and coefficients, that involves only the operations of addit ...
s) as well as data structures from computer science (e.g.,
list
A list is a Set (mathematics), set of discrete items of information collected and set forth in some format for utility, entertainment, or other purposes. A list may be memorialized in any number of ways, including existing only in the mind of t ...
s,
tree
In botany, a tree is a perennial plant with an elongated stem, or trunk, usually supporting branches and leaves. In some usages, the definition of a tree may be narrower, e.g., including only woody plants with secondary growth, only ...
s,
hash tables
In computer science, a hash table is a data structure that implements an associative array, also called a dictionary or simply map; an associative array is an abstract data type that maps Unique key, keys to Value (computer science), values. ...
).
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(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
In some programming languages, function overloading or method overloading is the ability to create multiple functions of the same name with different implementations. Calls to an overloaded function will run a specific implementation of that f ...
).
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
Type inference, sometimes called type reconstruction, refers to the automatic detection of the type of an expression in a formal language. These include programming languages and mathematical type systems, but also natural languages in some bran ...
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
Emacs (), originally named EMACS (an acronym for "Editor Macros"), is a family of text editors that are characterized by their extensibility. The manual for the most widely used variant, GNU Emacs, describes it as "the extensible, customizable, s ...
, as well as a plugin for the
TeXmacs
GNU TeXmacs is a scientific word processor and typesetting component of the GNU Project. It originated as a variant of GNU Emacs with TeX functionalities, though it shares no code with those programs, while using TeX fonts. It is written and maint ...
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. 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.
See also
*
A# programming language
*
Aldor programming language
*
List of computer algebra systems
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* Source code repositories
GNU SavannahJenks, 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