%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Chapter{The modular isomorphism problem}

An application of the methods in this package has been the checking
of the modular isomorphism problems for the groups of order dividing
$2^8$, $3^6$ and $2^9$ \cite{Eic07,EKo10}. This section contains the 
functions used for this purpose. 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Computing and checking bins}

\> BinsByGT( p, n ) F

returns a partion of the list $[1..NumberSmallGroups(p^n)]$ into 
sublists so that the modular group algebras of two groups 
SmallGroup($p^n$, $i$) and SmallGroup($p^n$, $j$) can not be
isomorphic if $i$ and $j$ are in different lists. The function
BinsByGT uses various group theoretic invariants to split the
groups of order $p^n$ in bins.

\> CheckBin( p, n, k, bin ) F

For $i \in bin$ let $G_i$ denote SmallGroup($p^n$, $i$) and let $A_i$
be the augementation ideal of $F G_i$. This function computes and
compares the canonical forms of the algebras $A_i / A_i^j$ for every
$i \in bin$ and increasing $j \in \{1, \ldots, k+1\}$. 

At each level $j$ it splits the current bins into sub-bins according 
to the different canonical forms of $A_i/A_i^j$. Bins of length 1 are 
then discarded.

The function returns if no further bins are available or if $j=k+1$ is
reached. In the later case the function returns the remaining bins. 

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\Section{Example for groups of order 64}

We show how to check the modular isomorphism problem for the groups
of order 64. We first use BinsByGT to determine bins and we then check
the first of the resulting bins with CheckBin. The fact that CheckBin
ends with an empty list of bins shows that all groups are splitted.

\beginexample
gap> bins := BinsByGT(2,6);
refine by abelian invariants of group (Sehgal/Ward) 
13 bins with 256 groups 
refine by abelian invariants of center (Sehgal/Ward) 
30 bins with 237 groups 
refine by lower central series (Sandling) 
32 bins with 127 groups 
refine by jennings series (Passi+Sehgal/Ritter+Sehgal) 
36 bins with 123 groups 
refine by conjugacy classes (Roggenkamp/Wursthorn) 
16 bins with 36 groups 
refine by elem-ab subgroups (Quillen) 
  start bin 1 of 16
  start bin 2 of 16
  start bin 3 of 16
  start bin 4 of 16
  start bin 5 of 16
  start bin 6 of 16
  start bin 7 of 16
  start bin 8 of 16
  start bin 9 of 16
  start bin 10 of 16
  start bin 11 of 16
  start bin 12 of 16
  start bin 13 of 16
  start bin 14 of 16
  start bin 15 of 16
  start bin 16 of 16
9 bins with 21 groups 
[ [ 13, 14 ], [ 18, 19 ], [ 20, 22 ], [ 97, 101 ], [ 108, 110 ], 
  [ 155, 157, 159 ], [ 156, 158, 160 ], [ 173, 176 ], [ 179, 180, 181 ] ]

gap> CheckBin(2,6,100,bins[1]);
compute tables through power series 
  determined table for 1
  determined table for 2

refine bin 
  weights yields bins [ [ 1, 2 ] ]
  layer 1 yields bins [ [ 1, 2 ] ]
  layer 2 yields bins [ [ 1, 2 ] ]
  layer 3 yields bins [ [ 1, 2 ] ]
  layer 4 yields bins [  ]
\endexample

