@@ -202,7 +202,7 @@ theorem continuous_const_smul_iff (c : G) : (Continuous fun x => c • f x) ↔
202202
203203/-- The homeomorphism given by scalar multiplication by a given element of a group `Γ` acting on
204204 `T` is a homeomorphism from `T` to itself. -/
205- @[to_additive]
205+ @ [to_additive (attr := simps!) ]
206206def Homeomorph.smul (γ : G) : α ≃ₜ α where
207207 toEquiv := MulAction.toPerm γ
208208 continuous_toFun := continuous_const_smul γ
@@ -240,6 +240,29 @@ theorem Dense.smul (c : G) {s : Set α} (hs : Dense s) : Dense (c • s) := by
240240theorem interior_smul (c : G) (s : Set α) : interior (c • s) = c • interior s :=
241241 ((Homeomorph.smul c).image_interior s).symm
242242
243+ @[to_additive]
244+ theorem IsOpen.smul_left {s : Set G} {t : Set α} (ht : IsOpen t) : IsOpen (s • t) := by
245+ rw [← iUnion_smul_set]
246+ exact isOpen_biUnion fun a _ => ht.smul _
247+
248+ @[to_additive]
249+ theorem subset_interior_smul_right {s : Set G} {t : Set α} : s • interior t ⊆ interior (s • t) :=
250+ interior_maximal (Set.smul_subset_smul_left interior_subset) isOpen_interior.smul_left
251+
252+ @ [to_additive (attr := simp)]
253+ theorem smul_mem_nhds_smul_iff {t : Set α} (g : G) {a : α} : g • t ∈ 𝓝 (g • a) ↔ t ∈ 𝓝 a :=
254+ (Homeomorph.smul g).openEmbedding.image_mem_nhds
255+
256+ @[to_additive] alias ⟨_, smul_mem_nhds_smul⟩ := smul_mem_nhds_smul_iff
257+
258+ @ [to_additive (attr := deprecated (since := "2024-08-06" ))]
259+ alias smul_mem_nhds := smul_mem_nhds_smul
260+
261+ @ [to_additive (attr := simp)]
262+ theorem smul_mem_nhds_self [TopologicalSpace G] [ContinuousConstSMul G G] {g : G} {s : Set G} :
263+ g • s ∈ 𝓝 g ↔ s ∈ 𝓝 1 := by
264+ rw [← smul_mem_nhds_smul_iff g⁻¹]; simp
265+
243266end Group
244267
245268section GroupWithZero
@@ -346,38 +369,35 @@ variable [Monoid M] [TopologicalSpace α] [MulAction M α] [ContinuousConstSMul
346369
347370nonrec theorem tendsto_const_smul_iff {f : β → α} {l : Filter β} {a : α} {c : M} (hc : IsUnit c) :
348371 Tendsto (fun x => c • f x) l (𝓝 <| c • a) ↔ Tendsto f l (𝓝 a) :=
349- let ⟨u, hu⟩ := hc
350- hu ▸ tendsto_const_smul_iff u
372+ tendsto_const_smul_iff hc.unit
351373
352374variable [TopologicalSpace β] {f : β → α} {b : β} {c : M} {s : Set β}
353375
354376nonrec theorem continuousWithinAt_const_smul_iff (hc : IsUnit c) :
355377 ContinuousWithinAt (fun x => c • f x) s b ↔ ContinuousWithinAt f s b :=
356- let ⟨u, hu⟩ := hc
357- hu ▸ continuousWithinAt_const_smul_iff u
378+ continuousWithinAt_const_smul_iff hc.unit
358379
359380nonrec theorem continuousOn_const_smul_iff (hc : IsUnit c) :
360381 ContinuousOn (fun x => c • f x) s ↔ ContinuousOn f s :=
361- let ⟨u, hu⟩ := hc
362- hu ▸ continuousOn_const_smul_iff u
382+ continuousOn_const_smul_iff hc.unit
363383
364384nonrec theorem continuousAt_const_smul_iff (hc : IsUnit c) :
365385 ContinuousAt (fun x => c • f x) b ↔ ContinuousAt f b :=
366- let ⟨u, hu⟩ := hc
367- hu ▸ continuousAt_const_smul_iff u
386+ continuousAt_const_smul_iff hc.unit
368387
369388nonrec theorem continuous_const_smul_iff (hc : IsUnit c) :
370389 (Continuous fun x => c • f x) ↔ Continuous f :=
371- let ⟨u, hu⟩ := hc
372- hu ▸ continuous_const_smul_iff u
390+ continuous_const_smul_iff hc.unit
373391
374392nonrec theorem isOpenMap_smul (hc : IsUnit c) : IsOpenMap fun x : α => c • x :=
375- let ⟨u, hu⟩ := hc
376- hu ▸ isOpenMap_smul u
393+ isOpenMap_smul hc.unit
377394
378395nonrec theorem isClosedMap_smul (hc : IsUnit c) : IsClosedMap fun x : α => c • x :=
379- let ⟨u, hu⟩ := hc
380- hu ▸ isClosedMap_smul u
396+ isClosedMap_smul hc.unit
397+
398+ nonrec theorem smul_mem_nhds_smul_iff (hc : IsUnit c) {s : Set α} {a : α} :
399+ c • s ∈ 𝓝 (c • a) ↔ s ∈ 𝓝 a :=
400+ smul_mem_nhds_smul_iff hc.unit
381401
382402end IsUnit
383403
@@ -474,19 +494,20 @@ section MulAction
474494variable {G₀ : Type *} [GroupWithZero G₀] [MulAction G₀ α] [TopologicalSpace α]
475495 [ContinuousConstSMul G₀ α]
476496
477- -- Porting note: generalize to a group action + `IsUnit`
478- /-- Scalar multiplication preserves neighborhoods. -/
479- theorem set_smul_mem_nhds_smul {c : G₀} {s : Set α} {x : α} (hs : s ∈ 𝓝 x) (hc : c ≠ 0 ) :
480- c • s ∈ 𝓝 (c • x : α) := by
481- rw [mem_nhds_iff] at hs ⊢
482- obtain ⟨U, hs', hU, hU'⟩ := hs
483- exact ⟨c • U, Set.smul_set_mono hs', hU.smul₀ hc, Set.smul_mem_smul_set hU'⟩
497+ /-- Scalar multiplication by a nonzero scalar preserves neighborhoods. -/
498+ theorem smul_mem_nhds_smul_iff₀ {c : G₀} {s : Set α} {x : α} (hc : c ≠ 0 ) :
499+ c • s ∈ 𝓝 (c • x : α) ↔ s ∈ 𝓝 x :=
500+ smul_mem_nhds_smul_iff (Units.mk0 c hc)
484501
485- theorem set_smul_mem_nhds_smul_iff {c : G₀} {s : Set α} {x : α} (hc : c ≠ 0 ) :
486- c • s ∈ 𝓝 (c • x : α) ↔ s ∈ 𝓝 x := by
487- refine ⟨fun h => ?_, fun h => set_smul_mem_nhds_smul h hc⟩
488- rw [← inv_smul_smul₀ hc x, ← inv_smul_smul₀ hc s]
489- exact set_smul_mem_nhds_smul h (inv_ne_zero hc)
502+ @ [deprecated (since := "2024-08-06" )]
503+ alias set_smul_mem_nhds_smul_iff := smul_mem_nhds_smul_iff₀
504+
505+ alias ⟨_, smul_mem_nhds_smul₀⟩ := smul_mem_nhds_smul_iff₀
506+
507+ @ [deprecated smul_mem_nhds_smul₀ (since := "2024-08-06" )]
508+ theorem set_smul_mem_nhds_smul {c : G₀} {s : Set α} {x : α} (hs : s ∈ 𝓝 x) (hc : c ≠ 0 ) :
509+ c • s ∈ 𝓝 (c • x : α) :=
510+ smul_mem_nhds_smul₀ hc hs
490511
491512end MulAction
492513
@@ -497,7 +518,7 @@ variable {G₀ : Type*} [GroupWithZero G₀] [AddMonoid α] [DistribMulAction G
497518
498519theorem set_smul_mem_nhds_zero_iff {s : Set α} {c : G₀} (hc : c ≠ 0 ) :
499520 c • s ∈ 𝓝 (0 : α) ↔ s ∈ 𝓝 (0 : α) := by
500- refine Iff.trans ?_ (set_smul_mem_nhds_smul_iff hc)
521+ refine Iff.trans ?_ (smul_mem_nhds_smul_iff₀ hc)
501522 rw [smul_zero]
502523
503524end DistribMulAction
0 commit comments