FormおよびFormTracerのWindows11へのインストール方法(備忘録)

Form ( https://github.com/vermaseren/form ) と FormTracer (https://arxiv.org/abs/1610.09331 or https://github.com/FormTracer/FormTracer )をWindows11にインストールする際，だいぶ沼ったので備忘録．
Cygwin -> apt-cyg (+make等) -> Form -> FormTracerの順でインストールしていく．
これらすべてをインストールしたことがないことを前提とする．

# Cygwinのインストール

1. https://www.cygwin.com/ から setup-x86_64.exe をダウンロードして実行．
2. 適当にポチポチして進める．
3. 途中でパッケージのインストール画面になるので，ここでwgetをインストールしておく．(PendingのところをFullにしてから，検索窓にwgetといれてでてくる"wget"の欄にskipになっているところを最新のバージョンにする．)
4. 同様にしてlibguile3.0_1もインストールしておく.
5. あとは適当にポチポチしてインストール完了画面まで行けば完了．

# apt-cyg + make等のインストール
( https://qiita.com/FSMS/items/68b5956301d987d1be2b と https://github.com/vermaseren/form/wiki/Installation を参照．)

1. さっきインストールしたCygwinを実行する．
2. ターミナルが開くので，まず
~~~
wget https://raw.githubusercontent.com/transcode-open/apt-cyg/master/apt-cyg
~~~
というコマンドを実行して，apt-cygをインストールする．
3. さらに
~~~
chmod 755 apt-cyg
mv apt-cyg /usr/local/bin/
~~~
というコマンドを実行して，apt-cygを/usr/local/bin/へ移動させる．
4. 最後に
~~~
apt-cyg update
apt-cyg install gcc-g++ libgmp-devel make ruby ruby-test-unit zlib-devel
~~~
というコマンドを実行して，apt-cygのアップデートを行った上でForm(Tracer)のインストールに必要なパッケージをインストールする．

# Formのインストール
( https://github.com/vermaseren/form/wiki/Installation を参照．)

1. Formの公式HP( https://github.com/vermaseren/form/releases )からFormの最新バージョン(記事作成時点では4.3.1)の"form-\<バージョン\>.tar.gz"をダウンロードする．
2. 解凍して適当なところに置く．"form-\<バージョン\>"というフォルダができる．
3. Cygwinを実行し，さっき作った"form-\<バージョン\>"下に移動し，以下のコマンドを実行する．エラーを吐かなければFormのインストールは完了．
~~~
./configure
make
make check
make install
~~~

# FormTracerのインストール
1. 適当なMathematicaノートブック(.nbファイル)を作成し，
~~~
Import["https://raw.githubusercontent.com/FormTracer/FormTracer/master/src/FormTracerInstaller.m"]
~~~
という内容のセルを作って実行する．
2. "cygwin1.dll"が見つからないとか"form.exe"が実行できないとかいうエラーが出るので，とりあえずキャンセルを押しまくる．
3. 当然インストールに失敗しているので以下のように対処すれば完了．

## "cygwin1.dll"が見つからないという内容のエラー
この時点で"C:\Users\UserName\AppData\Roaming\Mathematica\Application\FormTracer"といフォルダができているはず．
ここに"C:\cygwin64\bin"内にある"cygwin1.dll"をコピーする．(すでにあるものは上書きしてO.K.．)
もしFormTracerやcygwinのインストール先が違ったら，対応するものを探して同様にすれば大丈夫．

## "form.exe"が実行できないという内容のエラー
1. まず"C:\cygwin64\usr\local\bin"内にある
"form.exe"を，"C:\Users\UserName\AppData\Roaming\Mathematica\Application\FormTracer"にある"form.exe"へコピーして上書きする．
2. 次に上書きした
"C:\Users\UserName\AppData\Roaming\Mathematica\Application\FormTracer"内の"form.exe"を実行する．
3. 実行すると"*.dllが見つかりません．"という内容のエラーを吐きまくるので，その.dllファイルを探してきて，
"C:\Users\UserName\AppData\Roaming\Mathematica\Application\FormTracer"内にコピーする．
(参考までに，筆者は"cygz.dll"，"cygstdc++-6.dll"，"cyggmp-10.dll"，"cyggcc_s-seh-1.dll"がないと言われたが，これらは"C:\cygwin64\bin"内にあった．)
4."C:\Users\UserName\AppData\Roaming\Mathematica\Application\FormTracer"内の
"form.exe"を実行する．コマンドプロンプトが一瞬開き，エラーを吐かずに閉じれば対処完了.

# FormとFormTracerのテスト
( https://arxiv.org/abs/1610.09331 )を参照
1. 適当なMathematicaノートブックを作り
~~~
Needs["FormTracer`"]
~~~
という内容のセルを作って実行する．
2. ロードメッセージの最後の行に，
~~~
Using FORM <バージョン> (<リリース日時>) 64-bits
~~~
と出力されていれば，Formが正しくインストールされていることが確認できる．
3. さらに
~~~
DefineLorentzTensors[deltaLorentz[mu, nu], vec[p, mu], sp[p, q],eps[], deltaDirac[i, j], gamma[mu, i, j], gamma5[i, j]];
FormTrace[vec[p,nu]vec[q,rho]gamma[mu, i1,i2]
gamma[nu,i2,i3]gamma[rho,i3,i4]gamma[mu,i4,i1]]
~~~
という内容のセルを作成し実行する．
4. 結果として
~~~
16 sp[p,q]
~~~
が出力されれば，FormTracerが正しくインストールされていることが確認できる．