GAP (Groups, Algorithms and Programming) とは
GAP (ギャップ、Groups, Algorithms and Programming) は、群論、
アルゴリズム、
プログラミングに特化した、
計算機代数システムです。特に群を
計算機で扱うために開発され、数学の研究や教育現場で広く利用されています。
歴史
GAPの開発は、ドイツの
アーヘン工科大学の数学部D (Lehrstuhl D für Mathematik, LDFM) で始まりました。その後、
スコットランドのセント・アンドルーズ大学の数学情報科学部との共同開発が行われ、国際的な協力体制が築かれました。2005年夏には、開発拠点がセント・アンドルーズ大学、
アーヘン工科大学、ブラウンシュヴァイク工科大学、コロラド州立大学の4箇所に拡大し、より強固な開発体制が確立されました。
配布
GAPの配布パッケージには、ソースコードだけでなく、世界中のユーザーから提供されたプログラム、データライブラリ、詳細なマニュアルが含まれています。これらのパッケージはGPL (
GNU General Public License) に基づいて配布されており、誰でも自由に再配布、修正、利用することができます。GAPは
Unix系OSだけでなく、WindowsやmacOSなど、様々なプラットフォームで動作します。標準的な構成では約300MB、すべてのパッケージをインストールしても400MB程度のサイズであり、128MBのRAMがあれば十分に動作します。
GAPの大きな特徴の一つは、ユーザーからの寄贈による豊富なパッケージです。これらのパッケージは、GAPシステムの機能拡張や品質向上に貢献しており、その有用性は
査読プロセスによって厳格に評価されます。このプロセスは、学術論文の投稿と同様の厳密さで行われ、GAPの信頼性を高める要因となっています。2006年8月時点で、58のパッケージが配布されており、そのうち35のパッケージが
査読を通過しています。
また、GAPは別の
数式処理システムであるSINGULARとの連携機能も備えており、より高度な計算や研究を支援します。
使用例
GAPを起動すると、ターミナルまたは
DOSプロンプト上に "gap>" というプロンプトが表示され、命令を受け付ける状態になります。
命令文はセミコロン(";")で終了します。
GAPを終了するには、"quit;" と入力するか、Ctrl-Dを押します。
命令文を連続するセミコロン(";;")で終了すると、実行結果の出力が抑制されます。
単語の入力中にタブキーを押すと、キーワードが補完されます。
矢印キーを使用すると、過去に入力した命令文を編集して再実行できます。
直前に実行した命令文の結果は、"last"変数に格納されます。
命令文中の空白は無視されます。
シャープ("#")以降の文字列はコメントとして扱われます。
変数に値を代入するには、":=" 演算子を使用します。
"LoadTo("file1.log");" のように記述すると、実行ログをファイルに保存できます。
"Load("sonata");" のように記述すると、特定のパッケージをロードできます。
GAPの組み込み関数は大文字で始まるため、ユーザー定義の関数や変数は小文字で始めることで、名前の衝突を避けることができます。
以下に、GAPの使用例をいくつか示します。
gap
gap> G:=SmallGroup(8,1); # 変数 G を位数 8 の有限群(の一つ)と定義する。
gap> i:=IsomorphismPermGroup(G); # G から置換群への同型写像を得る。
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) ]
参考文献
星明考『群論序説』日本評論社、2016年 - 付録にGAPの紹介があります。
Joyner, David 著、川辺治之 訳『群論の味わい 置換群で解き明かすルービックキューブと15パズル』共立出版、2010年
Zalman Balanov et.al: Degree Theory and Symmetric Equations Assisted by GAP System: With a Special Focus on Systems with Hysteresis, AMS (2025年1月16日予定)
関連項目
GAP の遊び方 (PDF)
GAPを使ってみよう (PDF)
公式ウェブサイト(英語)
GAP から SINGULAR を使うためのインターフェイス
GGAP: GAP のフロントエンド