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.
In principle, it is possible to create vector spaces of
IsVectorObjobjects.(The changes from #4797 have provided several methods that deal with this case.)
However, a lot of functionality is missing.
One problem with the current setup is that the filter
IsNonGaussianRowSpacegets set for certain vector spaces, which enablesIsHandledByNiceBasis, but the underlying functionality does not fit. An example iswhere 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.