かなりいいところまで来ている.ツールとして十分実用になるレベルだ.同型判定に自信が持てるようになってきたので,群の検査を充実させれば次の課題である共役に移れそうなところまで来ているが,素群についてもう少し知りたいので,極大部分群と並立して極小部分群検定というのを導入しておくことにする.極小部分群というのは我々の用語では「素群」を意味するが,ここでは一般的な用語を使っておこう.
▲また,Console.WriteLine(“\n★極小部分群検定:”+Form1.Group.名称);でハングしている.タイミング的なものが関係しているのだろうか?今度は動いている.
極小部分群分解は一応動くようになった.かなり分かり易い.たとえば,A5は#3×10, #5×6で16この素群を持っているが,同型な部分群を除くと2個しかない.素群数をカウントしていない.⇒対処した.
◆群の検査で群が巡回群であるか否かを判定する.⇒素数位数の群は巡回群である.「自乗元とならない元が単位元を除き1個しかない群は巡回群である」と言えるかどうか?多分言えそうな気はする※.素数判定ルーチンを久留島喜内から持ってこなくてはならない.喜内では複数の素数判定ルーチンを持っている.IsPrimeはTotientFuncを使っている.FactoringSubでは因数分解を実行している.どちらも高速化するためにかなり技巧的なことをやっている.⇒こちらではそれほど大きな数を扱っていないので,簡単なルーチンで済ませることにしよう.
※位数3のA3は反例である.{e, 1, 2}のとき,1^2=2, 2^2=1で2乗元を持たない元の個数=0だが,この群は素数位数なので巡回群だ.逆にscount=0なら巡回群と言えるだろうか?この項目はちょっと保留ということにしておく.⇒巡回群の定義に従って修正した.
https://qiita.com/asksaito/items/76b71602dd956b79dbf7
▲S4の部分群分解を実行して部分群検定で停止した. (Count != 部分群数)になっている.Count = 28, 部分群数=29.おかしい.再現しなくなってしまった.⇒いや,再現できる.極小部分群の戻り値を部分群数から素群数に変えたためだ.素群数には単位群が含まれていないためだ.部分群数には単位群が含まれている.
◆DataGridViewに乗積表を出すことにしよう.乗積表が別に出せるようになると,コンソールもすっきりして見易く・使い易くなる.⇒久留島喜内のForm2を丸ごと移せば,ほとんどの機能がそのまま使える可能性があるので,コード変換を試みた.ネット上にも変換ツールは転がっているが,Code Converterというプラグインがあるので,インストールしてみた.かなりのエラーが発生する.コード部のエラーは手直しが効くが,デザイナー部のエラーは修復が難しい.どうせやるのなら,久留島喜内を丸ごとC#に移植した方が分かり易い.
ただし,これはかなりの大仕事になる.前回のELSIEですでにVB→C#変換というのは経験しているが,ELSIEはコンソールアプリなので修復も大した手間が掛からなかったが,道具箱はツールが満載のフォームなので作り直すしかないかもしれない.VBはもうじき廃盤になるという話もあるので,C#に移行しておくというのは正しい選択ではないか?