Many thanks to Max Horn and Stefan Kohl for the help and clarifications.

Sincerely, Sandeep.


On 18 Nov 2011, at 07:14, Max Horn wrote:

> Hi again,
> 
> here is a reply to part 1 of Sandeep's question:
> 
> Am 17.11.2011 um 10:57 schrieb Sandeep Murthy:
> 
>> Hello,
>> 
>> 1. I'm trying to construct bilinear maps f_m(K) for m x m matrix
>> multiplication over a field K, for small values of m, like 2, 3, 4.
>> 
>> I'm particularly interested in f_Q(3), and f_Q(4), where Q
>> is the field of rationals.  If T := Mat_Q(3) denotes the 3 x 3 matrix
>> Q-algebra, with standard basis, it should be possible to 
>> do this explicitly on GAP by constructing the direct sum 
>> S := Mat_Q(3) \otimes Mat_Q(3), a Q-algebra of dimension 18
> 
> Actually, it is a 9^2=81 dimensional algebra. The direct sum is 2*9=18 
> dimensional, but for a bilinear form you indeed want to study the tensor 
> product.
> 
> 
>> with standard basis, and then computing f_Q(3) as the
>> map f: S --> T by using AlgebraHomomorphismByImages( source, target, gens, 
>> imgs ).
>> However, I'm getting a "exceeded the permitted memory" error.
> 
> You discovered a bug in GAP itself, which we need to fix. Luckily, though, 
> you can avoid it, at least in this case. Instead of many words, let me show 
> you one possible way:
> 
> # Compute algebra and generators
> T:=FullMatrixAlgebra(Rationals, 3);;
> gensT:=GeneratorsOfAlgebra(T);;
> 
> # Compute S = T \otimes T by computing generators
> gensS:=ListX(gensT, gensT, KroneckerProduct);;
> S:=AlgebraWithOneByGenerators(Rationals, gensS);
> 
> # Compute hom from S to T on a basis of S
> basisT:=BasisVectors(Basis(T));;
> basisS:=ListX(basisT, basisT, KroneckerProduct);;
> imgs:=ListX(basisT, basisT, \*);;
> hom:=AlgebraHomomorphismByImages(S,T,Basis(S,basisS),imgs);;
> 
> 
> Note that the KroneckerProduct of two matrices is just their tensor product 
> (w.r.t. to the "standard" bases). So we can use that to construct the tensor 
> product algebra.
> 
> The crucial part is my use of the Basis() command. This is important because 
> the code underlying AlgebraHomomorphismByImages will do something different 
> if you don't define the morphism on a basis. Indeed, if the image of each 
> element in a basis is given, this makes it easy to evaluate a homomorphism. 
> The same is not true if one defines the homomorphism only a generating set 
> (or even if one defines it on a set of vectors that form a basis, but which 
> one has not marked as a basis). So in this case, GAP first tries to extend 
> the definition of the homomorphism to a basis; and it is this case which has 
> a bug. For example:
> 
>  hom:=AlgebraHomomorphismByImages(S,T,gensS,ListX(gensT, gensT, \*));;
> 
> leads to an endless loop (until memory overflows). This bug will be fixed in 
> the next GAP release.
> 
> 
> Best wishes,
> Max


_______________________________________________
Forum mailing list
[email protected]
http://mail.gap-system.org/mailman/listinfo/forum

Reply via email to