Many computations with row spaces require the computation of a basis (which will always mean a vector space basis in GAP), such as the computation of the dimension, or efficient membership test for the row space.
Most of these computations do not rely on special properties of the chosen basis. The computation of coefficients lists, however, is basis dependent. A natural way to distinguish these two situations is the following.
For basis independent questions the row space is allowed to compute a
suitable basis, and may store bases. For example the dimension of the space
V can be computed this way using Dimension( V )
.
In such situations the component V.basis
is used. The value of this
component depends on how it was constructed, so no function that accesses
this component should assume special properties of this basis.
On the other hand, the computation of coefficients of a vector v with
respect to a basis B of V depends on this basis, so you have to call
Coefficients( B, v )
, and not Coefficients( V, v )
.
It should be mentioned that there are two types of row space bases. A basis of the first type is semi-echelonized (see SemiEchelonBasis for the definition and examples), its structure allows to perform efficient calculations of membership test and coefficients.
A basis of the second type is arbitrary, that is, it has no special
properties. There are two ways to construct such a (user-defined) basis
that is not necessarily semi-echelonized. The first is to call
RowSpace
with the optional argument "basis"
; this means that the
generators are known to be linearly independent (see RowSpace).
The second way is to call Basis
with two arguments (see Basis).
The computation of coefficients with respect to an arbitrary basis is
performed by computing a semi-echelonized basis, delegating the task to
this basis, and then performing the base change.
The functions that are available for row space bases are Coefficients
(see Coefficients for Row Space Bases) and SiftedVector
(see
SiftedVector).
The several available row space bases are described in Basis, CanonicalBasis, and SemiEchelonBasis. For details of the implementation see Row Space Basis Records.
GAP 3.4.4