Axiom computer algebra system
Encyclopedia
Axiom is a free
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 program
Literate 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:

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
Literate 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 rings
Ring (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 inference
Type 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 language
    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...

  • Aldor programming language
  • Comparison of computer algebra systems

External links



Software forks:
The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK