Dear Neha, You asked:
> Could you please tell me as to where can I find the code for the standard > RadicalOfAlgebra method in GAP?? I wanted to see the theory behind how it > computes the radical as I could not find a detailed documentation for it. The code for matrix algebras is in lib/algmat.gi; I also append it below. It contains a reference. For non-matrix algebras first a faithful representation is computed, and then the code for matrix algebras is used. Best wishes, Willem ############################################################################# ## #M RadicalOfAlgebra( <A> ) . . . . . . . . for an associative matrix algebra ## ## The radical of an associative algebra <A> defined as the ideal of all ## elements $x$ of <A> such that $x y$ is nilpotent for all $y$ in <A>. ## ## For Gaussian matrix algebras this is easy to calculate, ## for arbitrary associative algebras the task is reduced to the ## Gaussian matrix algebra case. ## ## The implementation of the characterisitc p>0 part is by Craig Struble. ## InstallMethod( RadicalOfAlgebra, "for associative Gaussian matrix algebra", true, [ IsAlgebra and IsGaussianMatrixSpace and IsMatrixFLMLOR ], 0, function( A ) local F, # the field of A p, # the characteristic of F q, # the size of F n, # the dimension of A ident, # the identity matrix bas, # a list of basis vectors of A minusOne, # -1 in F eqs, # equation set i,j, # loop variables G, # Gram matrix I, # a list of basis vectors of an ideal of A I_prime, # I \cup ident changed, # flag denoted if $I_i <> I_{i-1}$ in ideal sequence pexp, # a power of the prime p dim, # the dimension of the vector space where A acts on charPoly, # characteristic polynomials of elements in A invFrob, # inverse of the Frobenius map of F invFrobexp, # a power of the invFrob r, r_prime; # the length of I and I_prime # Check associativity. if not IsAssociative( A ) then TryNextMethod(); fi; if Dimension( A ) = 0 then return A; fi; F:= LeftActingDomain( A ); p:= Characteristic( F ); n:= Dimension( A ); bas:= BasisVectors( Basis( A ) ); if p = 0 then # First we treat the characteristic 0 case. # According to Dickson's theorem we have that in this case # the radical of `A' is $\{ x\in A \mid Tr(xy) = 0 \forall y \in A \}$, # so it can be computed by solving a system of linear equations. eqs:= List( [ 1 .. n ], x -> [] ); for i in [1..n] do for j in [i..n] do eqs[i][j]:= TraceMat( bas[i] * bas[j] ); eqs[j][i]:= eqs[i][j]; od; od; return SubalgebraNC( A, List( NullspaceMat( eqs ), x -> LinearCombination( bas, x ) ), "basis" ); else # If `p' is greater than 0, then the situation is more difficult. # We implement the algorithm presented in # "Cohen, Arjeh M, G\'{a}bor Ivanyos, and David B. Wales, # 'Finding the radical of an algebra of linear tranformations,' # Journal of Pure and Applied Algebra 117 & 118 (1997), 177-193". q := Size( F ); dim := Length( bas[1] ); pexp := 1; invFrob := InverseGeneralMapping(FrobeniusAutomorphism(F)); invFrobexp := invFrob; minusOne := -One(F); ident := IdentityMat( dim, F ); changed := true; I := ShallowCopy( bas ); # Compute the sequence of ideals $I_i$ (see the paper by Cohen, et.al.) while pexp <= dim do # These values need recomputation only when $I_i <> I_{i-1}$ if changed then I_prime := ShallowCopy( I ); if not ident in I_prime then Add( I_prime, ident ); fi; r := Length( I ); r_prime := Length( I_prime ); eqs := NullMat( r, r_prime, F ); charPoly := List( [1..r], x -> [] ); for i in [1..r] do for j in [1..r_prime] do charPoly[i][j] := CoefficientsOfUnivariatePolynomial( CharacteristicPolynomial( F, F, I[i]*I_prime[j] ) ); od; od; changed := false; fi; for i in [1..r] do for j in [1..r_prime] do eqs[i][j] := minusOne^pexp * charPoly[i][j][dim-pexp+1]; od; od; G := NullspaceMat( eqs ); if Length( G ) = 0 then return TrivialSubalgebra( A ); elif Length( G ) <> r then # $I_i <> I_{i-1}$, so compute the basis for $I_i$ changed := true; if 1 < pexp and pexp < q then G := List( G, x -> List( x, y -> y^invFrobexp ) ); fi; I := List( G, x -> LinearCombination( I, x ) ); fi; # prepare for next step invFrobexp := invFrobexp * invFrob; pexp := pexp*p; od; return SubalgebraNC( A, I, "basis" ); fi; end ); _______________________________________________ Forum mailing list Forum@mail.gap-system.org http://mail.gap-system.org/mailman/listinfo/forum