@@ -8,6 +8,7 @@ import Mathlib.LinearAlgebra.FiniteDimensional.Lemmas
88import Mathlib.LinearAlgebra.FreeModule.Finite.Matrix
99import Mathlib.RingTheory.LocalRing.Basic
1010import Mathlib.Topology.Algebra.Module.Determinant
11+ import Mathlib.Topology.Algebra.Module.ModuleTopology
1112import Mathlib.Topology.Algebra.Module.Simple
1213import Mathlib.Topology.Algebra.SeparationQuotient.FiniteDimensional
1314
@@ -238,23 +239,26 @@ private theorem continuous_equivFun_basis_aux [T2Space E] {ι : Type v} [Fintype
238239 change Continuous (ξ.coord i)
239240 exact H₂ (ξ.coord i)
240241
241- /-- Any linear map on a finite dimensional space over a complete field is continuous. -/
242- theorem LinearMap.continuous_of_finiteDimensional [T2Space E] [FiniteDimensional 𝕜 E]
243- (f : E →ₗ[𝕜] F') : Continuous f := by
242+ /-- A finite-dimensional t2 vector space over a complete field must carry the module topology.
243+
244+ Not declared as a global instance only for performance reasons. -/
245+ @ [local instance ]
246+ lemma isModuleTopologyOfFiniteDimensional [T2Space E] [FiniteDimensional 𝕜 E] :
247+ IsModuleTopology 𝕜 E :=
244248 -- for the proof, go to a model vector space `b → 𝕜` thanks to `continuous_equivFun_basis`, and
245- -- argue that all linear maps there are continuous.
249+ -- use that it has the module topology
246250 let b := Basis.ofVectorSpace 𝕜 E
247- have A : Continuous b.equivFun := continuous_equivFun_basis_aux b
248- have B : Continuous (f.comp ( b.equivFun.symm : (Basis.ofVectorSpaceIndex 𝕜 E → 𝕜) →ₗ[𝕜] E)) :=
249- LinearMap.continuous_on_pi _
250- have :
251- Continuous
252- (f.comp (b.equivFun. symm : (Basis.ofVectorSpaceIndex 𝕜 E → 𝕜) →ₗ[𝕜] E) ∘ b.equivFun) :=
253- B.comp A
254- convert this
255- ext x
256- dsimp
257- rw [Basis.equivFun_symm_apply, Basis.sum_repr]
251+ have continuousEquiv : E ≃L[𝕜] (Basis.ofVectorSpaceIndex 𝕜 E) → 𝕜 :=
252+ { __ := b.equivFun
253+ continuous_toFun := continuous_equivFun_basis_aux b
254+ continuous_invFun := IsModuleTopology.continuous_of_linearMap (R := 𝕜)
255+ (A := (Basis.ofVectorSpaceIndex 𝕜 E) → 𝕜) (B := E) b.equivFun.symm }
256+ IsModuleTopology.iso continuousEquiv. symm
257+
258+ /-- Any linear map on a finite dimensional space over a complete field is continuous. -/
259+ theorem LinearMap.continuous_of_finiteDimensional [T2Space E] [FiniteDimensional 𝕜 E]
260+ (f : E →ₗ[𝕜] F') : Continuous f :=
261+ IsModuleTopology.continuous_of_linearMap f
258262
259263instance LinearMap.continuousLinearMapClassOfFiniteDimensional [T2Space E] [FiniteDimensional 𝕜 E] :
260264 ContinuousLinearMapClass (E →ₗ[𝕜] F') 𝕜 E F' :=
@@ -322,15 +326,8 @@ theorem range_toContinuousLinearMap (f : E →ₗ[𝕜] F') :
322326
323327/-- A surjective linear map `f` with finite dimensional codomain is an open map. -/
324328theorem isOpenMap_of_finiteDimensional (f : F →ₗ[𝕜] E) (hf : Function.Surjective f) :
325- IsOpenMap f := by
326- obtain ⟨g, hg⟩ := f.exists_rightInverse_of_surjective (LinearMap.range_eq_top.2 hf)
327- refine IsOpenMap.of_sections fun x => ⟨fun y => g (y - f x) + x, ?_, ?_, fun y => ?_⟩
328- · exact
329- ((g.continuous_of_finiteDimensional.comp <| continuous_id.sub continuous_const).add
330- continuous_const).continuousAt
331- · simp only
332- rw [sub_self, map_zero, zero_add]
333- · simp only [map_sub, map_add, ← comp_apply f g, hg, id_apply, sub_add_cancel]
329+ IsOpenMap f :=
330+ IsModuleTopology.isOpenMap_of_surjective hf
334331
335332instance canLiftContinuousLinearMap : CanLift (E →ₗ[𝕜] F) (E →L[𝕜] F) (↑) fun _ => True :=
336333 ⟨fun f _ => ⟨LinearMap.toContinuousLinearMap f, rfl⟩⟩
0 commit comments