(* This program is free software; you can redistribute it and/or      *)
(* modify it under the terms of the GNU Lesser General Public License *)
(* as published by the Free Software Foundation; either version 2.1   *)
(* of the License, or (at your option) any later version.             *)
(*                                                                    *)
(* This program is distributed in the hope that it will be useful,    *)
(* but WITHOUT ANY WARRANTY; without even the implied warranty of     *)
(* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the      *)
(* GNU General Public License for more details.                       *)
(*                                                                    *)
(* You should have received a copy of the GNU Lesser General Public   *)
(* License along with this program; if not, write to the Free         *)
(* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA *)
(* 02110-1301 USA                                                     *)
(** * subspace_dim.v *)
Local Unset Standard Proposition Elimination Names.
Set Implicit Arguments.
Unset Strict Implicit.
Require Export bases_finite_dim.
(** - This file proves theorem 1.11 - every subspace W of a finite-dimensional vectorspace V has itself a finite dimension < dim(V) *)
Fixpoint span_ind_uninject (F : field) (V : vectorspace F)
(W : subspace V) (X : part_set W) (x : span_ind_formal (inject_subsets X))
{struct x} : span_ind_formal X :=
match x with
| Zerovector => Zerovector _
| Immediately c => Immediately (S:=X) (uninject_subsetsify c)
| Plusvector x1 x2 =>
Plusvector (span_ind_uninject x1) (span_ind_uninject x2)
| Multvector f x1 => Multvector f (span_ind_uninject x1)
end.
(* Axiom span_ind_uninject_prop : (F:field;V:(vectorspace F);W:(subspace V);X:(part_set W);x:(span_ind_formal (inject_subsets X))) (span_ind_injection x)='(subtype_elt (span_ind_injection (span_ind_uninject x))). *)
(** - The above axiom is actually provable. Below you find the proof script. (Garbled if you're reading via coqdoc) The reason I turned this into an axiom is that the [Qed.] command actually takes a full 40 minutes! (on my machine; a PIII/733MHz) *)

(* Specifications: *)
Lemma span_ind_uninject_prop :
forall (F : field) (V : vectorspace F) (W : subspace V)
(X : part_set W) (x : span_ind_formal (inject_subsets X)),
span_ind_injection x ='
subtype_elt (span_ind_injection (span_ind_uninject x)) in _.