Collatz Conjecture was solved 2022/01/01 ・・・Really?

You can confirm it with your own eyes!

スパイラル1

Now Collatz Tree Generator V1.1.5 is available here for free.

The newest release Collatz Tree Generator V1.1.5

The ZIP package includes a PDF manual in it but you can READ the manual FIRST!

Collatz Tree Generator Manual (online PDF) 18 pages

This tiny program (200KB) contains 5 functions.

  1. Generate a regular Collatz tree of an arbitrary size (degree x height) and output the adjacency list of the tree in CSV file format
  2. Output the branch order sequence of an arbitrary odd number
  3. Output the odd number at an arbitrary position on the Collatz tree designated by a branch order sequence
  4. Output the adjacency list of a truncated Collatz subtree of which end node is designated by a branch order sequence.
  5. Verify the Collatz tree structure on which the Collatz Tree Generator is entirely based by testing every odd number in a designated range.

The first function “Collatz Tree Generator” implies that the Collatz Conjecture was essentially solved already. The last function “Verification” tests this premise. We are curious about if our solution would fail in the Verification Test. Please try those functions and make us informed with the result.

Current maximum odd number passed the Verification: 
2483029087

Start the Verification from 2483029089 and send the result to us. We will update this information every morning.

GeoGraphを使い始める

GeoGraphに「ナムの三角形作図」を投稿した.

https://www.geogebra.org/m/etvryqed

使い方はまだよく分からないが,最強のツールであることは明らかだ.ICAROSでやりたかったこと,あるいはそれ以上のことが実現されていると言ってもよい.GeoGebraはラテンアメリカ系のサイトだが,Googleと繋がっているのだろうか?Googleクラスルームに割り当てるということができるようだ.

GeoGraphはBYJU’Sというインドの教育機関と繋がっている.GeoGebraは南米系と思い込んでいたが,本社はオーストリアのリンツにあり,Markus Hohenwarterという人物が経営している.BYJU’Sと繋がっているというより,買収されたと見た方がよいかもしれない.BYJU’Sというのは元々は数学の教師集団だったようなのだが… 一応BYJU’Sは多分ネットワーク通信教育が本業と思われるが,NPOという位置付けでよいようだ.かなりの資金は中国から流入している模様だ.

GeoGraphのページはHTMLに埋め込むことができるので,「テスト投稿」としてアップロードしてみた.昨日見たときは真っ白で何も表示されていなかったのだが,今日は図面が表示されていて,ドラッグなどの操作もできるようになっている.あるいは,画面の余白部分しか見えていなかったためかもしれない.一つ面倒なことがある.このページを離れようとすると,以下のパネルが出てくることだ.

image

保存できれば,保存して移りたいのだが,どこにもそれらしきコマンドは見当たらない.これは一般公開されている記事だが,おそらく「共有」としているためだろう.GeoGraphの公開されているページはほとんど編集権を所有者に限定しているみたいなので,「共有」設定にしていること自体がイレギュラーなのだろう.

GeoGebraにはオフラインで使えるアプリがいくつかある.

  1. GeoGebraスィート
  2. 関数グラフ
  3. 空間図形
  4. 幾何
  5. 数式処理(CAS)
  6. 全機能統合版・クラシック6
  7. 全機能統合版・クラシック5

多分項1のスィートというのは,「全機能統合版」の最新版ということではないかと思う.とりあえず,これをインストールしてみよう.⇒これを使うのは「作業」になってしまうと思われるので,開発機にインストールした方がよいかもしれない.開発機にはメモリ16GBが搭載されているが,こちらには4GBしか載っていない.ディスクも開発機には京単位の外付けが繋がっている.⇒開発機にスィートをインストールした.これでローカルでもGeoGraphが使えるようになったが,いま,ネット上にあるデータをアプリに移すにはどうしたらよいのだろう?いや,それはすでにやっている.SDCにGeoGebraというフォルダを作ってそこに落としてある.

部分群の属性をテーブルで表示する

台集合の属性リストをマトリックス表示できるようになった.もう少し手を入れるところはあるが,先に部分群表を出すところを片付けてしまおう.部分群表というのは現在部分群のダンプとしているところをマトリックスに整形表示するというものだ.

S4<3,7>を選択してフロック分解で配列の範囲外の例外が発生した.例外はフロック現数のカウントで起きている.フロック部分群検定ではD集合という配列を管理している.対象となる部分群の位数は12でフロック配列はこのサイズで作られているが,元表[9].フロック番号には16という値が入っているため,障害が発生する.

S4<3,7>は部分群検定で生成・登録された部分群だが,元表などを初期化していないのではないだろうか?フロック番号は最初のフロック分解で設定されているはずだが…⇒部分群を新規生成する場合には,元表を渡さないようにした.ただし,これでも不一致は発生する.追加登録で事後にノードを追加しているためだ.部分群の追加というところで元表を再計算することにする.

S4の部分群表を表示した後,台集合出力しようとして置換積に変換で停止した.引数のarrayが空で呼び出されている.元属性表の作成を実行しているところで,置換構成は空ではないため元g.置換を置換積に変換しようとしているのだが…単位元に置換が設定されていないのではないか?⇒かなりよい動きになってきた.

部分群表で同型の部分群の個数を表示するようにしたい.部分群の追加のところでこの値は算出されているので,どこかに保存しておけばよい.また,台集合のリストは{}で囲む必要はない.DataGridViewでは,末尾の一行は行追加のために予約されているようで,カラムを指定してソートしても,最後の行が残ってしまう.テーブルのサイズを1大きくして余分な行を表示するようにしたらまともな動作になった.

群表では番号は1発進になっている.元表でも同様にした方がよいのではないか?ただの表示なので特に問題ないはずだ.もともと元.番号に0が入っているのが問題なのではないか?ただし,単位元はフロック〇と呼んでいるようにすでに番号〇として認識されているかもしれない.単位元の現番号は〇でよいのではないだろうか?冪零などという話も出てくるので… とりあえず,現状のままとしておこう.

元の属性をテーブル(マトリックス)表示

乗積表出力で以下のエラーになった.

image

多分,フォームを閉じてしまったのだと思う.Form3のFormClosingでイベントをキャンセルして,隠蔽するようにした.乗積表出力を再度押せば,元の位置に開かれる.本体画面の上半分にテキストボックス表示して,久留島喜内の道具箱のような作りにしてみた.①群のダンプと②部分群のダンプが表示される.

image

これだけでも十分役に立つと思われるが,これを乗積表のようにマトリックス表示してみたい.多分ずっと見易くなると思われるが,マトリックス表示する最大の利点は列でソートできるという点だ.これができると一つの情報を色々な角度から分析できるのでとても有用だと思う.ただし,元表と部分群表を出すとすれば,乗積表だけ別画面というのもおかしいので,また元に戻すということになるだけでなく,少なくとも3種のテーブルを切り替えて同時に開くことができなくてはならないだろう.そのためにはタブが必要になってくる.一応タブの準備はできた.ともかく台集合を出してみよう.⇒乗積表を主画面に戻した.

image

乗積表を別のウィンドウで開く

乗積表を参照する機会が増えているが,小さいウィンドウ枠の中でスクロールして見るのは煩わしい.逆にコンソール画面には乗積表などの大きいデータを表示しないとすれば,道具箱の枠内に表示するのでもよいような気がする.という趣旨でコンソールをアプリ画面に埋め込むことを試してみたが,うまくゆかなかった.その代わり,乗積表を新しいフォームを開いて外部で見るように仕様変更してみた.乗積表を外に出したのでアプリ画面は手のひらサイズになってしまったが,将来的にはスマホ搭載などということも考えられるので,悪い設計ではないような気もする.コンソールとアプリ画面をドッキングできるようにしておくというのも一つの方法かもしれない.

image

フロック〇という特殊フロックを考える

フロック集合から始めるフロック部分群検定というのを試しているところだがかなりいい線まで来ている.A4では位数4×1を除けばすべての部分群が生成できている.A4<d,i>というのはかなり特殊な部分群で成分はすべてフロック〇から来たものだ.フロック〇だけで群を組むというのは試してもよいような気はする.⇒一発で位数4の極大部分群が生成できた.A5では新たな部分群は生成されなかった.

現時点では■群A5は31個のフロック部分群を持つ■ 位数2X15 位数3X10 位数5X6となっている.■群A5は57個の真部分群を持つ■ 位数2X15 位数3X10 位数4X5 位数5X6 位数6X10 位数10X6 位数12X5 となっているので,位数4X5 位数6X10 位数10X6 位数12X5 は未生成ということになる.31個のフロック部分群というのは,A5の極小部分群検定で素群数31個としているのと一致する.つまり,フロック部分群≡素群と言ってよさそうだ.しかし,この数字はS4では一致しない.群S4は16個の素群を持つ■ 位数2X9 位数3X4 位数4X3となっているが,フロック部分群は13個しか出てこない.■群S4は13個のフロック部分群を持つ■ 位数2X9 位数3X4 つまり,位数4X3がまるきり落ちている.

S4の位数4×3というのはすべてフロック〇の元のみで構成されている.つまり,フロック〇の元をすべて含むのではなく,それらの組み合わせによって部分群となっている.また,それよりも大きくなるとフロック〇とそれ以外という組み合わせが出てくるようになる.これらの組み合わせは「部分群の合成」というところで見るしかないので,ここでは扱わないことにするが,フロック部分群≡素群というところだけは確立しておきたい.ここまで来るとどうしてもフロック〇の詳細化というのを避けることはできないように思われる.

その前に,「べきは同一フロック」という修正を入れてしまおう.x^2=yのとき,xとyを不可分とするという論理だ.S4のフロック分解を実行して例外が発生した.上記の修正に関わるものと思われる.⇒とりあえず,例外をスローして処理を続行する.これはフロック〇の扱いに関係しているので,その部分を手当しないと解決できない.

フロック〇の構成について考える.単位元とつながる元集合をすべてフロック〇にまとめて収容しているが,ここにも構造があり,小さなフロックを構成していると考えられるので,それらが反映できるような構成にする必要がある.つまり,フロック〇の中をさらに小フロックに分割しなくてはならない.現行ではフロックリストというのは同一フロックに属する元のリストであり,それぞれの代表元の位置に置かれて,その元の番号で呼ばれるようになっている.考えられるのは,フロック〇のフロックリストにはそれぞれの代表元が入り,その元はその位置で自分のリストを管理するという方式だが,整理できるだろうか?

まず,一旦フロック〇という構成を忘れて(単位元を無視して),フロックリストを生成し,その中で単位元につながるものだけを拾い出して単位元に繋げればよいのではないだろうか?つまり,通常の操作では単位元フロックというのは無視されていて,何か必要なときだけ参照されるという感じだ.多分これなら混乱なくさばけるのではないかと思う.単位元位置のフロック〇も代表元のリストとして構成できるから,まったく同じデータ構造で間に合うはずだ.ただし,フロックの移動などの操作では同じにはならないが…

べき表はすでに使われなくなっているはずなので,削除しておこう.⇒いや,使われている.元表の作成で参照されている.これは,いまの処理にも関係する.当面温存しておくしかない.一応フロック〇の分離ができた.動作は悪くないような気がする.S4ではこれまで取れなかった#4×3が取れるようになった.S5でもこれまでの41から46に5個増加した.ただし,#4×15の増加とともに,#3×10が全滅という逆転が起きている.S5は66個の素群を持つとされ,特に位数6×10というのがまったく取れていない.⇒フロック検定を書き直さなくてはならない.

フロック検定の冒頭でフロック〇の元をすべて集めた部分群を作っているので,同等操作となるように書換えたが.A4では部分群にならない.位数が16という部分群はS4には存在しない.S4で位数2の部分群9個が6個に減少してしまった.これは,従来論理で単位元とフロック〇の元で作る位数2の部分群というのを代表元の下の元をすべて含むように書換えたためだ.であるとすれば,これらのフロックは間違っているということになるのではないか…

フロック部分群検定を実装する

どうも進捗が思わしくない.どうも極大検定から入ったのが敗因だったようだ.極小検定から入っていれば,もう少し進んでいたはずだ.極小検定には極大検定で出てくるような組み合わせの問題は発生しない.まず,最初に単独のフロックから生成される群を選り分けて見ることにしよう.これをフロック部分群検定と呼ぶことにする.⇒実装した.

これはかなりよい.A4の位数3の部分群を4個すべて切り出してきた.これまでのやり方ではどうしても出てこなかったものだ.フロック類にはまだお宝が秘匿されている.フロック番号0のグループだ.このグループに属する元と単位元から位数2の部分群が生成されるはずだ.A4では7個のフロック部分群が生成された.位数2X3 位数3X4.

A4の部分群検定でエラーが発生した.追加登録で例外が発生している.⇒余計な修正が入っていた.乗積表の生成で配列サイズをケチって現物サイズに収めようとしたためだ.動的に伸長する場合があり,ギリギリサイズでは例外が発生する.

A4の部分群検定で生成される部分群は全部で8個,位数2X3 位数3X4 位数4X1だから,フロック群生成で生成できなかったのは,位数4×1だけということになる.A5の場合,■群A5は57個の真部分群を持つ■ 位数2X15 位数3X10 位数4X5 位数5X6 位数6X10 位数10X6 位数12X5 ということになっている.フロック分解ではこのうちの25個を生成した.■ 位数2X15 位数3X10.これはA5の部分群のうち,位数2と3のものの総数だ.つまり,フロック分解によって任意の群について位数2と3の部分群は完全に生成可能ということだ.

これはおそらくすべての素群を含むと考えてよいのではないだろうか?A4の素群は7個であり,これはフロック分解で生成された部分群の個数に一致する.A5の場合,素群の総数は31でこの中には位数5X6というのが含まれている.これは現在のところまだフロック分解では生成できていない.少なくともフロック分解は現行の極小部分群検定をカバーできるものでなくてはならないだろう.

極小部分群検定にフロックを導入するのは容易だが,もう少しフロック独自のコンテキストで考えてみたい.位数5の部分群には以下がある.

[31] 群A5:<23> 位数5 フロック=1 2^1=2〈23〉 素群 極小 可換 巡回 自己同型 {e,23,54,38,31} [0,23,31,23,31]
[32] 群A5:<18> 位数5 フロック=1 2^1=2〈18〉 素群 極小 可換 巡回 自己同型 {e,18,46,26,56} [0,18,46,18,46]
[33] 群A5:<16> 位数5 フロック=1 2^1=2〈16〉 素群 極小 可換 巡回 自己同型 {e,16,32,48,45} [0,16,32,16,32]
[34] 群A5:<20> 位数5 フロック=1 2^1=2〈20〉 素群 極小 可換 巡回 自己同型 {e,20,42,50,34} [0,20,34,20,34]
[35] 群A5:<21> 位数5 フロック=1 2^1=2〈21〉 素群 極小 可換 巡回 自己同型 {e,21,58,25,44} [0,21,44,21,44]
[36] 群A5:<17> 位数5 フロック=1 2^1=2〈17〉 素群 極小 可換 巡回 自己同型 {e,17,35,36,57} [0,17,35,17,35]

フロックで見ると,単位元を別として,位数2の2つのフロックの対になっている.[23, 31], [18, 46], [16, 32], [20, 34], [21, 44], [17, 35].これらのフロックの元はいずれも長さ5の巡回置換の形になっているが,これらの組み合わせは厳密なマッチングによるものと見られる.どのような仕組みでマッチングしているのか興味あるところだが,ちょっと見では解析できない.

いずれにしてもフロックの対を試してみればこれらを列挙することは可能であり,そのコストはそれほど大きなものではないので,十分許容できるものと思われる.フロック対以上の,たとえば3つ組などでも素群になるのかどうか?という辺りは調べる必要がある.

単独のフロックが群になるときは,そのフロック群を含む部分群は合成群になると考えられるから,素群の成分となるようなフロックはそれ自体では群を構成しないものと考えるべきだろう.このような観点からすると,フロックには①単独で群となるようなフロック,②単独では群とならず,複数のフロックの組み合わせによって初めて群となるもの,の別があると考えられる.これらは素群の成分と考えられるので,フロックを成分としてそれらが素群を構成するまでの組み合わせを試すという手順になるのではないだろうか?

おそらく,素群というのは成分フロックを集めたものになると考えられるので,集合の直和になっているのではないかという気がするのだが… どうだろうか?この点に関しては,極小部分群分解の結果を見てみればわかる.⇒確かにそのようだ.

A4のフロック検定中に群の検査で落ちる.⇒共役変換検定でエラーが起きている.⇒検定中に台集合をいじるというのはやはり差し支えがある.⇒フロック現数のカウント関数の仕様を変更し,引数で台集合(のコピー)を渡すようにした.

A5のフロック検定でフェーズⅡまで進んだ段階で単位元を除いて12個のフロックが残っている.これらを対にすると6個の部分群が生成され,完全に片がつくことになる.⇒完璧だ.S4の場合は2×9, 3×4で13個までしか取り出せていない.極小部分群検定では#4×7のうち,3個は素群であると認定している.S4ではフェーズⅡとⅢでまったく変化がない.以下はS4の位数4の部分群のリストだ.

[14] 群S4:<17> 位数4 フロック=1 2^1=2〈17〉 合成群 極小 可換 巡回 自己同型 {e,17,7,22} [0,17,0,17]
[15] 群S4:<9> 位数4 フロック=1 2^1=2〈9〉 合成群 極小 可換 巡回 自己同型 {e,9,16,18} [0,9,0,9]
[16] 群S4:<10> 位数4 フロック=1 2^1=2〈10〉 合成群 極小 可換 巡回 自己同型 {e,10,23,13} [0,10,0,10]
[17] 群S4:<1,6> 位数4 フロック=1 2^1=2〈1,6〉 合成群 可換 巡回 自己同型 {e,1,6,7} [0,0,0,0]
[18] 群S4:<2,21> 位数4 フロック=1 2^1=2〈2,21〉 合成群 可換 巡回 自己同型 {e,2,21,23} [0,0,0,0]
[19] 群S4:<5,14> 位数4 フロック=1 2^1=2〈5,14〉 合成群 可換 巡回 自己同型 {e,5,14,16} [0,0,0,0]
[20] 群S4:<7,16> 位数4 フロック=1 2^1=2〈7,16〉 合成群 正規部分群 可換 巡回 自己同型 {e,7,16,23} [0,0,0,0]

どうもかなり厄介な話になってきた.すべてフロック0が関係している.逆に言えば,フロック0を取ることができれば解決する.ただし,フロック0は1箇所にまとめて放り込んであるので,このままではかなりコストが掛かってしまう.逆に言えば,フロックゼロの内容をもっと詳細化(階層化)しなくてはならない.これは原理的にはそれほど難しい話ではないので,やるしかないだろう.

フロック検定でストックに追加されないのはなぜか?登録されるためには,部分群名称という配列が用意されていなくてはならない.⇒部分群の登録という処理を実行する必要がある.A4では位数2と3の部分群がそれぞれ登録された.A5では#2, #3, #5×2の計4個が登録された.

A5では位数5の部分群が6個生成されている.これらは[16, 32], [17, 35], [18, 46], [20, 34], [21, 44], [23, 31]という組み合わせになっているが,これらは実際は2つで一つのフロックだったのではないだろうか?つまり,何かまだフロックとなる条件で見つかっていないものがあるのではないか?この2つのフロックはあるノードのべき順路で繋がっている.ただし,巡回路ではなくeに収束するコースだ.[16, 32]の場合,16→ 32→ 45→ 48→ e となる.

この中には2つのべきループ(16, 48), (32, 45)があるため分離しているが,一つのフロック(というより一つの群)となるべきものだろう.これは結局,べき順路は無差別に連結してよいということだろうか?x^2=yを見るのがよいのかもしれない.


フロック類という概念は導入されたものの…

フロック類という概念は導入されたものの,極大部分群検定の進捗は思わしくない.まだフロックグラフというものをうまくハンドリングできていないように思われる.どうすればよいか?フロックリストは群を生成した時点で作られるもので,不変と考えられるから動的な変化はフロック表に反映されなくてはならないだろう.フロック表はループカウントごとに作り直しているのだから,完全なものができなくてはおかしい.つまり,削除されたフロックの分小さくなっていなくてはならない.フロック表はフロック数を基準に生成されているが,これを実態を反映した動的なものに変える必要がある.

フロックという整数配列でフロック番号とインデックスの変換ができるようにした.また,フロック現数というパラメータでカウントを押さえるようにしたので,正確なコントロールができるようになっているものと思われるが,成績は芳しくない.A4では位数4を一つ,A5では全滅している.群A5は57個の真部分群を持つ■ 位数2X15 位数3X10 位数4X5 位数5X6 位数6X10 位数10X6 位数12X5.少なくとも位数12の部分群は取り出せなくてはならない.

A5:<1,3> 位数12という部分群を見ると, [0,5,5, 0,22,22, 0,29,29, 0,15,15]となっているので,{0, 5, 22, 29, 15}という5つのフロックから構成されていることがわかる.{e,5,9, 14,22,49, 55,51,29,  33,24,15}という構成なので,{1,2,3…}などの削除から入れるはずなのだが… フロックが参照する枝数が少ないなどの条件は部分群を構成するための十分な条件になっていない.同等のフロックがいくらでも存在し,それらを区別する理由がない.

結局,総当り検査をするしかなくなってしまう.温存されるべきフロックとこの[5, 15, 22, 29]には何か特異な点はあるだろうか?あるいは,これらの4フロックを結びつける何かの動機はあるだろうか?合計ではなく,最小枝数で見たらどうなるか?⇒どうもうまくゆかない.F16が真っ先にカットされるようだ.何かよほど巧妙なシナリオを考えないとうまくゆかないと思う.そのシナリオを書く素材が見つからない…2つのフロックF1, F2があるとき,F1F2=F3と言えるだろうか?

A4でフロック数=5, A5では23,S5では48になる.S5で48なら大したことはないように思えるが,もし総当りが必要ということになると,A4で2^5=32,A5で2^23=8388608,2^48= 281474976710656ということになり,尋常な話では済まなくなってくる.せめて,最大の部分群だけでも取り出せればよいのだが…

極大部分群検定をフロック類で解く

群の元集合をフロックと呼ぶ類に分割することができる.すでに実装して動いている.ほぼ完璧と言ってよい.あとはこれを極大部分群と極小部分群の検定に組み入れるだけだ.まず,極大部分群検定から始めよう.極大部分群検定では,フロック1個を削除したところから始めて,群になるまで繋がりのある元をフロック単位で削除するという操作になると考えられるが,この場合,乗積表に空いた穴を塞ぐために元対のどちらをカットすべきかという問題は残るような気がする.確かにフロックを一括解除しているので収束は早まるとは思われるが…ともかくフロックをまとめて解除するところまで作ってみよう.

フロックという同値類を導入したにも関わらず,極大部分群分解はクリーク分割問題になるというところは変化していないように思われる.最大のメリットは群グラフが簡約されて小さなものになっている点だけだ.ともかく,フロックを点とするグラフ=フロックグラフを書いてみるしかないのではないか?フロックグラフを描くためにはまず,その隣接行列が必要だ.これをフロック乗積表と呼んでおくことにする,

何かの理由でコンソールが『詰まる』場合があるようだ.画面がフリーズして何も操作できないので,コンソールに文字入力したら突然動き始めた.


群の台集合を『フロック(群れ)』と呼ぶ部分集合の直和に分割することに成功した

クリーク分割問題が解ければ極大部分群検定は解ける.しかし,クリーク分割問題はNP困難であり,NP完全と同等かそれ以上に難しい問題として知られている.しかし,極大部分群検定には一般の場合と比べいくつか有利な点があるので,それらを利用すればより効率的な解を得られる可能性はあると考えられる.解法を定式化してみよう.

  1. 群の乗積表はグラフの隣接行列とみなすことができる.このようなグラフを群グラフと呼んでおこう.群グラフはすべての点が繋がっているので,つねに完全グラフである.一つの乗積表を共有する部分群グラフが完全グラフであれば,そのグラフの頂点は群を構成する.
  2. 単位元はすべての部分グラフに共通し,必ず存在することが予定されているので,グラフから当初から除外して考える.つまり,群グラフは最大でもN-1点グラフである.
  3. 群には溶接された硬結な結節点が2種存在する.一つは逆数関係による固着,もう一つは自乗巡回路である.これらは一つの点を除去するとすべての点を除去するしかなくなるので,1個のブロックを形成している.従って,これらの元を合併して一つの点とみなすことができる.
  4. 今後はブロックを点に簡約したグラフを主に考える.これを簡約群グラフと呼んでおくことにしよう.また,以下ではブロックを簡約した点をフロックと呼ぶことにする.
  5. 簡約群グラフから頂点(強連結成分,flock)を一つ取り除いたグラフ上で最大の完全部分グラフ(クリーク)を見つけることがテーマとなる.
  6. フロックAを取り除くと,他のフロックBに影響する.x∈A, y,z ∈Bでx=yzであれば,xの除去によってy ないしzの除去が発生し,その結果フロックB全体が除去の対象となる.従って,Aを除去することにより,フロックBもドロップする.
  7. この操作をドロップが生じなくなるまで反復して得たグラフは連結した完全部分グラフであり,それらの元集合は1個の極大部分グラフを構成する.
  8. 極大グラフ検定はすべての個別フロックについてこれを反復することで完了する.つまり,フロック個数分の極大部分グラフ(おそらく同型のものを含め)が生成される.
  9. フロックはブロックではあるが,群ではない.最小のフロックサイズは1で,この場合は x^2=x であるか x^2=e のどちらかである.このようなフロックはローンウルフと呼ばれる.
  10. フロックはフロック番号によって管理される.フロック番号は群の生成時に決定され,元表に記入される.フロック番号はフロックの代表元の元番号であり,1以上の飛び番である.
  11. フロック数とフロック代表番号のリストは群で管理する.
  12. フロックは元集合の排他的な直和であり,群の集合配列を使って生成する.
  13. 極小部分群分解では個別ノード単位ではなく,フロック単位で分解を行う.
  14. 極大部分群分解では,フロック単位に元をドロップすることで部分群を構成する.
  15. このアルゴリズムが確立した後は自乗リスト(べき表)は不要になる.また,元の必須という属性も不要になる.
  16. ローンウルフを放置しておくと面倒くさいので,実装では一括して単位元の預かりとすることにした.

これで完璧なアルゴリズムが確立した.現行論理をこのアルゴリズムでカバーするのは難しくない.⇒極大部分群検定に入る前に,まずフロックの概念が正しいことを検証するためのコードを書いておこう.フロック元分割という関数を作って群のコンストラクタから呼び出すようにしてみたところ,驚くべき結果が出た.Q8の場合すべての元が一箇所に集まってしまう.こんなはずではなかったのだが… いや,やっていることが間違っている.最初にやるべきことは元とその逆数を一元化することであり,べきの関係ではない.