@@ -1218,6 +1218,104 @@ theorem coprod_comp_prodComm [ContinuousAdd M] (f : M₂ →L[R] M) (g : M₃
12181218
12191219end ContinuousLinearMap
12201220
1221+ -- Restricting a continuous linear equivalence to a map between submodules.
1222+ section map
1223+
1224+ namespace ContinuousLinearEquiv
1225+
1226+ variable {R R₂ M M₂ : Type *} [Semiring R] [Semiring R₂] [AddCommMonoid M] [TopologicalSpace M]
1227+ [AddCommMonoid M₂] [TopologicalSpace M₂]
1228+ {module_M : Module R M} {module_M₂ : Module R₂ M₂} {σ₁₂ : R →+* R₂} {σ₂₁ : R₂ →+* R}
1229+ {re₁₂ : RingHomInvPair σ₁₂ σ₂₁} {re₂₁ : RingHomInvPair σ₂₁ σ₁₂}
1230+
1231+ /-- Continuous linear equivalence between two equal submodules:
1232+ this is `LinearEquiv.ofEq` as a continuous linear equivalence -/
1233+ def ofEq (p q : Submodule R M) (h : p = q) : p ≃L[R] q where
1234+ toLinearEquiv := LinearEquiv.ofEq _ _ h
1235+ continuous_toFun := by
1236+ have h' : (fun x ↦ x ∈ p) = (fun x ↦ x ∈ q) := by simp [h]
1237+ exact (Homeomorph.ofEqSubtypes h').continuous
1238+ continuous_invFun := by
1239+ have h' : (fun x ↦ x ∈ p) = (fun x ↦ x ∈ q) := by simp [h]
1240+ exact (Homeomorph.ofEqSubtypes h').symm.continuous
1241+
1242+ /--
1243+ A continuous linear equivalence of two modules restricts to a continuous linear equivalence
1244+ from any submodule `p` of the domain onto the image of that submodule.
1245+
1246+ This is the continuous linear version of `LinearEquiv.submoduleMap`.
1247+ This is `ContinuousLinearEquiv.ofSubmodule'` but with map on the right instead of comap on the left.
1248+ -/
1249+ def submoduleMap (e : M ≃SL[σ₁₂] M₂) (p : Submodule R M) :
1250+ p ≃SL[σ₁₂] Submodule.map e p where
1251+ toLinearMap := (e.comp p.subtype).codRestrict (p.map e) (fun ⟨c, hc⟩ ↦ by simpa)
1252+ invFun := (e.symm.comp (p.map e).subtype).codRestrict p (fun ⟨c, y, hy, eyc⟩ ↦ by
1253+ simpa [← eyc, e.symm_apply_apply])
1254+ left_inv x := by ext; simp
1255+ right_inv x := by ext; simp
1256+ continuous_toFun := by
1257+ have : Continuous (e.comp p.subtype) := by dsimp; fun_prop
1258+ dsimp
1259+ exact continuous_induced_rng.mpr this
1260+ continuous_invFun := by
1261+ have : Continuous (e.symm.comp (p.map e).subtype) := by dsimp; fun_prop
1262+ dsimp
1263+ exact continuous_induced_rng.mpr this
1264+
1265+ @[simp]
1266+ lemma submoduleMap_apply (e : M ≃SL[σ₁₂] M₂) (p : Submodule R M) (x : p) :
1267+ e.submoduleMap p x = e x := by
1268+ rfl
1269+
1270+ @[simp]
1271+ lemma submoduleMap_symm_apply (e : M ≃SL[σ₁₂] M₂) (p : Submodule R M) (x : p.map e) :
1272+ (e.submoduleMap p).symm x = e.symm x := by
1273+ rfl
1274+
1275+ /-- A continuous linear equivalence which maps a submodule of one module onto another,
1276+ restricts to a continuous linear equivalence of the two submodules.
1277+ This is `LinearEquiv.ofSubmodules` as a continuous linear equivalence. -/
1278+ def ofSubmodules (e : M ≃SL[σ₁₂] M₂)
1279+ (p : Submodule R M) (q : Submodule R₂ M₂) (h : p.map (e : M →SL[σ₁₂] M₂) = q) : p ≃SL[σ₁₂] q :=
1280+ (e.submoduleMap p).trans (.ofEq _ _ h)
1281+
1282+ @[simp]
1283+ theorem ofSubmodules_apply (e : M ≃SL[σ₁₂] M₂) {p : Submodule R M} {q : Submodule R₂ M₂}
1284+ (h : p.map e = q) (x : p) :
1285+ e.ofSubmodules p q h x = e x :=
1286+ rfl
1287+
1288+ @[simp]
1289+ theorem ofSubmodules_symm_apply (e : M ≃SL[σ₁₂] M₂) {p : Submodule R M} {q : Submodule R₂ M₂}
1290+ (h : p.map e = q) (x : q) : (e.ofSubmodules p q h).symm x = e.symm x :=
1291+ rfl
1292+
1293+ /-- A continuous linear equivalence of two modules restricts to a continuous linear equivalence
1294+ from the preimage of any submodule to that submodule.
1295+ This is `ContinuousLinearEquiv.ofSubmodule` but with `comap` on the left
1296+ instead of `map` on the right. -/
1297+ def ofSubmodule' (f : M ≃SL[σ₁₂] M₂) (U : Submodule R₂ M₂) : U.comap f ≃SL[σ₁₂] U :=
1298+ f.symm.ofSubmodules _ _ (U.map_equiv_eq_comap_symm f.toLinearEquiv.symm) |>.symm
1299+
1300+ theorem ofSubmodule'_toContinuousLinearMap (f : M ≃SL[σ₁₂] M₂) (U : Submodule R₂ M₂) :
1301+ (f.ofSubmodule' U).toContinuousLinearMap =
1302+ (f.toContinuousLinearMap.comp ((U.comap f).subtypeL)).codRestrict U
1303+ ((fun ⟨x, hx⟩ ↦ by simpa [Submodule.mem_comap])) := by
1304+ rfl
1305+
1306+ @[simp]
1307+ theorem ofSubmodule'_apply (f : M ≃SL[σ₁₂] M₂) (U : Submodule R₂ M₂) (x : U.comap f) :
1308+ (f.ofSubmodule' U x : M₂) = f (x : M) :=
1309+ rfl
1310+
1311+ @[simp]
1312+ theorem ofSubmodule'_symm_apply (f : M ≃SL[σ₁₂] M₂) (U : Submodule R₂ M₂) (x : U) :
1313+ ((f.ofSubmodule' U).symm x : M) = f.symm (x : M₂) := rfl
1314+
1315+ end ContinuousLinearEquiv
1316+
1317+ end map
1318+
12211319namespace Submodule
12221320
12231321variable {R : Type *} [Ring R] {M : Type *} [TopologicalSpace M] [AddCommGroup M] [Module R M]
0 commit comments