@@ -19,7 +19,7 @@ topological space, opposite monoid, units
1919-/
2020
2121
22- variable {M X : Type *}
22+ variable {M N X : Type *}
2323
2424open Filter Topology
2525
@@ -91,7 +91,7 @@ namespace Units
9191
9292open MulOpposite
9393
94- variable [TopologicalSpace M] [Monoid M] [TopologicalSpace X]
94+ variable [TopologicalSpace M] [Monoid M] [TopologicalSpace N] [Monoid N] [TopologicalSpace X]
9595
9696/-- The units of a monoid are equipped with a topology, via the embedding into `M × M`. -/
9797@[to_additive
@@ -160,4 +160,20 @@ protected theorem continuous_iff {f : X → Mˣ} :
160160theorem continuous_coe_inv : Continuous (fun u => ↑u⁻¹ : Mˣ → M) :=
161161 (Units.continuous_iff.1 continuous_id).2
162162
163+ @[to_additive]
164+ lemma continuous_map {f : M →* N} (hf : Continuous f) : Continuous (map f) :=
165+ Units.continuous_iff.mpr ⟨hf.comp continuous_val, hf.comp continuous_coe_inv⟩
166+
167+ @[to_additive]
168+ lemma isOpenMap_map {f : M →* N} (hf_inj : Function.Injective f) (hf : IsOpenMap f) :
169+ IsOpenMap (map f) := by
170+ rintro _ ⟨U, hU, rfl⟩
171+ have hg_openMap := hf.prodMap <| opHomeomorph.isOpenMap.comp (hf.comp opHomeomorph.symm.isOpenMap)
172+ refine ⟨_, hg_openMap U hU, Set.ext fun y ↦ ?_⟩
173+ simp only [embedProduct, OneHom.coe_mk, Set.mem_preimage, Set.mem_image, Prod.mk.injEq,
174+ Prod.map, Prod.exists, MulOpposite.exists, MonoidHom.coe_mk]
175+ refine ⟨fun ⟨a, b, h, ha, hb⟩ ↦ ⟨⟨a, b, hf_inj ?_, hf_inj ?_⟩, ?_⟩,
176+ fun ⟨x, hxV, hx⟩ ↦ ⟨x, x.inv, by simp [hxV, ← hx]⟩⟩
177+ all_goals simp_all
178+
163179end Units
0 commit comments