Hadamard Search Package - Readme

Victor Alvarez Solano, Jose Andres Armario Sampalo, Maria Dolores Frau Garcia and Pedro Real Jurado
Departamento de Matematica Aplicada I, University of Seville (Spain).
20 August 2006

valvarez@us.es

Determining Hadamard matrices at a desired dimension is a very difficult task. Furthermore, the Hadamard conjecture about the existence of Hadamard matrices at every dimension multiple of 4 is still open. A new insight on the subject was provided by the tandem De Launey-Horadam in the early 90s, in terms of cocyclic Hadamard matrices. The term cocyclic refers to cocycles coming from the second group of cohomology. The main difficulty in this approximation is how to explicitly construct a basis for 2-cocycles. This question is significantly skipped with the use of the so-called homologial reduction method, provided a homological model for the given group is known. This package provides a means of explicitly constructing a basis for 2-cocycles on G from a homological model hG for G. Depending on the choice of the user, an exhaustive (which is only recommended for low dimensions) or heuristic search for cocyclic Hadamard matrices over G is then developed.

Loading the package HadamardSearch

The package `HadamardSearch` may be placed in folder:  "/Applications/Mathematica 5.2.app/AddOns/Applications"/.
I use the Get request and select initialization as a cell property such as:

<< HadamardSearch.m;

For questions or comments please email me at valvarez@us.es

Examples to use the package and possible tests

All the calculations about the homological model have been provided by the package "HomologyIteratedGroups" which has been developed by the author as well.

Let consider the dihedral group D_4t = Z_2t x_chi Z_2, for the dihedral action chi:Z_2 x Z_2t--->Z_2t given by chi[1,a]=  2t-a and _a_ otherwise. We consider the following ordering in D_4t: {0, 0},{0,1},{1,0},{1,1},{2,0},{2,1},...,{2t-1,0},{2t-1,1}.     Attending to this ordering, a matrix PR representing the group law in D_4t for t=4  is given by

PR=(({{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}, {2, 1, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3}, {3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1, 2}, {4, 3, 2, 1, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5}, {5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1, 2, 3, 4}, {6, 5, 4, 3, 2, 1, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7}, {7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 1, 2, 3, 4, 5, 6}, {8, 7, 6, 5, 4, 3, 2, 1, 16, 15, 14, 13, 12, 11, 10, 9}, {9, 10, 11, 12, 13, 14, 15, 16, 1, 2, 3, 4, 5, 6, 7, 8}, {10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 16, 15, 14, 13, 12, 11}, {11, 12, 13, 14, 15, 16, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}, {12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 16, 15, 14, 13}, {13, 14, 15, 16, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}, {14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 16, 15}, {15, 16, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14}, {16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1}}));

Assume that a basis for hG_1 is {{1,0},{0,1}}, a basis for hG_2 is {{2,0},{1,1},{0,2}} and a basis for hG_3 is {{3,0},{2,1},{1,2},{0,3}}. In these circumstances, a matrix representing F1 is

F1=(({{0, 0}, {0, 1}, {1, 0}, {1, 1}, {2, 0}, {2, 1}, {3, 0}, {3, 1}, {4, 0}, {4, 1}, {5, 0}, {5, 1}, {6, 0}, {6, 1}, {7, 0}, {7, 1}}));

\(\(\(A\)\(\ \)\(matrix\)\(\ \)\(representing\)\(\ \)\(F2\)\(\ \)\(is\)\(\ \)\)\)

F2=(({{0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 1}, {0, 1, 0}, {0, 1, 1}, {1, 2, 0}, {1, 2, 1}, {2, 3, 0}, {2, 3, 1}, {3, 4, 0}, {3, 4, 1}, {4, 5, 0}, {4, 5, 1}, {5, 6, 0}, {5, 6, 1}, {6, 7, 0}, {6, 7, 1}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {1, 0, 0}, {1, 0, 0}, {0, 0, 0}, {0, 0, 1}, {1, 1, 0}, {1, 1, 1}, {1, 2, 0}, {1, 2, 1}, {2, 3, 0}, {2, 3, 1}, {3, 4, 0}, {3, 4, 1}, {4, 5, 0}, {4, 5, 1}, {5, 6, 0}, {5, 6, 1}, {6, 7, 0}, {6, 7, 1}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {0, 0, 0}, {0, 0, 1}, {1, 1, 0}, {1, 1, 1}, {2, 2, 0}, {2, 2, 1}, {2, 3, 0}, {2, 3, 1}, {3, 4, 0}, {3, 4, 1}, {4, 5, 0}, {4, 5, 1}, {5, 6, 0}, {5, 6, 1}, {6, 7, 0}, {6, 7, 1}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {0, 0, 0}, {0, 0, 1}, {1, 1, 0}, {1, 1, 1}, {2, 2, 0}, {2, 2, 1}, {3, 3, 0}, {3, 3, 1}, {3, 4, 0}, {3, 4, 1}, {4, 5, 0}, {4, 5, 1}, {5, 6, 0}, {5, 6, 1}, {6, 7, 0}, {6, 7, 1}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {0, 0, 0}, {0, 0, 1}, {1, 1, 0}, {1, 1, 1}, {2, 2, 0}, {2, 2, 1}, {3, 3, 0}, {3, 3, 1}, {4, 4, 0}, {4, 4, 1}, {4, 5, 0}, {4, 5, 1}, {5, 6, 0}, {5, 6, 1}, {6, 7, 0}, {6, 7, 1}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {0, 0, 0}, {0, 0, 1}, {1, 1, 0}, {1, 1, 1}, {2, 2, 0}, {2, 2, 1}, {3, 3, 0}, {3, 3, 1}, {4, 4, 0}, {4, 4, 1}, {5, 5, 0}, {5, 5, 1}, {5, 6, 0}, {5, 6, 1}, {6, 7, 0}, {6, 7, 1}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {0, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {0, 0, 0}, {0, 0, 1}, {1, 1, 0}, {1, 1, 1}, {2, 2, 0}, {2, 2, 1}, {3, 3, 0}, {3, 3, 1}, {4, 4, 0}, {4, 4, 1}, {5, 5, 0}, {5, 5, 1}, {6, 6, 0}, {6, 6, 1}, {6, 7, 0}, {6, 7, 1}, {0, 0, 0}, {0, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {1, 0, 0}, {0, 0, 0}, {0, 0, 1}, {1, 1, 0}, {1, 1, 1}, {2, 2, 0}, {2, 2, 1}, {3, 3, 0}, {3, 3, 1}, {4, 4, 0}, {4, 4, 1}, {5, 5, 0}, {5, 5, 1}, {6, 6, 0}, {6, 6, 1}, {7, 7, 0}, {7, 7, 1}}));

\(\(\(A\)\(\ \)\(matrix\)\(\ \)\(representing\)\(\ \)\(M2\)\(\ \)\((d2)\)\(\ \)\(is\)\(\ \)\)\)

M2=(({{8, 0}, {-6, 0}, {0, 2}}));

A matrix representing M3 (d3) is

M3=(({{0, 0, 0}, {6, 8, 0}, {-6, -8, 0}, {0, 0, 0}}));

Now we may proceed to develope an exahustive search (this is only feasible for groups of low order, up to order 28).

HadamardSearch[PR, M2, M3, F1, F2, 1];

Now we develope a heuristic search, which will output a few (posibly one) cocyclic Hadamard matrices over the group.

HadamardSearch[PR, M2, M3, F1, F2, 2];