Definition is_chain (F : part_set (part_set X)) :=
  forall A B : part_set X,
  in_part A F -> in_part B F -> included A B \/ included B A.(** - Quoting the Maximal Principle from page 50:

 Let $\cal F$ be a family of sets. If for each chain $\cal C\subset \cal F$ there
 exists a member of $\cal F$ that contains each member of $\cal C$, then $\cal F$
 contains a maximal element.*)

(** %\tocdef{MAXIMAL\_PRINCIPLE}% *)
Axiom
  MAXIMAL_PRINCIPLE :
    forall F : part_set (part_set X),
    (forall C : part_set (part_set X),
     is_chain C ->
     included C F ->
     exists A : part_set X,
       in_part A F /\ (forall B : part_set X, in_part B C -> included B A)) ->
    exists A : part_set X, maximal F A.

(* Specifications: *)
Lemma max_lin_indep_subsets_of_generating_sets_are_bases : forall (F : field) (V : vectorspace F) (W : part_set V), generates W (full V) -> forall beta : part_set V, max_lin_indep beta W -> is_basis beta.
Lemma basis_iff_max_lin_indep : forall (F : field) (V : vectorspace F) (beta : part_set V), is_basis beta <-> max_lin_indep beta (full V).
Lemma basis_is_max_lin_indep : forall (F : field) (V : vectorspace F) (beta : basis V), max_lin_indep beta (full V).
Lemma max_lin_indep_subset_generated : forall (F : field) (V : vectorspace F) (W : part_set V), lin_indep W -> exists W' : part_set V, max_lin_indep W' (full V) /\ included W W'.
Lemma every_vecsp_has_a_basis : forall (F : field) (V : vectorspace F), exists beta : part_set V, is_basis beta.