|
|
This article's external links may not follow Wikipedia's content policies or guidelines. Please improve this article by removing excessive or inappropriate external links. (June 2009) |
| This article needs additional citations for verification. Please help improve this article by adding reliable references. Unsourced material may be challenged and removed. (June 2009) |
| Developer(s) | independent group of people |
|---|---|
| Operating system | cross-platform |
| Type | computer algebra system |
| License | modified BSD License |
| Website | Axiom homepage |
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.
Contents |
History
Axiom has been in development since 1971[1], 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 and given its current name. In 2001 it was withdrawn from the market and released to Tim Daly, the project lead developer, under the Modified BSD License.
In 2007, Axiom was forked into two different open source projects: OpenAxiom, and FriCAS.
The latest release is November 24, 2009
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 Programers Guide -- Guided examples of program writing (incomplete)
- Volume 4: Axiom Developers Guide -- Short essays on developer-specific topics (incomplete)
- Volume 5: Axiom Intepreter -- 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 11: Axiom Browser -- Source pages for Axiom Firefox browser front end
- Volume 12: Axiom Crystal -- Source code for Axiom Crystal front end (incomplete)
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.[2]
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).
Design
In Axiom, all objects have a type. Examples of types are mathematical structures (such as rings, fields, polynomials) 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
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, somewhat similar to OOP.
The extension language Axiom comes with is 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.
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 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.
See also
References
- ^ Axiom Homepage
- ^ "Axiom Computer Algebra System Information Sources," jgg899, YouTube, November 30, 2008.
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
- OpenAxiom website. OpenAxiom SourceForge.net project page.
- FriCAS website. FriCAS SourceForge.net project page.
|
|||||||||||||||||
This entry is from Wikipedia, the leading user-contributed encyclopedia. It may not have been reviewed by professional editors (see full disclaimer)




