(* Subspace bases *)

(* Specifications: *)
Lemma span_basis U X : basis_of U X -> <<X>>%VS = U.
Lemma size_basis U n (X : n.-tuple vT) : basis_of U X -> \dim U = n.
Lemma basisEfree X U :
basis_of U X = [&& free X, (<<X>> <= U)%VS & \dim U <= size X].
Lemma perm_basis X Y U : perm_eq X Y -> basis_of U X = basis_of U Y.
Lemma vbasisP U : basis_of U (vbasis U).
Lemma vbasis_mem v U : v \in (vbasis U) -> v \in U.
Lemma bigcat_basis Us (U := (\sum_(i | P i) Us i)%VS) :
directv U -> (forall i, P i -> basis_of (Us i) (Xs i)) ->
basis_of U (\big[cat/[::]]_(i | P i) Xs i).