Section basis.
Variable F : field.
Require Export bases.
Variable A : Setoid.
Variable a : A.
Definition triv_basis : basis (trivvecsp a F).
apply Build_basis with (empty (trivvecsp a F)).
red in |- *.
split.
red in |- *.
cbn - [trivvecsp].
red in |- *.
cbn - [trivvecsp].
Opaque trivvecsp.
split; auto; intros _.
Transparent trivvecsp.
red in |- *.
exists 0.
exists (empty_seq F).
Transparent trivvecsp.
exists (empty_seq (empty (single a))).
cbn - [trivvecsp].
unfold trivvecsp in x.
repeat red in x.
destruct x.
red in |- *.
simpl in subtype_prf.
auto.
apply empty_lin_indep.
Defined.
(* More generally: *)
Definition trivial_basis :
forall V : vectorspace F, full V =' single (zero V) in _ -> basis V.
intros.
apply Build_basis with (empty V).
red in |- *.
split.
2: apply empty_lin_indep.
red in |- *.
apply Trans with (single (zero V)); auto with algebra.
simpl in |- *.
red in |- *.
simpl in |- *.
split; intros.
red in H0.
inversion_clear H0.
inversion_clear H1.
inversion_clear H0.
assert (x0 =' 0 in _).
generalize no_seq_n_empty; intro p.
apply (p _ V (empty V) (Refl (empty V)) x2).
simpl in H0.
move H0 after x1.
generalize dependent x0.
intros x0 H0.
rewrite H0.
clear H0 x0.
simpl in |- *.
auto.
apply is_lin_comb_comp with (zero V) (empty V); auto with algebra.
red in |- *.
exists 0.
simpl in |- *.
exists (empty_seq F).
exists (empty_seq (empty V)).
auto with algebra.
Defined.

Lemma trivial_then_has_dim_zero :
forall V : vectorspace F, full V =' single (zero V) in _ -> has_dim 0 V.