intros.
generalize (every_finite_generating_set_has_a_subset_that_is_a_basis (W0:=S)).
intro p.
assert (is_finite_subset S).
red in |- *.
red in H1.
inversion_clear H1.
inversion_clear H2.
exists x.
generalize (n_element_subset_sequence H3).
intro.
inversion_clear H2.
inversion_clear H4.
exists x0; auto.
generalize (p H2 H0); clear p; intro p.
inversion_clear p.
rename x into S1.
red in H.
inversion_clear H.
rename x into beta.
generalize (all_finite_bases_equally_big H4 (Build_basis H3)).
intro.
assert (has_n_elements n S1).
apply inject_subsets_respects_has_n_elements; auto with algebra.
assert (has_at_least_n_elements n S).
apply subset_bounds_set_size_from_below with S1; auto with algebra.
assert (has_n_elements n S).
apply has_n_elements_by_at_least_at_most; auto with algebra.
split; auto.
apply is_basis_comp with (inject_subsets S1); auto with algebra.
assert (S1 =' full S in _).
apply subset_also_has_n_elements_then_it_is_full with n; auto with algebra.
apply Trans with (inject_subsets (full S)); auto with algebra.
Qed.

(* Specifications: *)
(** - %\intoc{Corollary 5 to 1.10}%: *)
Lemma every_lin_indep_set_can_be_extended_to_a_basis :
forall (F : field) (V : vectorspace F),
is_finite_dimensional V ->
forall (beta : basis V) (Sset : part_set V),
lin_indep Sset ->
exists S1 : part_set V, included S1 beta /\ is_basis (union Sset S1).