Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 6ed8b4b

Browse files
committed
feat(linear_algebra/finite_dimensional): lemmas for zero dimensional vector spaces (#6397)
1 parent d496676 commit 6ed8b4b

File tree

2 files changed

+41
-0
lines changed

2 files changed

+41
-0
lines changed

src/linear_algebra/dimension.lean

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -523,6 +523,20 @@ begin
523523
rw [←dim_top, this, dim_bot] }
524524
end
525525

526+
lemma dim_zero_iff : vector_space.dim K V = 0 ↔ subsingleton V :=
527+
dim_zero_iff_forall_zero.trans (subsingleton_iff_forall_eq 0).symm
528+
529+
lemma is_basis_of_dim_eq_zero {ι : Type*} (h : ¬ nonempty ι)
530+
(hV : dim K V = 0) : is_basis K (λ x : ι, (0 : V)) :=
531+
begin
532+
haveI : subsingleton V := dim_zero_iff.1 hV,
533+
exact is_basis_empty _ h
534+
end
535+
536+
lemma is_basis_of_dim_eq_zero'
537+
(hV : dim K V = 0) : is_basis K (λ x : fin 0, (0 : V)) :=
538+
is_basis_of_dim_eq_zero (finset.univ_eq_empty.mp rfl) hV
539+
526540
lemma dim_pos_iff_exists_ne_zero : 0 < vector_space.dim K V ↔ ∃ x : V, x ≠ 0 :=
527541
begin
528542
rw ←not_iff_not,

src/linear_algebra/finite_dimensional.lean

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,17 @@ iff.trans (by { rw ← findim_eq_dim, norm_cast }) (@dim_pos_iff_nontrivial K V
330330
lemma findim_pos [finite_dimensional K V] [h : nontrivial V] : 0 < findim K V :=
331331
findim_pos_iff.mpr h
332332

333+
/-- A finite dimensional space has zero `findim` iff it is a subsingleton.
334+
This is the `findim` version of `dim_zero_iff`. -/
335+
lemma findim_zero_iff [finite_dimensional K V] :
336+
findim K V = 0 ↔ subsingleton V :=
337+
iff.trans (by { rw ← findim_eq_dim, norm_cast }) (@dim_zero_iff K V _ _ _)
338+
339+
/-- A finite dimensional space that is a subsingleton has zero `findim`. -/
340+
lemma findim_zero_of_subsingleton [finite_dimensional K V] [h : subsingleton V] :
341+
findim K V = 0 :=
342+
findim_zero_iff.2 h
343+
333344
section
334345
open_locale big_operators
335346
open finset
@@ -850,6 +861,22 @@ by { unfold findim, simp [dim_top] }
850861

851862
end top
852863

864+
lemma findim_zero_iff_forall_zero [finite_dimensional K V] :
865+
findim K V = 0 ↔ ∀ x : V, x = 0 :=
866+
findim_zero_iff.trans (subsingleton_iff_forall_eq 0)
867+
868+
lemma is_basis_of_findim_zero [finite_dimensional K V]
869+
{ι : Type*} (h : ¬ nonempty ι) (hV : findim K V = 0) :
870+
is_basis K (λ x : ι, (0 : V)) :=
871+
begin
872+
haveI : subsingleton V := findim_zero_iff.1 hV,
873+
exact is_basis_empty _ h
874+
end
875+
876+
lemma is_basis_of_findim_zero' [finite_dimensional K V]
877+
(hV : findim K V = 0) : is_basis K (λ x : fin 0, (0 : V)) :=
878+
is_basis_of_findim_zero (finset.univ_eq_empty.mp rfl) hV
879+
853880
namespace linear_map
854881

855882
theorem injective_iff_surjective_of_findim_eq_findim [finite_dimensional K V]

0 commit comments

Comments
 (0)