red in |- *.
repeat split.
simpl in |- *.
intros; inversion_clear H.
destruct x.
rename subtype_elt into S.
simpl in H0.
destruct S.
simpl in H0, subtype_prf, subtype_prf0.
apply in_part_comp_r with subtype_elt.
red in subtype_prf0.
inversion_clear subtype_prf0.
auto.
auto with algebra.
simpl in |- *.
intros.
generalize dependent (H p H1); generalize dependent (H0 p H1).
inversion_clear H1.
destruct x0.
destruct subtype_elt.
simpl in H2.
intros; simpl in subtype_prf0.
red in subtype_prf0.
inversion_clear subtype_prf0.
inversion_clear H5.
apply in_part_comp_r with subtype_elt; auto with algebra.
apply H6; apply in_part_comp_r with p; auto with algebra.
intros.
simpl in |- *.
intros; simpl in H.
generalize dependent (H p H0).
inversion_clear H0.
destruct x0.
destruct subtype_elt.
simpl in H1, subtype_prf0.
red in subtype_prf0.
inversion_clear subtype_prf0.
inversion_clear H2.
intro; apply in_part_comp_r with subtype_elt; auto with algebra.
apply H4; apply in_part_comp_r with p; auto with algebra.
Qed.
End subspace_awkward_utils.
End MAIN.
Section Examples.
Variable F : field.
Variable V : vectorspace F.

(* Specifications: *)
Lemma singleton_zero_is_subspace : is_subspace (single (zero V)).
intros.