This is the webpage of the project The BMM symmetrising trace conjecture for groups G_{4}, G_{5}, G_{6}, G_{7}, G_{8}. The theory behind the conjecture and the algorithms behind the proof are better explained in the article of the same name, which can be found here.
Briefly put, we prove the aforementioned conjecture as follows: Let n ϵ {4, . . . , 8}.
Step 1: We find a suitable basis B_{n} for the generic Hecke algebra of G_{n} (with 1 ϵ B_{n}).
Step 2: We define the linear map τ , which takes the value 1 on 1 and 0 on all other elements of the basis.
Step 3: We calculate the matrix A := (τ (bb')) for all b, b' ϵ B_{n}.
Step 4: We check that A is symmetric and that the determinant of A is a unit.
Step 5: We check an extra condition for τ that ensures that this is indeed the trace of the BMM conjecture.
In order to deal with Step 3, we created a program in the language C++ which would write any product bb' as a linear combination of elements of the basis, with the coefficient of 1 being the corresponding entry of the matrix A. With the exception of G_{4}, this program was very timeconsuming, so we came up with an elaborate algorithm which makes use of the inductive nature of the basis in order to fill in the entries of the matrix A rowbyrow. Using inputs from the C++ program, we created a second program in SAGE which produced very quickly the matrix A and its determinant.

The special cases and the extra condition
The special cases are some equalities computed by hand which express a given element of the Hecke algebra as a sum of other elements in it. These cases together with the basis and the braid, positive and inverse Hecke relations are the inputs of the algorithm for the C++ program.
The extra condition mentioned in Step 5 states that τ (b^{−1}z^{Z(Gn)})= 0 for all b ϵ B_{n} \ {1}. The element z denotes a specific central element of the generic Hecke algebra .
Here you can find a short description of each of the Hecke algebras, the definition of z, the basis, the braid, positive and inverse Hecke relations, as well as the special cases and the proof of the extra condition: G_{4}, G_{5}, G_{6}, G_{7}, G_{8}.
 The algorithm implemented in C++
There exists a different C++ project for each of the 5 groups, although their general structure is similar. This project contains many different classes, each dedicated to the representation of different algebraic objects: braid words, linear combinations of braid words, etc. Various functions have been developed to work on these objects, from trivial ones, such as adding braid words or multiplying their coefficients, to more complex ones, such us finding all equivalent expressions of a braid word by using the braid relation. For more details on the implementation or to see the source code please contact Christina Boura.
 The algorithm implemented in SAGE
One can see that the two algebra generators of the Hecke algebra are always in the basis B_{n}. Let us denote them by g_{1} and g_{2}. We also have that the element z^{k} belongs to B_{n}, for k = 0, 1, . . . , Z(G_{n}) − 1. The inputs of the SAGE algorithm are the coefficients of the following elements when written as linear combinations of the elements of the basis. They are computed by the C++ algorithm.
– g_{1}b for all b ϵ B_{n}.
– g_{2}b for all b ϵ B_{n}.
– z^{Z(Gn)}.
Here are the SAGE programs for each group: G_{5}, G_{6}, G_{7}, G_{8}.
 The algorithm implemented in GAP3 and Mathematica
In the article we present another algorithm for the determination of the matrix A, which is easy to come up with but turned out to be computationally inefficient for the three larger groups. The program based on this algorithm produced the matrix A and checked the extra condition only for the groups G_{4}, G_{6} and G_{8}. However, as far as G_{8} is concerned, it could not simplify the entries of the matrix A enough to allow the calculation of the determinant. The algorithm makes use of the data on the Hecke algebras of complex reflection groups that are stored in the GAP3 package CHEVIE. It consists of GAP3 functions, but, in the end, we ran it on Mathematica, because it is faster and more efficient with large polynomials than GAP3.
You can find a brief manual of the program here.
There is a description of the GAP3 program for each group: G_{4}, G_{5}, G_{6}, G_{7}, G_{8}.
Here are the programs for each group: G_{4}, G_{5}, G_{6}, G_{7}, G_{8}.