GAP (数式処理システム)

GAP (ギャップ、Groups, Algorithms and Programming) は計算機で群を扱うために開発された計算機代数システムである。

歴史 
アーヘン工科大学の数学部D (Lehrstuhl D für Mathematik, LDFM) で開発が始まり、その後スコットランドのセント・アンドルーズ大学の数学情報科学部と共同で開発が行われた。2005年の夏に開発拠点はそれぞれ同等の4カ所 (英セント・アンドルーズ大学、独アーヘン工科大学、 独ブラウンシュヴァイク工科大学、米フォート・コリンズのコロラド州立大学) に増やされた。

配布 
GAP の配布パッケージには、そのソースの他に、多くの利用者から寄贈されたプログラム、データライブラリ、マニュアルが含まれており、GPL にしたがって自由に再配布することができる。GAP はどの Unix系 OS でも実行でき、また Windows や macOS でも利用できる。GAP の標準的な構成では約 300 MB である (すべてのパッケージをインストールする場合は 400 MB である)。GAP を実行するには、RAM は 128 MB あれば十分である。

利用者の寄贈によるパッケージにより多くの機能が提供されており、これは GAP の大きな特徴の一つであると言える。開発者の元に送られてきたパッケージは査読プロセスにより GAP システムの機能や品質向上に有用かどうかが判断される。パッケージの作成者が論文を投稿する場合と同じである。2006年8月現在、GAP の配布パッケージにはそういったパッケージが 58 含まれており、35 のパッケージが査読を経たものである。

GAP からSINGULAR を使うためのインターフェイスが用意されている。

使用例 
GAP を端末エミュレータやDOSプロンプトから起動すると、プロンプト “gap> ” が表示され命令を受け付ける。
命令文はセミコロン（“;”）で終了する。
GAPを終了するには“quit;”または Ctrl-D を入力する。
命令文を連続するセミコロン（“;;”）で終了すると応答の出力が抑制される。
単語の入力途中でタブを入力するとキーワードが補完される。
矢印キーにより以前に入力された命令文を編集して再入力できる。
最後に入力された命令文の出力結果は “last”変数に記憶される。
命令文の空白は無視される。
シャープ（“#”）以降の文字列はコメントと見なされる。
変数に値を代入するには “:=”を使用する。
“LoadTo("file1.log");”のようにしてログをファイルに保存できる。
“Load("sonata");”のようにしてパッケージをロードすることができる。
組み込みの関数はアルファベットの大文字から始まるので、ユーザが定義する関数や変数はアルファベットの小文字から始まる文字列とすると名前の衝突が避けられる。
 gap> G:=SmallGroup(8,1); # 変数 G を位数 8 の有限群（の一つ）と定義する。
 <pc group of size 8 with 3 generators>
 gap> i:=IsomorphismPermGroup(G); # G から置換群への同型写像を得る。
 <action isomorphism>
 gap> Image(i,G); # i の下での G の像 - それらは im G の生成元を成す。
 Group([ (1,5,3,7,2,6,4,8), (1,3,2,4)(5,7,6,8), (1,2)(3,4)(5,6)(7,8) ])
 gap> Elements(Image(i,G)); # im G のすべての元を得る。
 [ (), (1,2)(3,4)(5,6)(7,8), (1,3,2,4)(5,7,6,8), (1,4,2,3)(5,8,6,7), 
   (1,5,3,7,2,6,4,8), (1,6,3,8,2,5,4,7), (1,7,4,5,2,8,3,6), (1,8,4,6,2,7,3,5) ]

脚注

参考文献 
 - 注釈：「付録　GAPを使ってみよう」に紹介文がある。

関連項目 

数式処理システムの一覧
Sage (数式処理システム) (GAP を利用している)

外部リンク 

 (英語)
GAP から SINGULAR を使うためのインターフェイス 
GGAP: GAP のフロントエンド

オープンソースソフトウェア
数式処理システム
C言語
Linux向け数式処理システム
数学に関する記事