81.6 CreateHeckeBasis

CreateHeckeBasis(basis, ops)

creates a new basis for Hecke algebras in which to do computations. (The design of this function has benefited from conversation with Andrew Mathas, the author of the package Specht).

The first argument basis must be a unique (different from that used for other bases) character string. The second argument ops is a record which should contain at least two fields, ops.T and ops.(basis) which should contain :

ops.T:
a function which takes an element in the basis basis and converts it to the T basis.

ops.(basis):
a function which takes an element in the T basis and converts it to the basis basis.

After the call to CreateHeckeBasis, a new field (basis) is added to HeckeAlgebraOps which contains a function to create elements of the basis basis. These elements will have the standard operations for Hecke elements: +, -, *, ^, =, Print, Coefficient, plus all extra operations that the user may have specified in ops. It is thus possible to create a new basis which has extra operations. In addition, for any already created basis y of the algebra, the function (y) will have the added capability to convert elements from the basis basis to the y basis. If the user has provided a field ops.(y) , the function found there will be used. Otherwise, the function ops.T will be used to convert our basis element to the T basis, followed by calling the function (y) which was given in ops at the time the y basis was created, to convert to the y basis. The following forms of the Basis function will be accepted (as for the T basis):

Basis( H, basis )( perm )

Basis( H, basis )( perms, coeffs)

Basis( H, basis )( list )

Basis( H, basis )( s1, .. , sn )

One should note, however that for the last two forms only reduced expressions will be accepted in general.

Below is an example where the basis t_w=q^{l(x)/2}T_w is created and used. Here we have set v=q^{1/2}. As an example of an extra operation in ops, we have given a method for BetaInvolution. If methods for one of BetaInvolution, AltInvolution are given they will be automatically called by the generic functions with the same name. Here we have set BetaInvolution to use the same method as used by T basis elements.

In order to understand the following code, one has to recall that an arbitrary Hecke element is a record; the basis elements are labeled by the Coxeter group elements in the component elm and the corresponding coefficients in the component coeff. For efficiency reasons, it is necessary to describe the conversion functions on such arbitrary Hecke elements and not just for one basis element T_w or t_w.

    gap> CreateHeckeBasis( "t", rec(
    > T := h->Basis( Hecke(h), "T" )( h.elm, List( [1 .. Length( h.elm )], 
    >  i->Hecke(h).sqrtParameter[1]^CoxeterLength( 
    >              CoxeterGroup( Hecke(h) ), h.elm[i] ) *  h.coeff[i] ) ),
    >
    > t := h->Basis( Hecke(h), "t" )( h.elm, List( [1 .. Length( h.elm )],
    >  i->Hecke(h).sqrtParameter[1]^-CoxeterLength( 
    >               CoxeterGroup( Hecke(h) ), h.elm[i] ) * h.coeff[i] ) ),
    >
    > BetaInvolution := h->Basis( Hecke( h ),"t")( 
    >                     HeckeAlgebraOps.T.BetaInvolution( 
    >                             Basis( Hecke( h ), "T" )( h ) ) ) ) );
    gap> v := X( Rationals );; v.name := "v";; 
    gap> H := Hecke( CoxeterGroup( "A", 3 ), v ^ 2, v );;
    gap> h := Basis( H, "t" )( 3, 1, 2 );
    t(1,3,2)
    gap> h1 := Basis( H, "T")( h );
    v^3T(1,3,2)
    gap> h2 := Basis( H, "t" )( h1 );
    t(1,3,2)
    gap> BetaInvolution( h2 );
    v^-12t(2,1,3) 

This function requires the package "chevie" (see RequirePackage).

Previous Up Top
Index

GAP 3.4.4
April 1997