@@ -235,6 +235,13 @@ lemma equiv_iff_hasFiniteRange [IsNoetherianRing K] {u v : V →ₗ[K] V₂} :
235235 u ≈ v ↔ (u - v).HasFiniteRange := by
236236 rw [equiv_iff_hasNoetherianRange, hasNoetherianRange_iff_hasFiniteRange]
237237
238+ lemma equiv_zero_iff_hasNoetherianRange {u : V →ₗ[K] V₂} : u ≈ 0 ↔ u.HasNoetherianRange := by
239+ simp [equiv_iff_hasNoetherianRange]
240+
241+ lemma equiv_zero_iff_hasFiniteRange [IsNoetherianRing K] {u : V →ₗ[K] V₂} :
242+ u ≈ 0 ↔ u.HasFiniteRange := by
243+ simp [equiv_iff_hasFiniteRange]
244+
238245lemma equiv_iff_isNoetherian_quotient_eqLocus {u v : V →ₗ[K] V₂} :
239246 u ≈ v ↔ IsNoetherian K (V ⧸ eqLocus u v) := by
240247 rw [equiv_iff_hasNoetherianRange, hasNoetherianRange_iff_quotient_ker, eqLocus_eq_ker_sub]
@@ -269,6 +276,23 @@ lemma equiv_comp {u v : V →ₗ[K] V₂} {u' v' : V₂ →ₗ[K] V₃} (h : u
269276 u' ∘ₗ u ≈ v' ∘ₗ v := by
270277 grw [equiv_comp_right h', equiv_comp_left h]
271278
279+ lemma projection_equiv_zero_iff_isNoetherian {S T : Submodule K V} (hST : IsCompl S T) :
280+ S.projection T hST ≈ 0 ↔ IsNoetherian K S := by
281+ rw [equiv_zero_iff_hasNoetherianRange, hasNoetherianRange_iff_range, range_projection]
282+
283+ lemma projection_equiv_zero {S T : Submodule K V} [IsNoetherian K S] (hST : IsCompl S T) :
284+ S.projection T hST ≈ 0 :=
285+ projection_equiv_zero_iff_isNoetherian hST |>.mpr inferInstance
286+
287+ lemma projection_equiv_id_iff_isNoetherian {S T : Submodule K V} (hST : IsCompl S T) :
288+ S.projection T hST ≈ id ↔ IsNoetherian K T := by
289+ rw [Setoid.comm, equiv_iff_hasNoetherianRange, ← projection_eq_id_sub_projection,
290+ hasNoetherianRange_iff_range, range_projection]
291+
292+ lemma projection_equiv_id {S T : Submodule K V} [IsNoetherian K T] (hST : IsCompl S T) :
293+ S.projection T hST ≈ id :=
294+ projection_equiv_id_iff_isNoetherian hST |>.mpr inferInstance
295+
272296end FiniteRangeSetoid
273297
274298end Setoid
@@ -432,6 +456,13 @@ lemma IsQuasiInverse.of_comp_right {u : V →ₗ[K] V₂} {v : V₂ →ₗ[K] V
432456 (w ∘ₗ v).IsQuasiInverse u :=
433457 ⟨hw.1 , IsRightQuasiInverse.of_comp_right hv.1 hw.2 ⟩
434458
459+ lemma isQuasiInverse_subtype_projectionOnto {S T : Submodule K V} [IsNoetherian K T]
460+ (hST : IsCompl S T) :
461+ IsQuasiInverse S.subtype (S.projectionOnto T hST) := by
462+ constructor
463+ · grw [IsLeftQuasiInverse, ← FiniteRangeSetoid.projection_equiv_id hST, projection]
464+ · simp [IsRightQuasiInverse, projectionOnto_comp_subtype]
465+
435466end QuasiInverse
436467
437468end LinearMap
0 commit comments