Skip to content

Vector spaces of IsVectorObj objects #5347

@ThomasBreuer

Description

@ThomasBreuer

In principle, it is possible to create vector spaces of IsVectorObj objects.

gap> vecs:= [ Vector( IsPlistVectorRep, GF(2), [ 0, 1 ] * Z(2) ) ];;
gap> v:= VectorSpace( GF(2), vecs );
<vector space over GF(2), with 1 generator>

(The changes from #4797 have provided several methods that deal with this case.)

However, a lot of functionality is missing.

gap> Dimension( v );
Error, no method found! ...
gap> b:= Basis( v );;
gap> BasisVectors( b );
Error, no method found! ...
gap> Coefficients( b, vecs[1] );
Error, no method found! ...
gap> z:= Zero( v );  # yields a list not in `IsPlistVectorRep`
<an immutable GF2 vector of length 2>
gap> z in v;
Error, no method found!

One problem with the current setup is that the filter IsNonGaussianRowSpace gets set for certain vector spaces, which enables IsHandledByNiceBasis, but the underlying functionality does not fit. An example is

gap> vecs:= [ Vector( IsPlistVectorRep, GF(4), [ 0, 1 ] * Z(2) ) ];;
gap> v:= VectorSpace( GF(2), vecs );;
gap> Dimension( v );
Error, no method found!
[...]

where the error message is different from the above one.

I am not sure how to deal with the open ends, and have started a discussion on this topic, see #5346. Comments are welcome.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions