群論の可視化教材 (JavaScript programming for CGT)
@数学ソフトウェアとその効果的教育利用に関する研究
群論の可視化とは
ブラウザの計算力のみで具体例を計算
実際に理論通り計算できている様子を観察
ルービックキューブなどの 3D モデルに具体的に適用する
とにかく群論を身近に感じてもらえるようにしたい
JavaScript で Computational Group Theory を実装するには
置換群 -> Schreier-Sims
群の表示 -> coset enumeration
有限体上の行列群 -> 置換群に焼き直し, Schreier-Sims
有限生成アーベル群 -> 整数環上の行列の Smith normal form
お題目
4x4x4 の rubik's cube と 24 puzzle の solver の実際の動作
coset enumeration の実際の動作
Schreier-Sims の実装
Minkwitz の方法の実装
以上のブラウザ上の実装を紹介
Rubik's cube puzzle と 24 puzzle をやってみよう
よく知られているように, coset enumeration では, 群の位数だけの行数が必要となる
von Dyck 群 $D(l,m,n) = \langle a,b\ |\ a^l,\ b^m,\ (ab)^n\rangle$
一般に, $\frac{1}{l}+\frac{1}{m}+\frac{1}{n}>1$ $\Rightarrow$ $\sharp D(l,m,n)<\infty$
JavaScript の多倍長整数ライブラリ big-integer.js のみを利用した
自作数式処理ライブラリ
web ブラウザの計算能力のみで計算したい
2016年頃から作り始める
元々自身の知的探究と数式処理の教科書の勉強のためにJSを利用したことが動機
SymPy もライブラリを利用せず Python のみで書かれており, 目標が共通
具体的に何をしてきたのか
Rust と webassembly の習得
Minkwitz の論文では, 語の長さが主題であるにも関わらず, 群の表示や項書き換えについて触れていない
置換群 $G = \langle g_1,\cdots,g_m\rangle \leq \mathfrak{S}_{\Omega}$ から $G\simeq \langle x_1,\cdots,x_m | r_1,\cdots ,r_k\rangle$ となる表示を得る方法について掘り下げる
部分群の表示を与える Reidemeister-Schreier アルゴリズムの実装
Knuth-Bendix の項書き換えアルゴリズムの実装