gap> ######################### BEGIN COPYRIGHT MESSAGE ######################### GBNP - computing Gröbner bases of noncommutative polynomials Copyright 2001-2010 by Arjeh M. Cohen, Dié A.H. Gijsbers, Jan Willem Knopper, Chris Krook. Address: Discrete Algebra and Geometry (DAM) group at the Department of Mathematics and Computer Science of Eindhoven University of Technology.

For acknowledgements see the manual. The manual can be found in several formats in the doc subdirectory of the GBNP distribution. The acknowledgements formatted as text can be found in the file chap0.txt.

GBNP is free software; you can redistribute it and/or modify it under the terms of the Lesser GNU General Public License as published by the Free Software Foundation (FSF); either version 2.1 of the License, or (at your option) any later version. For details, see the file 'LGPL' in the doc subdirectory of the GBNP distribution or see the FSF's own site: http://www.gnu.org/licenses/lgpl.html gap> ########################## END COPYRIGHT MESSAGE ##########################

gap> ### filename = "example03.g" gap> ### authors Cohen & Gijsbers gap> ### $Id: example03.g,v 1.8 2004/04/26 14:40:17 jwk Exp $

gap> ### THIS IS A GAP PACKAGE FOR COMPUTING NON-COMMUTATIVE GROBNER BASES gap> gap> ### Last change: August 22 2001. gap> ### amc

<#GAPDoc Label="Example03">
The order of the Weyl group of type E_6
In order to show how the order of a finite group of manageable size with a manageable presentation can be computed, we determine the order of the Weyl group of type E_6. This number is well known to be 51840.

First load the package and set the standard infolevel to 1 and the time infolevel to 2 (for more information about the info level, see Chapter ).

gap> LoadPackage("GBNP","0",false);; gap> SetInfoLevel(InfoGBNP,1); gap> SetInfoLevel(InfoGBNPTime,2);

Then input the relations in NP format (see ). They come from the presentation of the Weyl group as a Coxeter group. This means that there are six variables, one for each generator. We let the corresponding variables be printed as r_1, ..., r_6 by means of gap> GBNP.ConfigPrint(6,"r");

The relations are binomial and represent the group relations, which express that the generators are involutions (that is, have order 2) and that the orders of the products of any two generators is specified by the Coxeter diagram (see any book on Coxeter groups for details). The relations will be assigned to KI.

gap> k1 := [[[1,3,1],[3,1,3]],[1,-1]];; gap> k2 := [[[4,3,4],[3,4,3]],[1,-1]];; gap> k3 := [[[4,2,4],[2,4,2]],[1,-1]];; gap> k4 := [[[4,5,4],[5,4,5]],[1,-1]];; gap> k5 := [[[6,5,6],[5,6,5]],[1,-1]];; gap> k6 := [[[1,2],[2,1]],[1,-1]];; gap> k7 := [[[1,4],[4,1]],[1,-1]];; gap> k8 := [[[1,5],[5,1]],[1,-1]];; gap> k9 := [[[1,6],[6,1]],[1,-1]];; gap> k10 := [[[2,3],[3,2]],[1,-1]];; gap> k11 := [[[2,5],[5,2]],[1,-1]];; gap> k12 := [[[2,6],[6,2]],[1,-1]];; gap> k13 := [[[3,5],[5,3]],[1,-1]];; gap> k14 := [[[3,6],[6,3]],[1,-1]];; gap> k15 := [[[4,6],[6,4]],[1,-1]];; gap> k16 := [[[1,1],[]],[1,-1]];; gap> k17 := [[[2,2],[]],[1,-1]];; gap> k18 := [[[3,3],[]],[1,-1]];; gap> k19 := [[[4,4],[]],[1,-1]];; gap> k20 := [[[5,5],[]],[1,-1]];; gap> k21 := [[[6,6],[]],[1,-1]];; gap> KI := [k1,k2,k3,k4,k5,k6,k7,k8,k9,k10, > k11,k12,k13,k14,k15,k16,k17,k18,k19,k20,k21 > ];;

The relations can be shown with :

gap> PrintNPList(KI); r.1r.3r.1 - r.3r.1r.3 r.4r.3r.4 - r.3r.4r.3 r.4r.2r.4 - r.2r.4r.2 r.4r.5r.4 - r.5r.4r.5 r.6r.5r.6 - r.5r.6r.5 r.1r.2 - r.2r.1 r.1r.4 - r.4r.1 r.1r.5 - r.5r.1 r.1r.6 - r.6r.1 r.2r.3 - r.3r.2 r.2r.5 - r.5r.2 r.2r.6 - r.6r.2 r.3r.5 - r.5r.3 r.3r.6 - r.6r.3 r.4r.6 - r.6r.4 r.1^2 - 1 r.2^2 - 1 r.3^2 - 1 r.4^2 - 1 r.5^2 - 1 r.6^2 - 1

The Gröbner basis can now be calculated with :

gap> GB := SGrobner(KI);; #I number of entered polynomials is 21 #I number of polynomials after reduction is 21 #I End of phase I #I End of phase II #I End of phase III #I Time needed to clean G :0 #I End of phase IV #I The computation took 132 msecs. gap> PrintNPList(GB); r.1^2 - 1 r.2r.1 - r.1r.2 r.2^2 - 1 r.3r.2 - r.2r.3 r.3^2 - 1 r.4r.1 - r.1r.4 r.4^2 - 1 r.5r.1 - r.1r.5 r.5r.2 - r.2r.5 r.5r.3 - r.3r.5 r.5^2 - 1 r.6r.1 - r.1r.6 r.6r.2 - r.2r.6 r.6r.3 - r.3r.6 r.6r.4 - r.4r.6 r.6^2 - 1 r.3r.1r.2 - r.2r.3r.1 r.3r.1r.3 - r.1r.3r.1 r.4r.2r.4 - r.2r.4r.2 r.4r.3r.4 - r.3r.4r.3 r.5r.4r.5 - r.4r.5r.4 r.6r.5r.6 - r.5r.6r.5 r.4r.3r.1r.4 - r.3r.4r.3r.1 r.5r.4r.2r.5 - r.4r.5r.4r.2 r.5r.4r.3r.5 - r.4r.5r.4r.3 r.6r.5r.4r.6 - r.5r.6r.5r.4 r.4r.2r.3r.4r.2 - r.3r.4r.2r.3r.4 r.4r.2r.3r.4r.3 - r.2r.4r.2r.3r.4 r.5r.4r.2r.3r.5 - r.4r.5r.4r.2r.3 r.5r.4r.3r.1r.5 - r.4r.5r.4r.3r.1 r.6r.5r.4r.2r.6 - r.5r.6r.5r.4r.2 r.6r.5r.4r.3r.6 - r.5r.6r.5r.4r.3 r.4r.2r.3r.1r.4r.2 - r.3r.4r.2r.3r.1r.4 r.5r.4r.2r.3r.1r.5 - r.4r.5r.4r.2r.3r.1 r.6r.5r.4r.2r.3r.6 - r.5r.6r.5r.4r.2r.3 r.6r.5r.4r.3r.1r.6 - r.5r.6r.5r.4r.3r.1 r.4r.2r.3r.1r.4r.3r.1 - r.2r.4r.2r.3r.1r.4r.3 r.5r.4r.2r.3r.4r.5r.4 - r.4r.5r.4r.2r.3r.4r.5 r.6r.5r.4r.2r.3r.1r.6 - r.5r.6r.5r.4r.2r.3r.1 r.6r.5r.4r.2r.3r.4r.6 - r.5r.6r.5r.4r.2r.3r.4 r.5r.4r.2r.3r.1r.4r.5r.4 - r.4r.5r.4r.2r.3r.1r.4r.5 r.6r.5r.4r.2r.3r.1r.4r.6 - r.5r.6r.5r.4r.2r.3r.1r.4 r.6r.5r.4r.2r.3r.1r.4r.3r.6 - r.5r.6r.5r.4r.2r.3r.1r.4r.3 r.6r.5r.4r.2r.3r.4r.5r.6r.5 - r.5r.6r.5r.4r.2r.3r.4r.5r.6 r.5r.4r.2r.3r.1r.4r.3r.5r.4r.3 - r.4r.5r.4r.2r.3r.1r.4r.3r.5r.4 r.6r.5r.4r.2r.3r.1r.4r.5r.6r.5 - r.5r.6r.5r.4r.2r.3r.1r.4r.5r.6 r.5r.4r.2r.3r.1r.4r.3r.5r.4r.2r.3 - r.4r.5r.4r.2r.3r.1r.4r.3r.5r.4r.2 r.6r.5r.4r.2r.3r.1r.4r.3r.5r.6r.5 - r.5r.6r.5r.4r.2r.3r.1r.4r.3r.5r.6 r.6r.5r.4r.2r.3r.1r.4r.3r.5r.4r.6r.5r.4 - r.5r.6r.5r.4r.2r.3r.1r.4r.3r.5r.4r.\ 6r.5 r.6r.5r.4r.2r.3r.1r.4r.3r.5r.4r.2r.6r.5r.4r.2 - r.5r.6r.5r.4r.2r.3r.1r.4r.3r.\ 5r.4r.2r.6r.5r.4

The base of the quotient algebra can be calculated with , which has as arguments a Gröbner basis GB, a number of symbols 6 and a maximum terms to be found (here 0 is entered, for a full base) . Since it is very long we will not print it here.

gap> B:=BaseQA(GB,6,0);;

The dimension of the quotient algebra can be calculated with , the arguments are the Gröbner basis GB and the number of symbols 6. Since is set to 2, we get timing information from :

gap> DimQA(GB,6); #I The computation took 172 msecs. 51840

Note that the calculation of the dimension takes almost as long as calculating the base. Since we have already calculated a base B it is much more efficient to calculate the dimension with Length:

gap> Length(B); 51840
<#/GAPDoc>