Section a_nice_fact_on_spans.
intros.
red in |- *.
simpl in |- *.
red in H.
intros.
generalize (span_ind_eqv_span S x).
unfold iff in |- *.
intros (LC1, LC2).
generalize (LC1 H0).
intro.
inversion H1.
generalize H2; clear H2.
cut (is_subspace W).
unfold is_subspace in |- *.
intros (W1, (W2, W3)).
2: apply is_subspace_OK; auto with algebra.
clear H0 H1 LC1 LC2.
generalize x.
clear x.
elim x0.
simpl in |- *.
intros.
apply in_part_comp_l with (zero V); auto with algebra.
simpl in |- *.
intros.
apply in_part_comp_l with (subtype_elt c); auto with algebra.
intros.
simpl in H2.
apply in_part_comp_l with (span_ind_injection s +' span_ind_injection s0);
auto with algebra.
intros.
simpl in H2.
apply in_part_comp_l with (c mX span_ind_injection s); auto with algebra.
Qed.
intros.
red in |- *.
intros.
apply in_part_comp_r with (span_ind S:part_set V); auto with algebra.
simpl in |- *.
exists (Immediately (Build_subtype H)).
simpl in |- *.
apply Refl.
Qed.
End a_nice_fact_on_spans.
Hint Resolve set_included_in_its_span: algebra.
(** %\tocdef{generates}% *)
Definition generates (F : field) (V : vectorspace F)
(S W : part_set V) := span S =' W in part_set V.
intros.
red in |- *; red in H1.
apply Trans with (span S:part_set V); auto with algebra.
apply Trans with (W:part_set V); auto with algebra.
Qed.
intros.
red in H.
apply is_subspace_comp with (span S:part_set V); auto.
apply is_subspace_OK.
Qed.
intros.
red in H.
simpl in H.
red in H.
generalize (H x); intro.
inversion_clear H1.
simpl in H3.
auto.
Qed.
exact is_lin_comb_from_generates.
Qed.

Lemma is_lin_comb_from_generates' :
forall (F : field) (V : vectorspace F) (S : part_set V) (W : subspace V),
generates S W -> forall x : W, is_lin_comb (subtype_elt x) S.