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

Commit 1645542

Browse files
committed
feat(linear_algebra): elements of a dim zero space (#3054)
Co-authored-by: Rob Lewis <rob.y.lewis@gmail.com>
1 parent 51ad2a1 commit 1645542

File tree

3 files changed

+68
-0
lines changed

3 files changed

+68
-0
lines changed

src/linear_algebra/dimension.lean

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -412,6 +412,26 @@ by rw [rank, rank, linear_map.range_comp]; exact dim_map_le _ _
412412

413413
end rank
414414

415+
lemma dim_zero_iff_forall_zero : vector_space.dim K V = 0 ↔ ∀ x : V, x = 0 :=
416+
begin
417+
split,
418+
{ intros h x,
419+
cases exists_is_basis K V with w hw,
420+
have card_mk_range := hw.mk_range_eq_dim,
421+
rw [h, cardinal.mk_emptyc_iff, set.range_coe_subtype] at card_mk_range,
422+
simpa [card_mk_range] using hw.mem_span x },
423+
{ intro h,
424+
have : (⊤ : submodule K V) = ⊥,
425+
{ ext x, simp [h x] },
426+
rw [←dim_top, this, dim_bot] }
427+
end
428+
429+
lemma dim_pos_iff_exists_ne_zero : 0 < vector_space.dim K V ↔ ∃ x : V, x ≠ 0 :=
430+
begin
431+
rw ←not_iff_not,
432+
simpa using dim_zero_iff_forall_zero
433+
end
434+
415435
end vector_space
416436

417437
section unconstrained_universes

src/linear_algebra/finite_dimensional.lean

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -366,3 +366,40 @@ theorem findim_range_add_findim_ker [finite_dimensional K V] (f : V →ₗ[K] V
366366
by { rw [← f.quot_ker_equiv_range.findim_eq], exact submodule.findim_quotient_add_findim _ }
367367

368368
end linear_map
369+
370+
section zero_dim
371+
372+
open vector_space finite_dimensional
373+
374+
lemma finite_dimensional_of_dim_eq_zero (h : vector_space.dim K V = 0) : finite_dimensional K V :=
375+
by rw [finite_dimensional_iff_dim_lt_omega, h]; exact cardinal.omega_pos
376+
377+
lemma findim_eq_zero_of_dim_eq_zero [finite_dimensional K V] (h : vector_space.dim K V = 0) :
378+
findim K V = 0 :=
379+
begin
380+
convert findim_eq_dim K V,
381+
rw h, norm_cast
382+
end
383+
384+
variables (K V)
385+
386+
lemma finite_dimensional_bot : finite_dimensional K (⊥ : submodule K V) :=
387+
finite_dimensional_of_dim_eq_zero $ by simp
388+
389+
lemma findim_bot : findim K (⊥ : submodule K V) = 0 :=
390+
begin
391+
haveI := finite_dimensional_bot K V,
392+
convert findim_eq_dim K (⊥ : submodule K V),
393+
rw dim_bot, norm_cast
394+
end
395+
396+
variables {K V}
397+
398+
lemma bot_eq_top_of_dim_eq_zero (h : vector_space.dim K V = 0) : (⊥ : submodule K V) = ⊤ :=
399+
begin
400+
haveI := finite_dimensional_of_dim_eq_zero h,
401+
apply eq_top_of_findim_eq,
402+
rw [findim_bot, findim_eq_zero_of_dim_eq_zero h]
403+
end
404+
405+
end zero_dim

src/set_theory/cardinal.lean

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -853,6 +853,17 @@ theorem mk_subtype_le_of_subset {α : Type u} {p q : α → Prop} (h : ∀ ⦃x
853853
@[simp] theorem mk_emptyc (α : Type u) : mk (∅ : set α) = 0 :=
854854
quotient.sound ⟨equiv.set.pempty α⟩
855855

856+
lemma mk_emptyc_iff {α : Type u} {s : set α} : mk s = 0 ↔ s = ∅ :=
857+
begin
858+
split,
859+
{ intro h,
860+
have h2 : cardinal.mk s = cardinal.mk pempty, by simp [h],
861+
refine set.eq_empty_iff_forall_not_mem.mpr (λ _ hx, _),
862+
rcases cardinal.eq.mp h2 with ⟨f, _⟩,
863+
cases f ⟨_, hx⟩ },
864+
{ intro, convert mk_emptyc _ }
865+
end
866+
856867
theorem mk_univ {α : Type u} : mk (@univ α) = mk α :=
857868
quotient.sound ⟨equiv.set.univ α⟩
858869

0 commit comments

Comments
 (0)