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

Commit b757206

Browse files
hparshallsgouezel
andcommitted
feat(linear_algebra/finite_dimensional): finrank_range_of_inj (#12067)
The dimensions of the domain and range of an injective linear map are equal. Co-authored-by: sgouezel <sebastien.gouezel@univ-rennes1.fr>
1 parent 59a183a commit b757206

File tree

1 file changed

+20
-9
lines changed

1 file changed

+20
-9
lines changed

src/linear_algebra/finite_dimensional.lean

Lines changed: 20 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -793,15 +793,21 @@ protected theorem finite_dimensional (f : V ≃ₗ[K] V₂) [finite_dimensional
793793
module.finite.equiv f
794794

795795
/-- The dimension of a finite dimensional space is preserved under linear equivalence. -/
796-
theorem finrank_eq (f : V ≃ₗ[K] V₂) [finite_dimensional K V] :
796+
theorem finrank_eq (f : V ≃ₗ[K] V₂) :
797797
finrank K V = finrank K V₂ :=
798798
begin
799-
haveI : finite_dimensional K V₂ := f.finite_dimensional,
800-
simpa [← finrank_eq_dim] using f.lift_dim_eq
799+
by_cases h : finite_dimensional K V,
800+
{ resetI,
801+
haveI : finite_dimensional K V₂ := f.finite_dimensional,
802+
simpa [← finrank_eq_dim] using f.lift_dim_eq },
803+
{ rw [finrank_of_infinite_dimensional h, finrank_of_infinite_dimensional],
804+
contrapose! h,
805+
resetI,
806+
exact f.symm.finite_dimensional }
801807
end
802808

803809
/-- Pushforwards of finite-dimensional submodules along a `linear_equiv` have the same finrank. -/
804-
lemma finrank_map_eq (f : V ≃ₗ[K] V₂) (p : submodule K V) [finite_dimensional K p] :
810+
lemma finrank_map_eq (f : V ≃ₗ[K] V₂) (p : submodule K V) :
805811
finrank K (p.map (f : V →ₗ[K] V₂)) = finrank K p :=
806812
(f.submodule_map p).finrank_eq.symm
807813

@@ -858,6 +864,11 @@ lemma eq_of_le_of_finrank_eq {S₁ S₂ : submodule K V} [finite_dimensional K S
858864
(hd : finrank K S₁ = finrank K S₂) : S₁ = S₂ :=
859865
eq_of_le_of_finrank_le hle hd.ge
860866

867+
@[simp]
868+
lemma finrank_map_subtype_eq (p : subspace K V) (q : subspace K p) :
869+
finite_dimensional.finrank K (q.map p.subtype) = finite_dimensional.finrank K q :=
870+
(submodule.equiv_subtype_map p q).symm.finrank_eq
871+
861872
variables [finite_dimensional K V] [finite_dimensional K V₂]
862873

863874
/-- Given isomorphic subspaces `p q` of vector spaces `V` and `V₁` respectively,
@@ -881,11 +892,6 @@ begin
881892
← linear_equiv.finrank_eq f, add_comm, submodule.finrank_quotient_add_finrank]
882893
end
883894

884-
@[simp]
885-
lemma finrank_map_subtype_eq (p : subspace K V) (q : subspace K p) :
886-
finite_dimensional.finrank K (q.map p.subtype) = finite_dimensional.finrank K q :=
887-
(submodule.equiv_subtype_map p q).symm.finrank_eq
888-
889895
end finite_dimensional
890896

891897
namespace linear_map
@@ -950,6 +956,11 @@ theorem finrank_range_add_finrank_ker [finite_dimensional K V] (f : V →ₗ[K]
950956
finrank K f.range + finrank K f.ker = finrank K V :=
951957
by { rw [← f.quot_ker_equiv_range.finrank_eq], exact submodule.finrank_quotient_add_finrank _ }
952958

959+
/-- The dimensions of the domain and range of an injective linear map are equal. -/
960+
lemma finrank_range_of_inj {f : V →ₗ[K] V₂} (hf : function.injective f) :
961+
finrank K f.range = finrank K V :=
962+
by rw (linear_equiv.of_injective f hf).finrank_eq
963+
953964
end linear_map
954965

955966
namespace linear_equiv

0 commit comments

Comments
 (0)