############################################################################# ## #W smalllie.gi Small nilpotent Lie algebras Csaba Schneider ## #W This file contains some functions to access the classifications #W of small-dimensional nilpotent Lie algebras over small fields. ## ## SMALL_LIE_DATA_FILE := "/home/csaba/Projects/NilpLie/Small/smallliealgdata.gi"; Read( SMALL_LIE_DATA_FILE ); ############################################################################# ## #F ReadStringToNilpotentLieAlgebra( ,

, ) ## ## Converts to a -dimensional nilpotent Lie algebra over the ## field of

elements. ReadStringToNilpotentLieAlgebra := function( string, p, dim ) local digits, d, sum, i, coeffs, no_coeffs, T, pos, a, b, scentry, r, q, L; digits := ['0','1','2','3','4','5','6','7','8','9', 'a','b','c','d','e','f','g','h','i','j', 'k','l','m','n','o','p','q','r','s','t', 'u','v','w','x','y','z','A','B','C','D', 'E','F','G','H','I','J','K','L','M','N', 'O','P','Q','R','S','T','U','V','W','X', 'Y','Z']; d := 62^(Length( string ) - 1 ); sum := 0; for i in string do sum := sum + (Position( digits, i )-1)*d; d := d/62; od; #Print( "number is ", sum, "\n" ); d := 1; while d*p <= sum do d := d*p; od; coeffs := []; repeat q := QuoInt( sum, d ); r := sum - q*d; Add( coeffs, q ); sum := sum - q*d; d := d/p; until d = 1/p; no_coeffs := Sum( Combinations( [1..dim], 2 ), x->(dim-x[2])); coeffs := Concatenation( List( [1..no_coeffs-Length( coeffs )], x->0 ), coeffs ); #Print( "Coeff list is: ", coeffs, "\n" ); T := EmptySCTable( dim, Zero( GF( p )), "antisymmetric" ); pos := 1; for a in Reversed([1..dim-1]) do for b in Reversed([a+1..dim]) do scentry := []; for i in Reversed( [b+1..dim] ) do Append( scentry, [One(GF(p))*coeffs[pos], i] ); pos := pos + 1; od; SetEntrySCTable( T, b, a, scentry ); #Print( b, " ", a, ": ", scentry, "\n" ); od; od; L := LieAlgebraByStructureConstants( GF(p), T ); Setter( IsLieNilpotent )( L, true ); return L; end; ############################################################################# ## #F SmallLieAlgebra( F, dim, no ) ## ## Returns the no-th Lie algebra with dimension dim over field F. ## SmallLieAlgebra := function( F, dim, no ) local list; if not [Size( F ), dim] in [ [2,2], [2,3], [2,4], [2,5], [2,6], [2,7], [2,8], [2,9], [3,2], [3,3], [3,4], [3,5], [3,6], [3,7], [5,2], [5,3], [5,4], [5,5], [5,6], [5,7]] then Error( "the requested Lie algebra is not contained in the database" ); fi; list := EvalString( Concatenation( "SmallLieAlgebras_DIM", String( dim ), "_GF_", String( Size( F )), "();" )); if no > Length( list ) then Error( "the requested Lie algebra does not exists with this dimension over this field" ); fi; return ReadStringToNilpotentLieAlgebra( list[no], Size( F ), dim ); end;