Axiom (数式処理システム)

Axiom（アクシアム、公理を意味する英単語 axiom から）は、フリーソフトウェアの計算機代数システムである。システムには対話型実行環境、コンパイラとライブラリが含まれており、強力な型付けによる数学的な階層構造を持つ型を定義している。
開発の経緯.
Axiom の開発は1971年に始まった。開発は IBM で Richard Dimick Jenks の元で行われ、当時は Scratchpad という名前であった。開発には、バリー・トラガー (Barry Trager)、ステファン・ワット (Stephen Watt)、ジェームズ・ダベンポート (James Davenport)、ロバート・スター (Robert Sutor)、スコット・モリソン (Scott Morrison) が加わっていた。
1990年代に NAG が Scratchpad を買い取り、現在の名前 Axiom が付けられた（注：1992年に出た解説書中では一貫して名前は大文字の"AXIOM"と書かれている）。その後、2001年に商用製品としての販売は終了し、以降の開発、管理はティム・デイリー Tim Daly にゆだねられ、修正BSDライセンスの元で公開されている。
2007年にAxiom から2つのプロジェクトがフォーク（分岐）した。どちらもオープンソースプロジェクトであり、その一つの OpenAxiom は同年8月13日に発足し同年8月24日に最初のリリースを出している。もう一方の FriCAS 同年9月28日に最初のバージョンをリリースしている。
Axiom (本家) は数日から数週間おきにパッチの形でバージョンアップをしており、バージョン番号を振っていない。
文書化.
Axiom は文芸的プログラミングを指向している。Axiom のソースコードは複数の「巻 (volume)」に分かれており、Axiom の開発サイト で公開されている。各巻には Axiom の実際のソースコードが記述されている。
現在公開されているものは以下のとおりである。
解説動画.
Axiom プロジェクトでは文書化に重点を置いている。また近年は解説ビデオでプロジェクトに関するアナウンスが最初に行われている。その解説ビデオは Axiom の開発サイト で公開されている。その最初のビデオで Axiom の情報発信に関する詳細が述べられている。
開発方針.
Axiom の開発プロジェクトは「30年計画」で行われている。まず第一に、次世代の計算機を使う数学者にとって有用なソフトウェアとなるために必要な機能を実装することである。ドナルド・クヌースの文芸的プログラミング技法が Axiom のソースコード全体にわたって使われている。開発に当たっては、アルゴリズムの正しさを証明するために証明技術 (proof technology、Coq や ACL2 などのようなもの) を導入する予定である。
設計思想.
Axiom においては、オブジェクトはすべて型を持っている。型は数学的な「構造」であり、例えば環、体、多項式などがある。またデータ構造はリスト構造、木構造、ハッシュテーブルなど、計算機科学のものが実装されている。
関数は引数として型そのものを取ることができ、型はその返り値にもできる。たとえば codice_1 という関数は引数として codice_2 を取り、その引数の分数からなる体を返す。また、有理数からなる大きさ 4 × 4 の行列のなす環は codice_3 によって生成できる。その環での演算を行う場合、codice_4 は単位行列、codice_5 は codice_6 の逆行列 (存在する場合) であると解釈される。
複数の演算が同じ名前を持つことができ、それらはオブジェクト指向プログラミングの場合と同様、引数と求められる結果の型によって区別される。
Axiom の拡張言語として SPAD と呼ばれるものがある。Axiom に実装されている数学的な知識はすべて SPAD で書かれている。Axiom の対話的実行環境は、SPAD の概ね全てを理解する。
SPAD はかつて A#、続いて Aldor という名前で開発されていた。後者は現在も、SPAD の代わりに Axiom から使うことができる。しかし Axiom とは異なるライセンスで公開されている。
特徴.
対話的実行環境内では、型推定および発見的探索法を用いることで、多くの場合に明示的な型付けを行わなくても良いようになっている。
また 'HyperDoc' というウェブブラウザに似たヘルプ表示システムを持っており、二次元および三次元グラフィクスを表示して回転させたり明るくしたりすることができる。Emacs および TeXmacs でも Axiom モードが実装されている。
Axiom では初等関数の積分法として リッシュのアルゴリズム が実装されている (Manuel Bronstein および Barry Trager による)。