Lambdaの数学/物理ノート

趣味で数学/物理を勉強しよう!

GAP (Groups, Algorithms, Programming)を使ってみる【インストール編】

GAPとは

ある群が与えられた時にその群の部分群を求めたり、位数を指定してその位数の有限群を求めたりする、というのは代数の教科書でもおなじみですよね。

それでふと思ったんです。

そういう計算をコンピュータにさせることはできないか、と。

これは面白そうだと思い、そういう計算をさせるコードを書いてみようかとも思ったんですが、いやこれが既にあるみたいなんですよね。

その名もGAP

www.gap-system.org

コンピュータ上で群を扱うための計算システムのようですね。

名称の由来はGroups, Algorithms, Programmingの頭文字のようです。

Wikipediaにも日本語版の記事があります。

ja.wikipedia.org

今回はそのGAPをインストールしたというお話です。

インストール方法

基本的には上記の公式サイトからDownloadsへと進み、最新版を落とせばいいです。

私がMacユーザであるため、以下ではLinux/macOSを前提として進めます。

  1. GAP公式サイトへ:https://www.gap-system.org/index.html
  2. Downloadsをクリック
  3. (特に理由がなければ)最新版を選択(2021年7月時点ではGAP 4.11.1 (March 2021)となっている)
  4. Linux and OS Xgap-4.11.1.tar.gzをダウンロードし、適当なディレクトリ上で解凍。gap-4.11.1というディレクトリができます
  5. そのディレクトリの中にREADME.mdというファイルがあるので、これにならって作業を進めましょう

READMEの中身(macOS、Homebrew利用の場合)

GCCやClangといったCコンパイラC++コンパイラが利用できることは前提です。

ターミナル上で

brew install autoconf libtool gmp readline

を実行したのち、該当ディレクトリに移動して

./autogen.sh
./configure --with-readline=/usr/local/opt/readline
make

を順に実行です。

ところがmakeでエラーが...

上記手順で進めると、make実行時、以下のようなエラーが返されました。

g++: error: unrecognized command-line option '-Wmissing-variable-declarations'; did you mean '-Wmissing-declarations'?
make: *** [obj/src/collectors.lo] Error 1

-Wmissing-variable-declarations-Wmissing-declarationsというのはC/C++のオプションのようですね。

エラーメッセージから判断するに-Wmissing-variable-declarations-Wmissing-declarationsに変更すればよさそうに思えます。

make時のエラーということなので、ディレクトgap-4.11.1内のGNUmakefileを見てみました。

すると確かに-Wmissing-variable-declarationsと記述されている箇所があります。そこで-Wmissing-variable-declarations-Wmissing-declarationsに書き換えてから再度makeしました。

その結果……

一応、上手くいきました(しかし大量のwarningが現れます。これでいいのか……?)

その後、該当ディレクトリ上で

sh bin/gap.sh

を実行し、以下のような表示が出たらOKです。

┌───────┐   GAP 4.11.1 of 2021-03-02
 │  GAP  │   https://www.gap-system.org
 └───────┘   Architecture: x86_64-apple-darwin20.3.0-default64-kv7
 Configuration:  gmp 6.2.1, GASMAN, readline
 Loading the library and packages ...
 Packages:   AClib 1.3.2, Alnuth 3.1.2, AtlasRep 2.1.0, AutoDoc 2020.08.11, AutPGrp 1.10.2, CRISP 1.4.5, Cryst 4.1.23, CrystCat 1.1.9, CTblLib 1.3.1, FactInt 1.6.3, FGA 1.4.0, GAPDoc 1.6.4, 
             IRREDSOL 1.4.1, LAGUNA 3.9.3, Polenta 1.3.9, Polycyclic 2.16, PrimGrp 3.4.1, RadiRoot 2.8, ResClasses 4.7.2, SmallGrp 1.4.2, Sophus 1.24, SpinSym 1.5.2, TomLib 1.2.9, TransGrp 3.0, 
             utils 0.69
 Try '??help' for help. See also '?copyright', '?cite' and '?authors'