[GAP Forum] Constructing bilinear maps for matrix multiplication

Stefan Kohl stefan at mcs.st-and.ac.uk
Thu Nov 17 12:43:03 GMT 2011


Dear Forum,

Lisette Brillemans wrote:
>> 2. Also, I don't understand the behaviour of the
>>
>> IsAlgebraWithOne( algebra )
>>
>> function.  For example, I have defined
>>
>> gap> A := FullMatrixAlgebra( Rationals, 3 );
>> ( Rationals^[ 3, 3 ] )
>>
>> This is an algebra with One( A ) = [ [1,0,0], [0,1,0], [0,0,1]].  However,
>> when I construct the direct S = sum A \otimes A by
>>
>> gap> S := DirectSumOfAlgebras( A, A );
>> <algebra over Rationals, with 6 generators>
>>
>> This has the unit
>>
>> gap> One( S );
>> [ [ 1, 0, 0, 0, 0, 0 ], [ 0, 1, 0, 0, 0, 0 ], [ 0, 0, 1, 0, 0, 0 ], [ 0, 0, 0, 1, 0, 0
>> ], [ 0, 0, 0, 0, 1, 0 ],
>>  [ 0, 0, 0, 0, 0, 1 ] ]
>>
>> however, IsAlgebraWithOne( S ) is returning false:
>>
>> gap> IsAlgebraWithOne( S );
>> false
>>
>> Sincerely, Sandeep.
>
> It's just this kind of things that surpise me as well. In one of my
> earlier posts a few days ago I stated that
>
> ListX(Combinations(a,2),Combinations(a,2),\>,pair); works but
>
> ListX(Combinations(a,2),Combinations(a,2),\<,pair); doesn't.
>
> (of course a and pair are defined separately)
>
> Which is unlogical as well.
>
> Your IsAlgebraWithOne(S); should be true of course.

Regarding \< and \>: it is a > b if and only if b < a, so GAP needs only
one of the operations \<, \>. If both operations would exist, always for both
of them methods would need to be installed -- one of them just 'for nothing'.

Regarding `IsAlgebraWithOne': the Is<something> operations check for membership
in GAP categories. -- So for example, mathematically a group may be 'regarded'
as the set of its elements (apply the forgetful functor from the category of
groups to the category of sets). Anyway, `IsSet' returns 'false' when applied
to a group. Rather, to transform a domain to a domain with the same elements
in another category, there are operations As<something>. So for example you
can transform a group to a set by applying `AsSet', and you can transform
a suitable domain to an algebra with one by applying `AsAlgebraWithOne'.
However, in your particular case, there is presently no suitable method for
`AsAlgebraWithOne' available. Of course you may add one, if you like.

Hope this helps,

    Stefan





More information about the Forum mailing list