(** %\tocdef{is\_{\em[in]}finite\_dimensional}% *)
Definition is_finite_dimensional (F : field) (V : vectorspace F) :=
  exists beta : basis V, (exists n : Nat, has_n_elements n beta).Definition is_infinite_dimensional (F : field) (V : vectorspace F) :=
  forall (beta : basis V) (n : Nat), ~ has_n_elements n beta.(** %\tocdef{has\_dim}% *)
Definition has_dim (F : field) (n : Nat) (V : vectorspace F) :=
  exists beta : basis V, has_n_elements n beta.

(* Specifications: *)
Lemma finite_dim_vecsp_has_dim : forall (F : field) (V : vectorspace F), is_finite_dimensional V -> exists n : Nat, has_dim n V.
Lemma has_dim_easy : forall (F : field) (V : vectorspace F) (b : part_set V), is_basis b -> forall n : nat, has_n_elements n b -> has_dim n V.
Lemma dimension_bounds_generating_set_size : forall (F : field) (V : vectorspace F) (n : Nat), has_dim n V -> forall S : part_set V, generates S (full V) -> has_at_most_n_elements n S -> is_basis S /\ has_n_elements n S.
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).