Axiom computer algebra system
Encyclopedia
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, mathematically (mostly) correct type hierarchy.
In the 1990s it was sold to NAG
and given its current name. In 2001 it was withdrawn from the market and re-released under the Modified BSD License. Since then, the project lead developer has been Tim Daly.
In 2007, Axiom was forked
into two different open-source
projects: OpenAxiom, and FriCAS.
. The source code is becoming available in a set of volumes which are available on the
The currently available documents are:
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).
, fields
, polynomial
s) as well as data structures from computer science (e.g., lists, tree
s, hash tables).
A function can take a type as argument, and its return value can also be a type. For example,
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. SPAD was further developed under the name A#
and later Aldor. The latter can still be used as an alternative extension language. It is, however, distributed under a different license.
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 specialised 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.
Software forks:
Free software
Free software, software libre or libre software is software that can be used, studied, and modified without restriction, and which can be copied and redistributed in modified or unmodified form either without restriction, or with restrictions that only ensure that further recipients can also do...
, general-purpose computer algebra system
Computer algebra system
A computer algebra system is a software program that facilitates symbolic mathematics. The core functionality of a CAS is manipulation of mathematical expressions in symbolic form.-Symbolic manipulations:...
. It consists of an interpreter environment, a compiler and a library, which defines a strongly typed, mathematically (mostly) correct type hierarchy.
History
Axiom has been in development since 1971, originally as Scratchpad by researchers at IBM under the direction of Richard Dimick Jenks. Other key early developers were Barry Trager, Stephen Watt, James Davenport, Robert Sutor, and Scott Morrison.In the 1990s it was sold to NAG
Numerical Algorithms Group
The Numerical Algorithms Group is a software company which provides methods for the solution of mathematical and statistical problems, and offers services to users of HPC systems. Its products and services are employed by tens of thousands of users from Global 500 companies, universities,...
and given its current name. In 2001 it was withdrawn from the market and re-released under the Modified BSD License. Since then, the project lead developer has been Tim Daly.
In 2007, Axiom was forked
Fork (software development)
In software engineering, a project fork happens when developers take a legal copy of source code from one software package and start independent development on it, creating a distinct piece of software...
into two different open-source
Open-source software
Open-source software is computer software that is available in source code form: the source code and certain other rights normally reserved for copyright holders are provided under a software license that permits users to study, change, improve and at times also to distribute the software.Open...
projects: OpenAxiom, and FriCAS.
Documentation
Axiom is a literate programLiterate programming
Literate programming is an approach to programming introduced by Donald Knuth as an alternative to the structured programming paradigm of the 1970s....
. 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.1 Axiom Hyperdoc Pages -- Source code for Hyperdoc pages
- Volume 8: Axiom Graphics -- Source code for X11 Graphics subsystem
- 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)
- Bibliography: Axiom Bibliography -- Literature references
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 theaxiom-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 programmingLiterate programming
Literate programming is an approach to programming introduced by Donald Knuth as an alternative to the structured programming paradigm of the 1970s....
technique is used throughout the source code. Axiom plans to use proof technology to prove the correctness of the algorithms (such as Coq
Coq
In computer science, Coq is an interactive theorem prover. It allows the expression of mathematical assertions, mechanically checks proofs of these assertions, helps to find formal proofs, and extracts a certified program from the constructive proof of its formal specification...
and ACL2).
Design
In Axiom, all objects have a type. Examples of types are mathematical structures (such as ringsRing (mathematics)
In mathematics, a ring is an algebraic structure consisting of a set together with two binary operations usually called addition and multiplication, where the set is an abelian group under addition and a semigroup under multiplication such that multiplication distributes over addition...
, fields
Field (mathematics)
In abstract algebra, a field is a commutative ring whose nonzero elements form a group under multiplication. As such it is an algebraic structure with notions of addition, subtraction, multiplication, and division, satisfying certain axioms...
, polynomial
Polynomial
In mathematics, a polynomial is an expression of finite length constructed from variables and constants, using only the operations of addition, subtraction, multiplication, and non-negative integer exponents...
s) as well as data structures from computer science (e.g., lists, tree
Tree (data structure)
In computer science, a tree is a widely-used data structure that emulates a hierarchical tree structure with a set of linked nodes.Mathematically, it is an ordered directed tree, more specifically an arborescence: an acyclic connected graph where each node has zero or more children nodes and at...
s, 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 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. SPAD was further developed under the name A#
A Sharp (Axiom)
A# is an object-oriented functional programming language distributed as a separable component of Version 2 of the Axiom computer algebra system. A# types and functions are first-class values and can be used freely in conjunction with an extensive library of data structures and other mathematical...
and later Aldor. The latter can still be used as an alternative extension language. It is, however, distributed under a different license.
Features
Within the interpreter environment, Axiom uses type inferenceType inference
Type inference refers to the automatic deduction of the type of an expression in a programming language. If some, but not all, type annotations are already present it is referred to as type reconstruction....
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 specialised interaction mode for Emacs
Emacs
Emacs is a class of text editors, usually characterized by their extensibility. GNU Emacs has over 1,000 commands. It also allows the user to combine these commands into macros to automate work.Development began in the mid-1970s and continues actively...
, as well as a plugin for the TeXmacs editor.
Axiom has an implementation of the Risch algorithm
Risch algorithm
The Risch algorithm, named after Robert Henry Risch, is an algorithm for the calculus operation of indefinite integration . The algorithm transforms the problem of integration into a problem in algebra. It is based on the form of the function being integrated and on methods for integrating rational...
for elementary integration, which was done by Manuel Bronstein and Barry Trager.
See also
- A# programming languageA Sharp (Axiom)A# is an object-oriented functional programming language distributed as a separable component of Version 2 of the Axiom computer algebra system. A# types and functions are first-class values and can be used freely in conjunction with an extensive library of data structures and other mathematical...
- Aldor programming language
- Comparison of computer algebra systems
External links
- Axiom Homepage
- Homepage hosting all descendents of the original project
- Jenks, R.D. and Sutor, R. "Axiom, The Scientific Computation System"
- Daly, T. "Axiom Volume 1: Tutorial"
Software forks: