Finite dimensional algebras can be described by structure contants tables. For nilpotent algebras it is not neccessary to store a full structure contants table. To use this feature, we introduce nilpotent structure constants tables or just nilpotent tables for short. These are used heavily throughout the package.
Let A be a finite-dimensional nilpotent associative algebra over a
field F. Let (b1, …, bd) be a weighted basis of A; that
is, a basis with weights (w1, …, wd) satifying that Aj = 〈bi | wi ≥ j 〉. Let
|
In a nilpotent table not all structure contants are readily available. The following function determines the structure constants for the product bi bj. If the global variable STORE is true, then the function stores the computed entry in the table.
GetEntryTable( T, i, j ) F
We consider two nilpotent tables as equal, if they would be equal if the full set of structure constants tables would be bound. The following function provides an effective check for this.
CompareTables( T1, T2 ) F
A nilpotent table contains redundant information and hence can be inconsistent. The next functions can be used to check this to some extend.
CheckAssociativity( T ) F
Checks that (bi bj) bk = bi (bj bk) for all i,j,k. Note that this may be time-consuming.
CheckCommutativity( T ) F
Checks whether T defines a commutative algebra and sets the entry com accordingly.
CheckConsistency( T ) F
Checks that wds and tab are compatible. This assumes that CheckAssociativity returns true.
All later described algorithms of this package assume that the tables considered are fully consistent.
gap> T := rec( dim := 3, fld := GF(2), rnk := 2, wgs := [ 1, 1, 2 ], wds := [ ,, [ 2, 1 ] ], tab := [] );; gap> T.tab[1] := [[0,0,0],[0,0,1]] * One(T.fld);; gap> T.tab[2] := [[0,0,1],[0,0,0]] * One(T.fld);; gap> GetEntryTable( T, 3, 1 ); [ 0*Z(2), 0*Z(2), 0*Z(2) ]
We provide functions to convert back and forth between algebras in the GAP sense and nilpotent tables.
AlgebraByTable( T ) F
NilpotentTable( A ) F
Note that the second function fails if A is not nilpotent.
For modular group algebras of p-groups, the group algebra itself is not nilpotent (as it contains a unit), but its Jacobson radial is. The following function determines a nilpotent table for the Jacobson radical.
NilpotentTableOfRad( FG ) F
gap> A := GroupRing(GF(2), SmallGroup(8,3)); <algebra-with-one over GF(2), with 3 generators> gap> NilpotentTableOfRad(A); rec( dim := 7, fld := GF(2), rnk := 2, tab := [ [ [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2) ], [ 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2) ], [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2) ], [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2) ], [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2) ], [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0 ], [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2) ] ], [ [ 0*Z(2), 0*Z(2), Z(2)^0, Z(2)^0, Z(2)^0, Z(2)^0, Z(2)^0 ], [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2) ], [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0, Z(2)^0 ], [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2) ], [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0 ], [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2) ], [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2) ] ],, [ [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2), 0*Z(2) ], [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2) ], [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), Z(2)^0 ], [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2) ], [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2) ], [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2) ], [ 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2), 0*Z(2) ] ] ], wds := [ ,, [ 1, 2 ],, [ 1, 4 ], [ 2, 4 ], [ 1, 6 ] ], wgs := [ 1, 1, 2, 2, 3, 3, 4 ] )
[Up] [Previous] [Next] [Index]
ModIsom manual