Axiom(アクシアム)は、自由ソフトウェアとして提供されている計算機代数システムです。その名前は、英語で公理を意味する "axiom" に由来します。
概要
Axiom は、対話型実行環境、コンパイラ、そして豊富なライブラリを備えています。最大の特徴は、強力な型付けによる数学的な階層構造を持つ型を定義できる点です。これにより、高度な数学的演算や数式処理を厳密かつ効率的に行うことが可能になります。
開発の経緯
Axiom の開発は1971年に IBM で始まり、Richard Dimick Jenks の下で "Scratchpad" という名前で進められました。バリー・トラガー、ステファン・ワット、ジェームズ・ダベンポート、ロバート・スター、スコット・モリソンといった優秀な開発者たちがプロジェクトに貢献しました。
1990年代には、NAG (Numerical Algorithms Group) が Scratchpad を買い取り、現在の "Axiom" という名称に変更されました。しかし、2001年に商用製品としての販売は終了し、以降はティム・デイリーに開発と管理が引き継がれ、修正
BSD[[ライセンス]]の元で公開されています。
2007年には、Axiom から2つのオープンソースプロジェクトがフォークしました。それが OpenAxiom と FriCAS です。OpenAxiom は
2007年8月13日に発足し、同年
8月24日に最初のリリースを行いました。一方、FriCAS は同年
9月28日に最初のバージョンを公開しています。
本家 Axiom は、現在も数日から数週間おきにパッチの形でバージョンアップが続けられています。ただし、バージョン番号は付与されていません。
ドキュメント
Axiom は、文芸的プログラミングの手法を重視しています。ソースコードは複数の "巻 (volume)" に分かれており、Axiom の開発サイトで公開されています。各巻には、Axiom の実際のソースコードが詳細に記述されています。
現在公開されている巻は以下の通りです。
Combined Table of Contents -- 目次
Volume 0: Axiom Jenks and Sutor -- 本文
Volume 1: Axiom Tutorial -- 簡潔な導入部
Volume 2: Axiom Users Guide -- ドメインの使い方の詳細な例 (未完)
Volume 3: Axiom Programers Guide -- Axiom プログラミング入門 (未完)
Volume 4: Axiom Developers Guide -- 開発に際して (未完)
Volume 5: Axiom Intepreter -- 対話的実行環境のソースコード (未完)
Volume 6: Axiom Command -- システム・コマンドとスクリプトのソースコード (未完)
Volume 7: Axiom Hyperdoc -- X11 の Hyperdoc ヘルプ・ブラウザのソースコードと解説
Volume 7.1 Axiom Hyperdoc Pages -- Hyperdoc 文書のソースコード
Volume 8: Axiom Graphics -- X11 グラフィクス・サブシステムのソースコード
Volume 9: Axiom Compiler -- Spad コンパイラのソースコード (未完)
Volume 10: Axiom Algebra Implementation -- 実装にあたってのいくつかの問題 (未完)
Volume 10.1: Axiom Algebra Theory -- 数学的な背景
Volume 10.2: Axiom Algebra Categories -- Axiom に実装されている圏 (category) のソースコード
Volume 10.3: Axiom Algebra Domains -- Axiom に実装されている連結開集合 (定義域 domain)のソースコード
Volume 10.4: Axiom Algebra Packages -- Axiom パッケージのソースコード
Volume 11: Axiom Browser -- Axiom の Firefox のためのフロントエンドのソースコード
Volume 12: Axiom Crystal -- Axiom の Crystal のためのフロントエンドのソースコード (未完)
Axiom プロジェクトは、ドキュメントの整備に力を入れており、近年では解説ビデオも公開されています。これらのビデオは、Axiom の開発サイトで視聴できます。
開発方針
Axiom の開発プロジェクトは、長期的な視点に立ち "30年計画" で進められています。目標は、次世代の計算機を利用する数学者にとって不可欠なソフトウェアとなることです。ドナルド・クヌースの文芸的プログラミング技法が、Axiom のソースコード全体に適用されています。また、開発においては、アルゴリズムの正しさを保証するために、Coq や ACL2 などの証明技術の導入も計画されています。
設計思想
Axiom では、すべてのオブジェクトが型を持ちます。型は、環、体、多項式といった数学的な構造を表します。また、リスト構造、木構造、ハッシュテーブルなど、計算機科学における一般的なデータ構造も実装されています。
関数は、引数として型そのものを受け取ることができ、型を返すことも可能です。例えば、`Fraction` という関数は、`IntegralDomain` を引数として取り、その引数の分数からなる体を返します。また、有理数からなる 4 × 4 の行列の環は、`SquareMatrix(4, Fraction Integer)` によって生成できます。この環における演算では、`1` は単位行列、`A^-1` は `A` の逆行列(存在する場合)として解釈されます。
複数の演算が同じ名前を持つことができ、オブジェクト指向プログラミングと同様に、引数と求められる結果の型によって区別されます。
Axiom の拡張言語として SPAD があります。Axiom に実装されている数学的な知識は、すべて SPAD で記述されています。Axiom の対話的実行環境は、SPAD のほぼすべての構文を理解します。
SPAD は、かつて A#、続いて Aldor という名前で開発されていました。Aldor は現在も SPAD の代替として Axiom から利用できますが、Axiom とは異なるライセンスで公開されています。
特徴
Axiom の対話的実行環境では、型推論と発見的探索法により、多くの場合、明示的な型指定を省略できます。
また、ウェブブラウザに似たヘルプシステム "HyperDoc" を搭載しており、2次元および3次元グラフィックスを表示し、回転や明るさの調整が可能です。Emacs および TeXmacs 用の Axiom モードも提供されています。
さらに、Axiom は、初等関数の積分法としてリッシュのアルゴリズムを実装しています(Manuel Bronstein および Barry Trager による)。
参考文献
Richard D. Jenks and Robert S. Sutor: "AXIOM The Scientific Computation System", Springer-Verlag, ISBN 0-387-97855-0, ISBN 3-540-97855-0 (1992).
関連項目
数式処理システムの一覧
外部リンク
Axiom 公式ホームページ (英語)
派生プロジェクトのホームページ (英語)
OpenAxiom ホームページ
*
FriCAS ホームページ