topology.algebra.const_mul_action
⟷
Mathlib.Topology.Algebra.ConstMulAction
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -625,7 +625,7 @@ instance (priority := 100) t2Space_of_properlyDiscontinuousSMul_of_t2Space [T2Sp
by_cases H : γ ∈ bad_Γ_set
· exact fun h => (u_v_disjoint γ).le_bot ⟨mem_Inter₂.mp x_in_U₀₀ γ H, mem_Inter₂.mp h.1 γ H⟩
· rintro ⟨-, h'⟩
- simp only [image_smul, Classical.not_not, mem_set_of_eq, Ne.def] at H
+ simp only [image_smul, Classical.not_not, mem_set_of_eq, Ne.def] at H
exact eq_empty_iff_forall_not_mem.mp H (γ • x) ⟨mem_image_of_mem _ x_in_K₀, h'⟩
#align t2_space_of_properly_discontinuous_smul_of_t2_space t2Space_of_properlyDiscontinuousSMul_of_t2Space
#align t2_space_of_properly_discontinuous_vadd_of_t2_space t2Space_of_properlyDiscontinuousVAdd_of_t2Space
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -542,7 +542,7 @@ is properly discontinuous, that is, for any pair of compact sets `K, L` in `T`,
-/
class ProperlyDiscontinuousSMul (Γ : Type _) (T : Type _) [TopologicalSpace T] [SMul Γ T] :
Prop where
- finite_disjoint_inter_image :
+ finiteₓ_disjoint_inter_image :
∀ {K L : Set T}, IsCompact K → IsCompact L → Set.Finite {γ : Γ | (· • ·) γ '' K ∩ L ≠ ∅}
#align properly_discontinuous_smul ProperlyDiscontinuousSMul
-/
@@ -554,7 +554,7 @@ is properly discontinuous, that is, for any pair of compact sets `K, L` in `T`,
-/
class ProperlyDiscontinuousVAdd (Γ : Type _) (T : Type _) [TopologicalSpace T] [VAdd Γ T] :
Prop where
- finite_disjoint_inter_image :
+ finiteₓ_disjoint_inter_image :
∀ {K L : Set T}, IsCompact K → IsCompact L → Set.Finite {γ : Γ | (· +ᵥ ·) γ '' K ∩ L ≠ ∅}
#align properly_discontinuous_vadd ProperlyDiscontinuousVAdd
-/
@@ -567,14 +567,14 @@ variable {Γ : Type _} [Group Γ] {T : Type _} [TopologicalSpace T] [MulAction
/-- A finite group action is always properly discontinuous. -/
@[to_additive "A finite group action is always properly discontinuous."]
instance (priority := 100) Finite.to_properlyDiscontinuousSMul [Finite Γ] :
- ProperlyDiscontinuousSMul Γ T where finite_disjoint_inter_image _ _ _ _ := Set.toFinite _
+ ProperlyDiscontinuousSMul Γ T where finiteₓ_disjoint_inter_image _ _ _ _ := Set.toFinite _
#align finite.to_properly_discontinuous_smul Finite.to_properlyDiscontinuousSMul
#align finite.to_properly_discontinuous_vadd Finite.to_properlyDiscontinuousVAdd
-/
-export ProperlyDiscontinuousSMul (finite_disjoint_inter_image)
+export ProperlyDiscontinuousSMul (finiteₓ_disjoint_inter_image)
-export ProperlyDiscontinuousVAdd (finite_disjoint_inter_image)
+export ProperlyDiscontinuousVAdd (finiteₓ_disjoint_inter_image)
#print isOpenMap_quotient_mk'_mul /-
/-- The quotient map by a group action is open, i.e. the quotient by a group action is an open
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,11 +3,11 @@ Copyright (c) 2021 Alex Kontorovich, Heather Macbeth. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Alex Kontorovich, Heather Macbeth
-/
-import Mathbin.Topology.Algebra.Constructions
-import Mathbin.Topology.Homeomorph
-import Mathbin.GroupTheory.GroupAction.Basic
-import Mathbin.Topology.Bases
-import Mathbin.Topology.Support
+import Topology.Algebra.Constructions
+import Topology.Homeomorph
+import GroupTheory.GroupAction.Basic
+import Topology.Bases
+import Topology.Support
#align_import topology.algebra.const_mul_action from "leanprover-community/mathlib"@"0ebfdb71919ac6ca5d7fbc61a082fa2519556818"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,11 +2,6 @@
Copyright (c) 2021 Alex Kontorovich, Heather Macbeth. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Alex Kontorovich, Heather Macbeth
-
-! This file was ported from Lean 3 source module topology.algebra.const_mul_action
-! leanprover-community/mathlib commit 0ebfdb71919ac6ca5d7fbc61a082fa2519556818
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Topology.Algebra.Constructions
import Mathbin.Topology.Homeomorph
@@ -14,6 +9,8 @@ import Mathbin.GroupTheory.GroupAction.Basic
import Mathbin.Topology.Bases
import Mathbin.Topology.Support
+#align_import topology.algebra.const_mul_action from "leanprover-community/mathlib"@"0ebfdb71919ac6ca5d7fbc61a082fa2519556818"
+
/-!
# Monoid actions continuous in the second variable
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -172,12 +172,14 @@ instance {ι : Type _} {γ : ι → Type _} [∀ i, TopologicalSpace (γ i)] [
[∀ i, ContinuousConstSMul M (γ i)] : ContinuousConstSMul M (∀ i, γ i) :=
⟨fun _ => continuous_pi fun i => (continuous_apply i).const_smul _⟩
+#print IsCompact.smul /-
@[to_additive]
theorem IsCompact.smul {α β} [SMul α β] [TopologicalSpace β] [ContinuousConstSMul α β] (a : α)
{s : Set β} (hs : IsCompact s) : IsCompact (a • s) :=
hs.image (continuous_id'.const_smul a)
#align is_compact.smul IsCompact.smul
#align is_compact.vadd IsCompact.vadd
+-/
end SMul
@@ -218,41 +220,51 @@ section Group
variable {G : Type _} [TopologicalSpace α] [Group G] [MulAction G α] [ContinuousConstSMul G α]
+#print tendsto_const_smul_iff /-
@[to_additive]
theorem tendsto_const_smul_iff {f : β → α} {l : Filter β} {a : α} (c : G) :
Tendsto (fun x => c • f x) l (𝓝 <| c • a) ↔ Tendsto f l (𝓝 a) :=
⟨fun h => by simpa only [inv_smul_smul] using h.const_smul c⁻¹, fun h => h.const_smul _⟩
#align tendsto_const_smul_iff tendsto_const_smul_iff
#align tendsto_const_vadd_iff tendsto_const_vadd_iff
+-/
variable [TopologicalSpace β] {f : β → α} {b : β} {s : Set β}
+#print continuousWithinAt_const_smul_iff /-
@[to_additive]
theorem continuousWithinAt_const_smul_iff (c : G) :
ContinuousWithinAt (fun x => c • f x) s b ↔ ContinuousWithinAt f s b :=
tendsto_const_smul_iff c
#align continuous_within_at_const_smul_iff continuousWithinAt_const_smul_iff
#align continuous_within_at_const_vadd_iff continuousWithinAt_const_vadd_iff
+-/
+#print continuousOn_const_smul_iff /-
@[to_additive]
theorem continuousOn_const_smul_iff (c : G) :
ContinuousOn (fun x => c • f x) s ↔ ContinuousOn f s :=
forall₂_congr fun b hb => continuousWithinAt_const_smul_iff c
#align continuous_on_const_smul_iff continuousOn_const_smul_iff
#align continuous_on_const_vadd_iff continuousOn_const_vadd_iff
+-/
+#print continuousAt_const_smul_iff /-
@[to_additive]
theorem continuousAt_const_smul_iff (c : G) :
ContinuousAt (fun x => c • f x) b ↔ ContinuousAt f b :=
tendsto_const_smul_iff c
#align continuous_at_const_smul_iff continuousAt_const_smul_iff
#align continuous_at_const_vadd_iff continuousAt_const_vadd_iff
+-/
+#print continuous_const_smul_iff /-
@[to_additive]
theorem continuous_const_smul_iff (c : G) : (Continuous fun x => c • f x) ↔ Continuous f := by
simp only [continuous_iff_continuousAt, continuousAt_const_smul_iff]
#align continuous_const_smul_iff continuous_const_smul_iff
#align continuous_const_vadd_iff continuous_const_vadd_iff
+-/
#print Homeomorph.smul /-
/-- The homeomorphism given by scalar multiplication by a given element of a group `Γ` acting on
@@ -271,47 +283,61 @@ def Homeomorph.smul (γ : G) : α ≃ₜ α
`T` is a homeomorphism from `T` to itself. -/
add_decl_doc Homeomorph.vadd
+#print isOpenMap_smul /-
@[to_additive]
theorem isOpenMap_smul (c : G) : IsOpenMap fun x : α => c • x :=
(Homeomorph.smul c).IsOpenMap
#align is_open_map_smul isOpenMap_smul
#align is_open_map_vadd isOpenMap_vadd
+-/
+#print IsOpen.smul /-
@[to_additive]
theorem IsOpen.smul {s : Set α} (hs : IsOpen s) (c : G) : IsOpen (c • s) :=
isOpenMap_smul c s hs
#align is_open.smul IsOpen.smul
#align is_open.vadd IsOpen.vadd
+-/
+#print isClosedMap_smul /-
@[to_additive]
theorem isClosedMap_smul (c : G) : IsClosedMap fun x : α => c • x :=
(Homeomorph.smul c).IsClosedMap
#align is_closed_map_smul isClosedMap_smul
#align is_closed_map_vadd isClosedMap_vadd
+-/
+#print IsClosed.smul /-
@[to_additive]
theorem IsClosed.smul {s : Set α} (hs : IsClosed s) (c : G) : IsClosed (c • s) :=
isClosedMap_smul c s hs
#align is_closed.smul IsClosed.smul
#align is_closed.vadd IsClosed.vadd
+-/
+#print closure_smul /-
@[to_additive]
theorem closure_smul (c : G) (s : Set α) : closure (c • s) = c • closure s :=
((Homeomorph.smul c).image_closure s).symm
#align closure_smul closure_smul
#align closure_vadd closure_vadd
+-/
+#print Dense.smul /-
@[to_additive]
theorem Dense.smul (c : G) {s : Set α} (hs : Dense s) : Dense (c • s) := by
rw [dense_iff_closure_eq] at hs ⊢ <;> rw [closure_smul, hs, smul_set_univ]
#align dense.smul Dense.smul
#align dense.vadd Dense.vadd
+-/
+#print interior_smul /-
@[to_additive]
theorem interior_smul (c : G) (s : Set α) : interior (c • s) = c • interior s :=
((Homeomorph.smul c).image_interior s).symm
#align interior_smul interior_smul
#align interior_vadd interior_vadd
+-/
end Group
@@ -320,49 +346,67 @@ section GroupWithZero
variable {G₀ : Type _} [TopologicalSpace α] [GroupWithZero G₀] [MulAction G₀ α]
[ContinuousConstSMul G₀ α]
+#print tendsto_const_smul_iff₀ /-
theorem tendsto_const_smul_iff₀ {f : β → α} {l : Filter β} {a : α} {c : G₀} (hc : c ≠ 0) :
Tendsto (fun x => c • f x) l (𝓝 <| c • a) ↔ Tendsto f l (𝓝 a) :=
tendsto_const_smul_iff (Units.mk0 c hc)
#align tendsto_const_smul_iff₀ tendsto_const_smul_iff₀
+-/
variable [TopologicalSpace β] {f : β → α} {b : β} {c : G₀} {s : Set β}
+#print continuousWithinAt_const_smul_iff₀ /-
theorem continuousWithinAt_const_smul_iff₀ (hc : c ≠ 0) :
ContinuousWithinAt (fun x => c • f x) s b ↔ ContinuousWithinAt f s b :=
tendsto_const_smul_iff (Units.mk0 c hc)
#align continuous_within_at_const_smul_iff₀ continuousWithinAt_const_smul_iff₀
+-/
+#print continuousOn_const_smul_iff₀ /-
theorem continuousOn_const_smul_iff₀ (hc : c ≠ 0) :
ContinuousOn (fun x => c • f x) s ↔ ContinuousOn f s :=
continuousOn_const_smul_iff (Units.mk0 c hc)
#align continuous_on_const_smul_iff₀ continuousOn_const_smul_iff₀
+-/
+#print continuousAt_const_smul_iff₀ /-
theorem continuousAt_const_smul_iff₀ (hc : c ≠ 0) :
ContinuousAt (fun x => c • f x) b ↔ ContinuousAt f b :=
continuousAt_const_smul_iff (Units.mk0 c hc)
#align continuous_at_const_smul_iff₀ continuousAt_const_smul_iff₀
+-/
+#print continuous_const_smul_iff₀ /-
theorem continuous_const_smul_iff₀ (hc : c ≠ 0) : (Continuous fun x => c • f x) ↔ Continuous f :=
continuous_const_smul_iff (Units.mk0 c hc)
#align continuous_const_smul_iff₀ continuous_const_smul_iff₀
+-/
+#print Homeomorph.smulOfNeZero /-
/-- Scalar multiplication by a non-zero element of a group with zero acting on `α` is a
homeomorphism from `α` onto itself. -/
protected def Homeomorph.smulOfNeZero (c : G₀) (hc : c ≠ 0) : α ≃ₜ α :=
Homeomorph.smul (Units.mk0 c hc)
#align homeomorph.smul_of_ne_zero Homeomorph.smulOfNeZero
+-/
+#print isOpenMap_smul₀ /-
theorem isOpenMap_smul₀ {c : G₀} (hc : c ≠ 0) : IsOpenMap fun x : α => c • x :=
(Homeomorph.smulOfNeZero c hc).IsOpenMap
#align is_open_map_smul₀ isOpenMap_smul₀
+-/
+#print IsOpen.smul₀ /-
theorem IsOpen.smul₀ {c : G₀} {s : Set α} (hs : IsOpen s) (hc : c ≠ 0) : IsOpen (c • s) :=
isOpenMap_smul₀ hc s hs
#align is_open.smul₀ IsOpen.smul₀
+-/
+#print interior_smul₀ /-
theorem interior_smul₀ {c : G₀} (hc : c ≠ 0) (s : Set α) : interior (c • s) = c • interior s :=
((Homeomorph.smulOfNeZero c hc).image_interior s).symm
#align interior_smul₀ interior_smul₀
+-/
#print closure_smul₀ /-
theorem closure_smul₀ {E} [Zero E] [MulActionWithZero G₀ E] [TopologicalSpace E] [T1Space E]
@@ -376,6 +420,7 @@ theorem closure_smul₀ {E} [Zero E] [MulActionWithZero G₀ E] [TopologicalSpac
#align closure_smul₀ closure_smul₀
-/
+#print isClosedMap_smul_of_ne_zero /-
/-- `smul` is a closed map in the second argument.
The lemma that `smul` is a closed map in the first argument (for a normed space over a complete
@@ -383,12 +428,16 @@ normed field) is `is_closed_map_smul_left` in `analysis.normed_space.finite_dime
theorem isClosedMap_smul_of_ne_zero {c : G₀} (hc : c ≠ 0) : IsClosedMap fun x : α => c • x :=
(Homeomorph.smulOfNeZero c hc).IsClosedMap
#align is_closed_map_smul_of_ne_zero isClosedMap_smul_of_ne_zero
+-/
+#print IsClosed.smul_of_ne_zero /-
theorem IsClosed.smul_of_ne_zero {c : G₀} {s : Set α} (hs : IsClosed s) (hc : c ≠ 0) :
IsClosed (c • s) :=
isClosedMap_smul_of_ne_zero hc s hs
#align is_closed.smul_of_ne_zero IsClosed.smul_of_ne_zero
+-/
+#print isClosedMap_smul₀ /-
/-- `smul` is a closed map in the second argument.
The lemma that `smul` is a closed map in the first argument (for a normed space over a complete
@@ -400,22 +449,29 @@ theorem isClosedMap_smul₀ {𝕜 M : Type _} [DivisionRing 𝕜] [AddCommMonoid
· simp only [zero_smul]; exact isClosedMap_const
· exact (Homeomorph.smulOfNeZero c hne).IsClosedMap
#align is_closed_map_smul₀ isClosedMap_smul₀
+-/
+#print IsClosed.smul₀ /-
theorem IsClosed.smul₀ {𝕜 M : Type _} [DivisionRing 𝕜] [AddCommMonoid M] [TopologicalSpace M]
[T1Space M] [Module 𝕜 M] [ContinuousConstSMul 𝕜 M] (c : 𝕜) {s : Set M} (hs : IsClosed s) :
IsClosed (c • s) :=
isClosedMap_smul₀ c s hs
#align is_closed.smul₀ IsClosed.smul₀
+-/
+#print HasCompactMulSupport.comp_smul /-
theorem HasCompactMulSupport.comp_smul {β : Type _} [One β] {f : α → β} (h : HasCompactMulSupport f)
{c : G₀} (hc : c ≠ 0) : HasCompactMulSupport fun x => f (c • x) :=
h.comp_homeomorph (Homeomorph.smulOfNeZero c hc)
#align has_compact_mul_support.comp_smul HasCompactMulSupport.comp_smul
+-/
+#print HasCompactSupport.comp_smul /-
theorem HasCompactSupport.comp_smul {β : Type _} [Zero β] {f : α → β} (h : HasCompactSupport f)
{c : G₀} (hc : c ≠ 0) : HasCompactSupport fun x => f (c • x) :=
h.comp_homeomorph (Homeomorph.smulOfNeZero c hc)
#align has_compact_support.comp_smul HasCompactSupport.comp_smul
+-/
attribute [to_additive HasCompactSupport.comp_smul] HasCompactMulSupport.comp_smul
@@ -425,46 +481,60 @@ namespace IsUnit
variable [Monoid M] [TopologicalSpace α] [MulAction M α] [ContinuousConstSMul M α]
+#print IsUnit.tendsto_const_smul_iff /-
theorem tendsto_const_smul_iff {f : β → α} {l : Filter β} {a : α} {c : M} (hc : IsUnit c) :
Tendsto (fun x => c • f x) l (𝓝 <| c • a) ↔ Tendsto f l (𝓝 a) :=
let ⟨u, hu⟩ := hc
hu ▸ tendsto_const_smul_iff u
#align is_unit.tendsto_const_smul_iff IsUnit.tendsto_const_smul_iff
+-/
variable [TopologicalSpace β] {f : β → α} {b : β} {c : M} {s : Set β}
+#print IsUnit.continuousWithinAt_const_smul_iff /-
theorem continuousWithinAt_const_smul_iff (hc : IsUnit c) :
ContinuousWithinAt (fun x => c • f x) s b ↔ ContinuousWithinAt f s b :=
let ⟨u, hu⟩ := hc
hu ▸ continuousWithinAt_const_smul_iff u
#align is_unit.continuous_within_at_const_smul_iff IsUnit.continuousWithinAt_const_smul_iff
+-/
+#print IsUnit.continuousOn_const_smul_iff /-
theorem continuousOn_const_smul_iff (hc : IsUnit c) :
ContinuousOn (fun x => c • f x) s ↔ ContinuousOn f s :=
let ⟨u, hu⟩ := hc
hu ▸ continuousOn_const_smul_iff u
#align is_unit.continuous_on_const_smul_iff IsUnit.continuousOn_const_smul_iff
+-/
+#print IsUnit.continuousAt_const_smul_iff /-
theorem continuousAt_const_smul_iff (hc : IsUnit c) :
ContinuousAt (fun x => c • f x) b ↔ ContinuousAt f b :=
let ⟨u, hu⟩ := hc
hu ▸ continuousAt_const_smul_iff u
#align is_unit.continuous_at_const_smul_iff IsUnit.continuousAt_const_smul_iff
+-/
+#print IsUnit.continuous_const_smul_iff /-
theorem continuous_const_smul_iff (hc : IsUnit c) : (Continuous fun x => c • f x) ↔ Continuous f :=
let ⟨u, hu⟩ := hc
hu ▸ continuous_const_smul_iff u
#align is_unit.continuous_const_smul_iff IsUnit.continuous_const_smul_iff
+-/
+#print IsUnit.isOpenMap_smul /-
theorem isOpenMap_smul (hc : IsUnit c) : IsOpenMap fun x : α => c • x :=
let ⟨u, hu⟩ := hc
hu ▸ isOpenMap_smul u
#align is_unit.is_open_map_smul IsUnit.isOpenMap_smul
+-/
+#print IsUnit.isClosedMap_smul /-
theorem isClosedMap_smul (hc : IsUnit c) : IsClosedMap fun x : α => c • x :=
let ⟨u, hu⟩ := hc
hu ▸ isClosedMap_smul u
#align is_unit.is_closed_map_smul IsUnit.isClosedMap_smul
+-/
end IsUnit
@@ -509,6 +579,7 @@ export ProperlyDiscontinuousSMul (finite_disjoint_inter_image)
export ProperlyDiscontinuousVAdd (finite_disjoint_inter_image)
+#print isOpenMap_quotient_mk'_mul /-
/-- The quotient map by a group action is open, i.e. the quotient by a group action is an open
quotient. -/
@[to_additive
@@ -521,6 +592,7 @@ theorem isOpenMap_quotient_mk'_mul [ContinuousConstSMul Γ T] :
exact isOpen_iUnion fun γ => (Homeomorph.smul γ).IsOpenMap U hU
#align is_open_map_quotient_mk_mul isOpenMap_quotient_mk'_mul
#align is_open_map_quotient_mk_add isOpenMap_quotient_mk'_add
+-/
#print t2Space_of_properlyDiscontinuousSMul_of_t2Space /-
/-- The quotient by a discontinuous group action of a locally compact t2 space is t2. -/
@@ -580,6 +652,7 @@ section MulAction
variable {G₀ : Type _} [GroupWithZero G₀] [MulAction G₀ α] [TopologicalSpace α]
[ContinuousConstSMul G₀ α]
+#print set_smul_mem_nhds_smul /-
/-- Scalar multiplication preserves neighborhoods. -/
theorem set_smul_mem_nhds_smul {c : G₀} {s : Set α} {x : α} (hs : s ∈ 𝓝 x) (hc : c ≠ 0) :
c • s ∈ 𝓝 (c • x : α) := by
@@ -587,7 +660,9 @@ theorem set_smul_mem_nhds_smul {c : G₀} {s : Set α} {x : α} (hs : s ∈ 𝓝
obtain ⟨U, hs', hU, hU'⟩ := hs
exact ⟨c • U, Set.smul_set_mono hs', hU.smul₀ hc, Set.smul_mem_smul_set hU'⟩
#align set_smul_mem_nhds_smul set_smul_mem_nhds_smul
+-/
+#print set_smul_mem_nhds_smul_iff /-
theorem set_smul_mem_nhds_smul_iff {c : G₀} {s : Set α} {x : α} (hc : c ≠ 0) :
c • s ∈ 𝓝 (c • x : α) ↔ s ∈ 𝓝 x :=
by
@@ -595,6 +670,7 @@ theorem set_smul_mem_nhds_smul_iff {c : G₀} {s : Set α} {x : α} (hc : c ≠
rw [← inv_smul_smul₀ hc x, ← inv_smul_smul₀ hc s]
exact set_smul_mem_nhds_smul h (inv_ne_zero hc)
#align set_smul_mem_nhds_smul_iff set_smul_mem_nhds_smul_iff
+-/
end MulAction
@@ -603,12 +679,14 @@ section DistribMulAction
variable {G₀ : Type _} [GroupWithZero G₀] [AddMonoid α] [DistribMulAction G₀ α] [TopologicalSpace α]
[ContinuousConstSMul G₀ α]
+#print set_smul_mem_nhds_zero_iff /-
theorem set_smul_mem_nhds_zero_iff {s : Set α} {c : G₀} (hc : c ≠ 0) :
c • s ∈ 𝓝 (0 : α) ↔ s ∈ 𝓝 (0 : α) :=
by
refine' Iff.trans _ (set_smul_mem_nhds_smul_iff hc)
rw [smul_zero]
#align set_smul_mem_nhds_zero_iff set_smul_mem_nhds_zero_iff
+-/
end DistribMulAction
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -476,7 +476,7 @@ is properly discontinuous, that is, for any pair of compact sets `K, L` in `T`,
class ProperlyDiscontinuousSMul (Γ : Type _) (T : Type _) [TopologicalSpace T] [SMul Γ T] :
Prop where
finite_disjoint_inter_image :
- ∀ {K L : Set T}, IsCompact K → IsCompact L → Set.Finite { γ : Γ | (· • ·) γ '' K ∩ L ≠ ∅ }
+ ∀ {K L : Set T}, IsCompact K → IsCompact L → Set.Finite {γ : Γ | (· • ·) γ '' K ∩ L ≠ ∅}
#align properly_discontinuous_smul ProperlyDiscontinuousSMul
-/
@@ -488,7 +488,7 @@ is properly discontinuous, that is, for any pair of compact sets `K, L` in `T`,
class ProperlyDiscontinuousVAdd (Γ : Type _) (T : Type _) [TopologicalSpace T] [VAdd Γ T] :
Prop where
finite_disjoint_inter_image :
- ∀ {K L : Set T}, IsCompact K → IsCompact L → Set.Finite { γ : Γ | (· +ᵥ ·) γ '' K ∩ L ≠ ∅ }
+ ∀ {K L : Set T}, IsCompact K → IsCompact L → Set.Finite {γ : Γ | (· +ᵥ ·) γ '' K ∩ L ≠ ∅}
#align properly_discontinuous_vadd ProperlyDiscontinuousVAdd
-/
@@ -538,7 +538,7 @@ instance (priority := 100) t2Space_of_properlyDiscontinuousSMul_of_t2Space [T2Sp
have hx₀y₀ : x₀ ≠ y₀ := ne_of_apply_ne _ hxy
have hγx₀y₀ : ∀ γ : Γ, γ • x₀ ≠ y₀ := not_exists.mp (mt Quotient.sound hxy.symm : _)
obtain ⟨K₀, L₀, K₀_in, L₀_in, hK₀, hL₀, hK₀L₀⟩ := t2_separation_compact_nhds hx₀y₀
- let bad_Γ_set := { γ : Γ | (· • ·) γ '' K₀ ∩ L₀ ≠ ∅ }
+ let bad_Γ_set := {γ : Γ | (· • ·) γ '' K₀ ∩ L₀ ≠ ∅}
have bad_Γ_finite : bad_Γ_set.finite := finite_disjoint_inter_image hK₀ hL₀
choose u v hu hv u_v_disjoint using fun γ => t2_separation_nhds (hγx₀y₀ γ)
let U₀₀ := ⋂ γ ∈ bad_Γ_set, (· • ·) γ ⁻¹' u γ
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -303,7 +303,7 @@ theorem closure_smul (c : G) (s : Set α) : closure (c • s) = c • closure s
@[to_additive]
theorem Dense.smul (c : G) {s : Set α} (hs : Dense s) : Dense (c • s) := by
- rw [dense_iff_closure_eq] at hs⊢ <;> rw [closure_smul, hs, smul_set_univ]
+ rw [dense_iff_closure_eq] at hs ⊢ <;> rw [closure_smul, hs, smul_set_univ]
#align dense.smul Dense.smul
#align dense.vadd Dense.vadd
@@ -474,7 +474,7 @@ is properly discontinuous, that is, for any pair of compact sets `K, L` in `T`,
`γ:Γ` move `K` to have nontrivial intersection with `L`.
-/
class ProperlyDiscontinuousSMul (Γ : Type _) (T : Type _) [TopologicalSpace T] [SMul Γ T] :
- Prop where
+ Prop where
finite_disjoint_inter_image :
∀ {K L : Set T}, IsCompact K → IsCompact L → Set.Finite { γ : Γ | (· • ·) γ '' K ∩ L ≠ ∅ }
#align properly_discontinuous_smul ProperlyDiscontinuousSMul
@@ -486,7 +486,7 @@ is properly discontinuous, that is, for any pair of compact sets `K, L` in `T`,
`γ:Γ` move `K` to have nontrivial intersection with `L`.
-/
class ProperlyDiscontinuousVAdd (Γ : Type _) (T : Type _) [TopologicalSpace T] [VAdd Γ T] :
- Prop where
+ Prop where
finite_disjoint_inter_image :
∀ {K L : Set T}, IsCompact K → IsCompact L → Set.Finite { γ : Γ | (· +ᵥ ·) γ '' K ∩ L ≠ ∅ }
#align properly_discontinuous_vadd ProperlyDiscontinuousVAdd
@@ -556,7 +556,7 @@ instance (priority := 100) t2Space_of_properlyDiscontinuousSMul_of_t2Space [T2Sp
by_cases H : γ ∈ bad_Γ_set
· exact fun h => (u_v_disjoint γ).le_bot ⟨mem_Inter₂.mp x_in_U₀₀ γ H, mem_Inter₂.mp h.1 γ H⟩
· rintro ⟨-, h'⟩
- simp only [image_smul, Classical.not_not, mem_set_of_eq, Ne.def] at H
+ simp only [image_smul, Classical.not_not, mem_set_of_eq, Ne.def] at H
exact eq_empty_iff_forall_not_mem.mp H (γ • x) ⟨mem_image_of_mem _ x_in_K₀, h'⟩
#align t2_space_of_properly_discontinuous_smul_of_t2_space t2Space_of_properlyDiscontinuousSMul_of_t2Space
#align t2_space_of_properly_discontinuous_vadd_of_t2_space t2Space_of_properlyDiscontinuousVAdd_of_t2Space
@@ -583,7 +583,7 @@ variable {G₀ : Type _} [GroupWithZero G₀] [MulAction G₀ α] [TopologicalSp
/-- Scalar multiplication preserves neighborhoods. -/
theorem set_smul_mem_nhds_smul {c : G₀} {s : Set α} {x : α} (hs : s ∈ 𝓝 x) (hc : c ≠ 0) :
c • s ∈ 𝓝 (c • x : α) := by
- rw [mem_nhds_iff] at hs⊢
+ rw [mem_nhds_iff] at hs ⊢
obtain ⟨U, hs', hU, hU'⟩ := hs
exact ⟨c • U, Set.smul_set_mono hs', hU.smul₀ hc, Set.smul_mem_smul_set hU'⟩
#align set_smul_mem_nhds_smul set_smul_mem_nhds_smul
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -46,7 +46,7 @@ Hausdorff, discrete group, properly discontinuous, quotient space
-/
-open Topology Pointwise
+open scoped Topology Pointwise
open Filter Set TopologicalSpace
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -172,12 +172,6 @@ instance {ι : Type _} {γ : ι → Type _} [∀ i, TopologicalSpace (γ i)] [
[∀ i, ContinuousConstSMul M (γ i)] : ContinuousConstSMul M (∀ i, γ i) :=
⟨fun _ => continuous_pi fun i => (continuous_apply i).const_smul _⟩
-/- warning: is_compact.smul -> IsCompact.smul is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} [_inst_5 : SMul.{u1, u2} α β] [_inst_6 : TopologicalSpace.{u2} β] [_inst_7 : ContinuousConstSMul.{u1, u2} α β _inst_6 _inst_5] (a : α) {s : Set.{u2} β}, (IsCompact.{u2} β _inst_6 s) -> (IsCompact.{u2} β _inst_6 (SMul.smul.{u1, u2} α (Set.{u2} β) (Set.smulSet.{u1, u2} α β _inst_5) a s))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} [_inst_5 : SMul.{u2, u1} α β] [_inst_6 : TopologicalSpace.{u1} β] [_inst_7 : ContinuousConstSMul.{u2, u1} α β _inst_6 _inst_5] (a : α) {s : Set.{u1} β}, (IsCompact.{u1} β _inst_6 s) -> (IsCompact.{u1} β _inst_6 (HSMul.hSMul.{u2, u1, u1} α (Set.{u1} β) (Set.{u1} β) (instHSMul.{u2, u1} α (Set.{u1} β) (Set.smulSet.{u2, u1} α β _inst_5)) a s))
-Case conversion may be inaccurate. Consider using '#align is_compact.smul IsCompact.smulₓ'. -/
@[to_additive]
theorem IsCompact.smul {α β} [SMul α β] [TopologicalSpace β] [ContinuousConstSMul α β] (a : α)
{s : Set β} (hs : IsCompact s) : IsCompact (a • s) :=
@@ -224,12 +218,6 @@ section Group
variable {G : Type _} [TopologicalSpace α] [Group G] [MulAction G α] [ContinuousConstSMul G α]
-/- warning: tendsto_const_smul_iff -> tendsto_const_smul_iff is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {G : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Group.{u3} G] [_inst_3 : MulAction.{u3, u1} G α (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_2))] [_inst_4 : ContinuousConstSMul.{u3, u1} G α _inst_1 (MulAction.toHasSmul.{u3, u1} G α (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_2)) _inst_3)] {f : β -> α} {l : Filter.{u2} β} {a : α} (c : G), Iff (Filter.Tendsto.{u2, u1} β α (fun (x : β) => SMul.smul.{u3, u1} G α (MulAction.toHasSmul.{u3, u1} G α (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_2)) _inst_3) c (f x)) l (nhds.{u1} α _inst_1 (SMul.smul.{u3, u1} G α (MulAction.toHasSmul.{u3, u1} G α (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_2)) _inst_3) c a))) (Filter.Tendsto.{u2, u1} β α f l (nhds.{u1} α _inst_1 a))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u3}} {G : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : Group.{u1} G] [_inst_3 : MulAction.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2))] [_inst_4 : ContinuousConstSMul.{u1, u2} G α _inst_1 (MulAction.toSMul.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2)) _inst_3)] {f : β -> α} {l : Filter.{u3} β} {a : α} (c : G), Iff (Filter.Tendsto.{u3, u2} β α (fun (x : β) => HSMul.hSMul.{u1, u2, u2} G α α (instHSMul.{u1, u2} G α (MulAction.toSMul.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2)) _inst_3)) c (f x)) l (nhds.{u2} α _inst_1 (HSMul.hSMul.{u1, u2, u2} G α α (instHSMul.{u1, u2} G α (MulAction.toSMul.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2)) _inst_3)) c a))) (Filter.Tendsto.{u3, u2} β α f l (nhds.{u2} α _inst_1 a))
-Case conversion may be inaccurate. Consider using '#align tendsto_const_smul_iff tendsto_const_smul_iffₓ'. -/
@[to_additive]
theorem tendsto_const_smul_iff {f : β → α} {l : Filter β} {a : α} (c : G) :
Tendsto (fun x => c • f x) l (𝓝 <| c • a) ↔ Tendsto f l (𝓝 a) :=
@@ -239,12 +227,6 @@ theorem tendsto_const_smul_iff {f : β → α} {l : Filter β} {a : α} (c : G)
variable [TopologicalSpace β] {f : β → α} {b : β} {s : Set β}
-/- warning: continuous_within_at_const_smul_iff -> continuousWithinAt_const_smul_iff is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {G : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Group.{u3} G] [_inst_3 : MulAction.{u3, u1} G α (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_2))] [_inst_4 : ContinuousConstSMul.{u3, u1} G α _inst_1 (MulAction.toHasSmul.{u3, u1} G α (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_2)) _inst_3)] [_inst_5 : TopologicalSpace.{u2} β] {f : β -> α} {b : β} {s : Set.{u2} β} (c : G), Iff (ContinuousWithinAt.{u2, u1} β α _inst_5 _inst_1 (fun (x : β) => SMul.smul.{u3, u1} G α (MulAction.toHasSmul.{u3, u1} G α (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_2)) _inst_3) c (f x)) s b) (ContinuousWithinAt.{u2, u1} β α _inst_5 _inst_1 f s b)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u3}} {G : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : Group.{u1} G] [_inst_3 : MulAction.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2))] [_inst_4 : ContinuousConstSMul.{u1, u2} G α _inst_1 (MulAction.toSMul.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2)) _inst_3)] [_inst_5 : TopologicalSpace.{u3} β] {f : β -> α} {b : β} {s : Set.{u3} β} (c : G), Iff (ContinuousWithinAt.{u3, u2} β α _inst_5 _inst_1 (fun (x : β) => HSMul.hSMul.{u1, u2, u2} G α α (instHSMul.{u1, u2} G α (MulAction.toSMul.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2)) _inst_3)) c (f x)) s b) (ContinuousWithinAt.{u3, u2} β α _inst_5 _inst_1 f s b)
-Case conversion may be inaccurate. Consider using '#align continuous_within_at_const_smul_iff continuousWithinAt_const_smul_iffₓ'. -/
@[to_additive]
theorem continuousWithinAt_const_smul_iff (c : G) :
ContinuousWithinAt (fun x => c • f x) s b ↔ ContinuousWithinAt f s b :=
@@ -252,12 +234,6 @@ theorem continuousWithinAt_const_smul_iff (c : G) :
#align continuous_within_at_const_smul_iff continuousWithinAt_const_smul_iff
#align continuous_within_at_const_vadd_iff continuousWithinAt_const_vadd_iff
-/- warning: continuous_on_const_smul_iff -> continuousOn_const_smul_iff is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {G : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Group.{u3} G] [_inst_3 : MulAction.{u3, u1} G α (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_2))] [_inst_4 : ContinuousConstSMul.{u3, u1} G α _inst_1 (MulAction.toHasSmul.{u3, u1} G α (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_2)) _inst_3)] [_inst_5 : TopologicalSpace.{u2} β] {f : β -> α} {s : Set.{u2} β} (c : G), Iff (ContinuousOn.{u2, u1} β α _inst_5 _inst_1 (fun (x : β) => SMul.smul.{u3, u1} G α (MulAction.toHasSmul.{u3, u1} G α (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_2)) _inst_3) c (f x)) s) (ContinuousOn.{u2, u1} β α _inst_5 _inst_1 f s)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u3}} {G : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : Group.{u1} G] [_inst_3 : MulAction.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2))] [_inst_4 : ContinuousConstSMul.{u1, u2} G α _inst_1 (MulAction.toSMul.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2)) _inst_3)] [_inst_5 : TopologicalSpace.{u3} β] {f : β -> α} {s : Set.{u3} β} (c : G), Iff (ContinuousOn.{u3, u2} β α _inst_5 _inst_1 (fun (x : β) => HSMul.hSMul.{u1, u2, u2} G α α (instHSMul.{u1, u2} G α (MulAction.toSMul.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2)) _inst_3)) c (f x)) s) (ContinuousOn.{u3, u2} β α _inst_5 _inst_1 f s)
-Case conversion may be inaccurate. Consider using '#align continuous_on_const_smul_iff continuousOn_const_smul_iffₓ'. -/
@[to_additive]
theorem continuousOn_const_smul_iff (c : G) :
ContinuousOn (fun x => c • f x) s ↔ ContinuousOn f s :=
@@ -265,12 +241,6 @@ theorem continuousOn_const_smul_iff (c : G) :
#align continuous_on_const_smul_iff continuousOn_const_smul_iff
#align continuous_on_const_vadd_iff continuousOn_const_vadd_iff
-/- warning: continuous_at_const_smul_iff -> continuousAt_const_smul_iff is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {G : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Group.{u3} G] [_inst_3 : MulAction.{u3, u1} G α (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_2))] [_inst_4 : ContinuousConstSMul.{u3, u1} G α _inst_1 (MulAction.toHasSmul.{u3, u1} G α (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_2)) _inst_3)] [_inst_5 : TopologicalSpace.{u2} β] {f : β -> α} {b : β} (c : G), Iff (ContinuousAt.{u2, u1} β α _inst_5 _inst_1 (fun (x : β) => SMul.smul.{u3, u1} G α (MulAction.toHasSmul.{u3, u1} G α (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_2)) _inst_3) c (f x)) b) (ContinuousAt.{u2, u1} β α _inst_5 _inst_1 f b)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u3}} {G : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : Group.{u1} G] [_inst_3 : MulAction.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2))] [_inst_4 : ContinuousConstSMul.{u1, u2} G α _inst_1 (MulAction.toSMul.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2)) _inst_3)] [_inst_5 : TopologicalSpace.{u3} β] {f : β -> α} {b : β} (c : G), Iff (ContinuousAt.{u3, u2} β α _inst_5 _inst_1 (fun (x : β) => HSMul.hSMul.{u1, u2, u2} G α α (instHSMul.{u1, u2} G α (MulAction.toSMul.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2)) _inst_3)) c (f x)) b) (ContinuousAt.{u3, u2} β α _inst_5 _inst_1 f b)
-Case conversion may be inaccurate. Consider using '#align continuous_at_const_smul_iff continuousAt_const_smul_iffₓ'. -/
@[to_additive]
theorem continuousAt_const_smul_iff (c : G) :
ContinuousAt (fun x => c • f x) b ↔ ContinuousAt f b :=
@@ -278,12 +248,6 @@ theorem continuousAt_const_smul_iff (c : G) :
#align continuous_at_const_smul_iff continuousAt_const_smul_iff
#align continuous_at_const_vadd_iff continuousAt_const_vadd_iff
-/- warning: continuous_const_smul_iff -> continuous_const_smul_iff is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {G : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Group.{u3} G] [_inst_3 : MulAction.{u3, u1} G α (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_2))] [_inst_4 : ContinuousConstSMul.{u3, u1} G α _inst_1 (MulAction.toHasSmul.{u3, u1} G α (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_2)) _inst_3)] [_inst_5 : TopologicalSpace.{u2} β] {f : β -> α} (c : G), Iff (Continuous.{u2, u1} β α _inst_5 _inst_1 (fun (x : β) => SMul.smul.{u3, u1} G α (MulAction.toHasSmul.{u3, u1} G α (DivInvMonoid.toMonoid.{u3} G (Group.toDivInvMonoid.{u3} G _inst_2)) _inst_3) c (f x))) (Continuous.{u2, u1} β α _inst_5 _inst_1 f)
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u3}} {G : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : Group.{u1} G] [_inst_3 : MulAction.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2))] [_inst_4 : ContinuousConstSMul.{u1, u2} G α _inst_1 (MulAction.toSMul.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2)) _inst_3)] [_inst_5 : TopologicalSpace.{u3} β] {f : β -> α} (c : G), Iff (Continuous.{u3, u2} β α _inst_5 _inst_1 (fun (x : β) => HSMul.hSMul.{u1, u2, u2} G α α (instHSMul.{u1, u2} G α (MulAction.toSMul.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2)) _inst_3)) c (f x))) (Continuous.{u3, u2} β α _inst_5 _inst_1 f)
-Case conversion may be inaccurate. Consider using '#align continuous_const_smul_iff continuous_const_smul_iffₓ'. -/
@[to_additive]
theorem continuous_const_smul_iff (c : G) : (Continuous fun x => c • f x) ↔ Continuous f := by
simp only [continuous_iff_continuousAt, continuousAt_const_smul_iff]
@@ -307,84 +271,42 @@ def Homeomorph.smul (γ : G) : α ≃ₜ α
`T` is a homeomorphism from `T` to itself. -/
add_decl_doc Homeomorph.vadd
-/- warning: is_open_map_smul -> isOpenMap_smul is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Group.{u2} G] [_inst_3 : MulAction.{u2, u1} G α (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_2))] [_inst_4 : ContinuousConstSMul.{u2, u1} G α _inst_1 (MulAction.toHasSmul.{u2, u1} G α (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_2)) _inst_3)] (c : G), IsOpenMap.{u1, u1} α α _inst_1 _inst_1 (fun (x : α) => SMul.smul.{u2, u1} G α (MulAction.toHasSmul.{u2, u1} G α (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_2)) _inst_3) c x)
-but is expected to have type
- forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : Group.{u1} G] [_inst_3 : MulAction.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2))] [_inst_4 : ContinuousConstSMul.{u1, u2} G α _inst_1 (MulAction.toSMul.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2)) _inst_3)] (c : G), IsOpenMap.{u2, u2} α α _inst_1 _inst_1 (fun (x : α) => HSMul.hSMul.{u1, u2, u2} G α α (instHSMul.{u1, u2} G α (MulAction.toSMul.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2)) _inst_3)) c x)
-Case conversion may be inaccurate. Consider using '#align is_open_map_smul isOpenMap_smulₓ'. -/
@[to_additive]
theorem isOpenMap_smul (c : G) : IsOpenMap fun x : α => c • x :=
(Homeomorph.smul c).IsOpenMap
#align is_open_map_smul isOpenMap_smul
#align is_open_map_vadd isOpenMap_vadd
-/- warning: is_open.smul -> IsOpen.smul is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Group.{u2} G] [_inst_3 : MulAction.{u2, u1} G α (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_2))] [_inst_4 : ContinuousConstSMul.{u2, u1} G α _inst_1 (MulAction.toHasSmul.{u2, u1} G α (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_2)) _inst_3)] {s : Set.{u1} α}, (IsOpen.{u1} α _inst_1 s) -> (forall (c : G), IsOpen.{u1} α _inst_1 (SMul.smul.{u2, u1} G (Set.{u1} α) (Set.smulSet.{u2, u1} G α (MulAction.toHasSmul.{u2, u1} G α (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_2)) _inst_3)) c s))
-but is expected to have type
- forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : Group.{u1} G] [_inst_3 : MulAction.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2))] [_inst_4 : ContinuousConstSMul.{u1, u2} G α _inst_1 (MulAction.toSMul.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2)) _inst_3)] {s : Set.{u2} α}, (IsOpen.{u2} α _inst_1 s) -> (forall (c : G), IsOpen.{u2} α _inst_1 (HSMul.hSMul.{u1, u2, u2} G (Set.{u2} α) (Set.{u2} α) (instHSMul.{u1, u2} G (Set.{u2} α) (Set.smulSet.{u1, u2} G α (MulAction.toSMul.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2)) _inst_3))) c s))
-Case conversion may be inaccurate. Consider using '#align is_open.smul IsOpen.smulₓ'. -/
@[to_additive]
theorem IsOpen.smul {s : Set α} (hs : IsOpen s) (c : G) : IsOpen (c • s) :=
isOpenMap_smul c s hs
#align is_open.smul IsOpen.smul
#align is_open.vadd IsOpen.vadd
-/- warning: is_closed_map_smul -> isClosedMap_smul is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Group.{u2} G] [_inst_3 : MulAction.{u2, u1} G α (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_2))] [_inst_4 : ContinuousConstSMul.{u2, u1} G α _inst_1 (MulAction.toHasSmul.{u2, u1} G α (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_2)) _inst_3)] (c : G), IsClosedMap.{u1, u1} α α _inst_1 _inst_1 (fun (x : α) => SMul.smul.{u2, u1} G α (MulAction.toHasSmul.{u2, u1} G α (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_2)) _inst_3) c x)
-but is expected to have type
- forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : Group.{u1} G] [_inst_3 : MulAction.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2))] [_inst_4 : ContinuousConstSMul.{u1, u2} G α _inst_1 (MulAction.toSMul.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2)) _inst_3)] (c : G), IsClosedMap.{u2, u2} α α _inst_1 _inst_1 (fun (x : α) => HSMul.hSMul.{u1, u2, u2} G α α (instHSMul.{u1, u2} G α (MulAction.toSMul.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2)) _inst_3)) c x)
-Case conversion may be inaccurate. Consider using '#align is_closed_map_smul isClosedMap_smulₓ'. -/
@[to_additive]
theorem isClosedMap_smul (c : G) : IsClosedMap fun x : α => c • x :=
(Homeomorph.smul c).IsClosedMap
#align is_closed_map_smul isClosedMap_smul
#align is_closed_map_vadd isClosedMap_vadd
-/- warning: is_closed.smul -> IsClosed.smul is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Group.{u2} G] [_inst_3 : MulAction.{u2, u1} G α (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_2))] [_inst_4 : ContinuousConstSMul.{u2, u1} G α _inst_1 (MulAction.toHasSmul.{u2, u1} G α (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_2)) _inst_3)] {s : Set.{u1} α}, (IsClosed.{u1} α _inst_1 s) -> (forall (c : G), IsClosed.{u1} α _inst_1 (SMul.smul.{u2, u1} G (Set.{u1} α) (Set.smulSet.{u2, u1} G α (MulAction.toHasSmul.{u2, u1} G α (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_2)) _inst_3)) c s))
-but is expected to have type
- forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : Group.{u1} G] [_inst_3 : MulAction.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2))] [_inst_4 : ContinuousConstSMul.{u1, u2} G α _inst_1 (MulAction.toSMul.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2)) _inst_3)] {s : Set.{u2} α}, (IsClosed.{u2} α _inst_1 s) -> (forall (c : G), IsClosed.{u2} α _inst_1 (HSMul.hSMul.{u1, u2, u2} G (Set.{u2} α) (Set.{u2} α) (instHSMul.{u1, u2} G (Set.{u2} α) (Set.smulSet.{u1, u2} G α (MulAction.toSMul.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2)) _inst_3))) c s))
-Case conversion may be inaccurate. Consider using '#align is_closed.smul IsClosed.smulₓ'. -/
@[to_additive]
theorem IsClosed.smul {s : Set α} (hs : IsClosed s) (c : G) : IsClosed (c • s) :=
isClosedMap_smul c s hs
#align is_closed.smul IsClosed.smul
#align is_closed.vadd IsClosed.vadd
-/- warning: closure_smul -> closure_smul is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Group.{u2} G] [_inst_3 : MulAction.{u2, u1} G α (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_2))] [_inst_4 : ContinuousConstSMul.{u2, u1} G α _inst_1 (MulAction.toHasSmul.{u2, u1} G α (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_2)) _inst_3)] (c : G) (s : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (closure.{u1} α _inst_1 (SMul.smul.{u2, u1} G (Set.{u1} α) (Set.smulSet.{u2, u1} G α (MulAction.toHasSmul.{u2, u1} G α (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_2)) _inst_3)) c s)) (SMul.smul.{u2, u1} G (Set.{u1} α) (Set.smulSet.{u2, u1} G α (MulAction.toHasSmul.{u2, u1} G α (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_2)) _inst_3)) c (closure.{u1} α _inst_1 s))
-but is expected to have type
- forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : Group.{u1} G] [_inst_3 : MulAction.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2))] [_inst_4 : ContinuousConstSMul.{u1, u2} G α _inst_1 (MulAction.toSMul.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2)) _inst_3)] (c : G) (s : Set.{u2} α), Eq.{succ u2} (Set.{u2} α) (closure.{u2} α _inst_1 (HSMul.hSMul.{u1, u2, u2} G (Set.{u2} α) (Set.{u2} α) (instHSMul.{u1, u2} G (Set.{u2} α) (Set.smulSet.{u1, u2} G α (MulAction.toSMul.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2)) _inst_3))) c s)) (HSMul.hSMul.{u1, u2, u2} G (Set.{u2} α) (Set.{u2} α) (instHSMul.{u1, u2} G (Set.{u2} α) (Set.smulSet.{u1, u2} G α (MulAction.toSMul.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2)) _inst_3))) c (closure.{u2} α _inst_1 s))
-Case conversion may be inaccurate. Consider using '#align closure_smul closure_smulₓ'. -/
@[to_additive]
theorem closure_smul (c : G) (s : Set α) : closure (c • s) = c • closure s :=
((Homeomorph.smul c).image_closure s).symm
#align closure_smul closure_smul
#align closure_vadd closure_vadd
-/- warning: dense.smul -> Dense.smul is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Group.{u2} G] [_inst_3 : MulAction.{u2, u1} G α (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_2))] [_inst_4 : ContinuousConstSMul.{u2, u1} G α _inst_1 (MulAction.toHasSmul.{u2, u1} G α (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_2)) _inst_3)] (c : G) {s : Set.{u1} α}, (Dense.{u1} α _inst_1 s) -> (Dense.{u1} α _inst_1 (SMul.smul.{u2, u1} G (Set.{u1} α) (Set.smulSet.{u2, u1} G α (MulAction.toHasSmul.{u2, u1} G α (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_2)) _inst_3)) c s))
-but is expected to have type
- forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : Group.{u1} G] [_inst_3 : MulAction.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2))] [_inst_4 : ContinuousConstSMul.{u1, u2} G α _inst_1 (MulAction.toSMul.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2)) _inst_3)] (c : G) {s : Set.{u2} α}, (Dense.{u2} α _inst_1 s) -> (Dense.{u2} α _inst_1 (HSMul.hSMul.{u1, u2, u2} G (Set.{u2} α) (Set.{u2} α) (instHSMul.{u1, u2} G (Set.{u2} α) (Set.smulSet.{u1, u2} G α (MulAction.toSMul.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2)) _inst_3))) c s))
-Case conversion may be inaccurate. Consider using '#align dense.smul Dense.smulₓ'. -/
@[to_additive]
theorem Dense.smul (c : G) {s : Set α} (hs : Dense s) : Dense (c • s) := by
rw [dense_iff_closure_eq] at hs⊢ <;> rw [closure_smul, hs, smul_set_univ]
#align dense.smul Dense.smul
#align dense.vadd Dense.vadd
-/- warning: interior_smul -> interior_smul is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {G : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : Group.{u2} G] [_inst_3 : MulAction.{u2, u1} G α (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_2))] [_inst_4 : ContinuousConstSMul.{u2, u1} G α _inst_1 (MulAction.toHasSmul.{u2, u1} G α (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_2)) _inst_3)] (c : G) (s : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (interior.{u1} α _inst_1 (SMul.smul.{u2, u1} G (Set.{u1} α) (Set.smulSet.{u2, u1} G α (MulAction.toHasSmul.{u2, u1} G α (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_2)) _inst_3)) c s)) (SMul.smul.{u2, u1} G (Set.{u1} α) (Set.smulSet.{u2, u1} G α (MulAction.toHasSmul.{u2, u1} G α (DivInvMonoid.toMonoid.{u2} G (Group.toDivInvMonoid.{u2} G _inst_2)) _inst_3)) c (interior.{u1} α _inst_1 s))
-but is expected to have type
- forall {α : Type.{u2}} {G : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : Group.{u1} G] [_inst_3 : MulAction.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2))] [_inst_4 : ContinuousConstSMul.{u1, u2} G α _inst_1 (MulAction.toSMul.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2)) _inst_3)] (c : G) (s : Set.{u2} α), Eq.{succ u2} (Set.{u2} α) (interior.{u2} α _inst_1 (HSMul.hSMul.{u1, u2, u2} G (Set.{u2} α) (Set.{u2} α) (instHSMul.{u1, u2} G (Set.{u2} α) (Set.smulSet.{u1, u2} G α (MulAction.toSMul.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2)) _inst_3))) c s)) (HSMul.hSMul.{u1, u2, u2} G (Set.{u2} α) (Set.{u2} α) (instHSMul.{u1, u2} G (Set.{u2} α) (Set.smulSet.{u1, u2} G α (MulAction.toSMul.{u1, u2} G α (DivInvMonoid.toMonoid.{u1} G (Group.toDivInvMonoid.{u1} G _inst_2)) _inst_3))) c (interior.{u2} α _inst_1 s))
-Case conversion may be inaccurate. Consider using '#align interior_smul interior_smulₓ'. -/
@[to_additive]
theorem interior_smul (c : G) (s : Set α) : interior (c • s) = c • interior s :=
((Homeomorph.smul c).image_interior s).symm
@@ -398,12 +320,6 @@ section GroupWithZero
variable {G₀ : Type _} [TopologicalSpace α] [GroupWithZero G₀] [MulAction G₀ α]
[ContinuousConstSMul G₀ α]
-/- warning: tendsto_const_smul_iff₀ -> tendsto_const_smul_iff₀ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {G₀ : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u3} G₀] [_inst_3 : MulAction.{u3, u1} G₀ α (MonoidWithZero.toMonoid.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2))] [_inst_4 : ContinuousConstSMul.{u3, u1} G₀ α _inst_1 (MulAction.toHasSmul.{u3, u1} G₀ α (MonoidWithZero.toMonoid.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2)) _inst_3)] {f : β -> α} {l : Filter.{u2} β} {a : α} {c : G₀}, (Ne.{succ u3} G₀ c (OfNat.ofNat.{u3} G₀ 0 (OfNat.mk.{u3} G₀ 0 (Zero.zero.{u3} G₀ (MulZeroClass.toHasZero.{u3} G₀ (MulZeroOneClass.toMulZeroClass.{u3} G₀ (MonoidWithZero.toMulZeroOneClass.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2)))))))) -> (Iff (Filter.Tendsto.{u2, u1} β α (fun (x : β) => SMul.smul.{u3, u1} G₀ α (MulAction.toHasSmul.{u3, u1} G₀ α (MonoidWithZero.toMonoid.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2)) _inst_3) c (f x)) l (nhds.{u1} α _inst_1 (SMul.smul.{u3, u1} G₀ α (MulAction.toHasSmul.{u3, u1} G₀ α (MonoidWithZero.toMonoid.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2)) _inst_3) c a))) (Filter.Tendsto.{u2, u1} β α f l (nhds.{u1} α _inst_1 a)))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u3}} {G₀ : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u2} G₀] [_inst_3 : MulAction.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2))] [_inst_4 : ContinuousConstSMul.{u2, u1} G₀ α _inst_1 (MulAction.toSMul.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2)) _inst_3)] {f : β -> α} {l : Filter.{u3} β} {a : α} {c : G₀}, (Ne.{succ u2} G₀ c (OfNat.ofNat.{u2} G₀ 0 (Zero.toOfNat0.{u2} G₀ (MonoidWithZero.toZero.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2))))) -> (Iff (Filter.Tendsto.{u3, u1} β α (fun (x : β) => HSMul.hSMul.{u2, u1, u1} G₀ α α (instHSMul.{u2, u1} G₀ α (MulAction.toSMul.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2)) _inst_3)) c (f x)) l (nhds.{u1} α _inst_1 (HSMul.hSMul.{u2, u1, u1} G₀ α α (instHSMul.{u2, u1} G₀ α (MulAction.toSMul.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2)) _inst_3)) c a))) (Filter.Tendsto.{u3, u1} β α f l (nhds.{u1} α _inst_1 a)))
-Case conversion may be inaccurate. Consider using '#align tendsto_const_smul_iff₀ tendsto_const_smul_iff₀ₓ'. -/
theorem tendsto_const_smul_iff₀ {f : β → α} {l : Filter β} {a : α} {c : G₀} (hc : c ≠ 0) :
Tendsto (fun x => c • f x) l (𝓝 <| c • a) ↔ Tendsto f l (𝓝 a) :=
tendsto_const_smul_iff (Units.mk0 c hc)
@@ -411,87 +327,39 @@ theorem tendsto_const_smul_iff₀ {f : β → α} {l : Filter β} {a : α} {c :
variable [TopologicalSpace β] {f : β → α} {b : β} {c : G₀} {s : Set β}
-/- warning: continuous_within_at_const_smul_iff₀ -> continuousWithinAt_const_smul_iff₀ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {G₀ : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u3} G₀] [_inst_3 : MulAction.{u3, u1} G₀ α (MonoidWithZero.toMonoid.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2))] [_inst_4 : ContinuousConstSMul.{u3, u1} G₀ α _inst_1 (MulAction.toHasSmul.{u3, u1} G₀ α (MonoidWithZero.toMonoid.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2)) _inst_3)] [_inst_5 : TopologicalSpace.{u2} β] {f : β -> α} {b : β} {c : G₀} {s : Set.{u2} β}, (Ne.{succ u3} G₀ c (OfNat.ofNat.{u3} G₀ 0 (OfNat.mk.{u3} G₀ 0 (Zero.zero.{u3} G₀ (MulZeroClass.toHasZero.{u3} G₀ (MulZeroOneClass.toMulZeroClass.{u3} G₀ (MonoidWithZero.toMulZeroOneClass.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2)))))))) -> (Iff (ContinuousWithinAt.{u2, u1} β α _inst_5 _inst_1 (fun (x : β) => SMul.smul.{u3, u1} G₀ α (MulAction.toHasSmul.{u3, u1} G₀ α (MonoidWithZero.toMonoid.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2)) _inst_3) c (f x)) s b) (ContinuousWithinAt.{u2, u1} β α _inst_5 _inst_1 f s b))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {G₀ : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u3} G₀] [_inst_3 : MulAction.{u3, u1} G₀ α (MonoidWithZero.toMonoid.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2))] [_inst_4 : ContinuousConstSMul.{u3, u1} G₀ α _inst_1 (MulAction.toSMul.{u3, u1} G₀ α (MonoidWithZero.toMonoid.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2)) _inst_3)] [_inst_5 : TopologicalSpace.{u2} β] {f : β -> α} {b : β} {c : G₀} {s : Set.{u2} β}, (Ne.{succ u3} G₀ c (OfNat.ofNat.{u3} G₀ 0 (Zero.toOfNat0.{u3} G₀ (MonoidWithZero.toZero.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2))))) -> (Iff (ContinuousWithinAt.{u2, u1} β α _inst_5 _inst_1 (fun (x : β) => HSMul.hSMul.{u3, u1, u1} G₀ α α (instHSMul.{u3, u1} G₀ α (MulAction.toSMul.{u3, u1} G₀ α (MonoidWithZero.toMonoid.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2)) _inst_3)) c (f x)) s b) (ContinuousWithinAt.{u2, u1} β α _inst_5 _inst_1 f s b))
-Case conversion may be inaccurate. Consider using '#align continuous_within_at_const_smul_iff₀ continuousWithinAt_const_smul_iff₀ₓ'. -/
theorem continuousWithinAt_const_smul_iff₀ (hc : c ≠ 0) :
ContinuousWithinAt (fun x => c • f x) s b ↔ ContinuousWithinAt f s b :=
tendsto_const_smul_iff (Units.mk0 c hc)
#align continuous_within_at_const_smul_iff₀ continuousWithinAt_const_smul_iff₀
-/- warning: continuous_on_const_smul_iff₀ -> continuousOn_const_smul_iff₀ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {G₀ : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u3} G₀] [_inst_3 : MulAction.{u3, u1} G₀ α (MonoidWithZero.toMonoid.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2))] [_inst_4 : ContinuousConstSMul.{u3, u1} G₀ α _inst_1 (MulAction.toHasSmul.{u3, u1} G₀ α (MonoidWithZero.toMonoid.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2)) _inst_3)] [_inst_5 : TopologicalSpace.{u2} β] {f : β -> α} {c : G₀} {s : Set.{u2} β}, (Ne.{succ u3} G₀ c (OfNat.ofNat.{u3} G₀ 0 (OfNat.mk.{u3} G₀ 0 (Zero.zero.{u3} G₀ (MulZeroClass.toHasZero.{u3} G₀ (MulZeroOneClass.toMulZeroClass.{u3} G₀ (MonoidWithZero.toMulZeroOneClass.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2)))))))) -> (Iff (ContinuousOn.{u2, u1} β α _inst_5 _inst_1 (fun (x : β) => SMul.smul.{u3, u1} G₀ α (MulAction.toHasSmul.{u3, u1} G₀ α (MonoidWithZero.toMonoid.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2)) _inst_3) c (f x)) s) (ContinuousOn.{u2, u1} β α _inst_5 _inst_1 f s))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {G₀ : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u3} G₀] [_inst_3 : MulAction.{u3, u1} G₀ α (MonoidWithZero.toMonoid.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2))] [_inst_4 : ContinuousConstSMul.{u3, u1} G₀ α _inst_1 (MulAction.toSMul.{u3, u1} G₀ α (MonoidWithZero.toMonoid.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2)) _inst_3)] [_inst_5 : TopologicalSpace.{u2} β] {f : β -> α} {c : G₀} {s : Set.{u2} β}, (Ne.{succ u3} G₀ c (OfNat.ofNat.{u3} G₀ 0 (Zero.toOfNat0.{u3} G₀ (MonoidWithZero.toZero.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2))))) -> (Iff (ContinuousOn.{u2, u1} β α _inst_5 _inst_1 (fun (x : β) => HSMul.hSMul.{u3, u1, u1} G₀ α α (instHSMul.{u3, u1} G₀ α (MulAction.toSMul.{u3, u1} G₀ α (MonoidWithZero.toMonoid.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2)) _inst_3)) c (f x)) s) (ContinuousOn.{u2, u1} β α _inst_5 _inst_1 f s))
-Case conversion may be inaccurate. Consider using '#align continuous_on_const_smul_iff₀ continuousOn_const_smul_iff₀ₓ'. -/
theorem continuousOn_const_smul_iff₀ (hc : c ≠ 0) :
ContinuousOn (fun x => c • f x) s ↔ ContinuousOn f s :=
continuousOn_const_smul_iff (Units.mk0 c hc)
#align continuous_on_const_smul_iff₀ continuousOn_const_smul_iff₀
-/- warning: continuous_at_const_smul_iff₀ -> continuousAt_const_smul_iff₀ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {G₀ : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u3} G₀] [_inst_3 : MulAction.{u3, u1} G₀ α (MonoidWithZero.toMonoid.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2))] [_inst_4 : ContinuousConstSMul.{u3, u1} G₀ α _inst_1 (MulAction.toHasSmul.{u3, u1} G₀ α (MonoidWithZero.toMonoid.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2)) _inst_3)] [_inst_5 : TopologicalSpace.{u2} β] {f : β -> α} {b : β} {c : G₀}, (Ne.{succ u3} G₀ c (OfNat.ofNat.{u3} G₀ 0 (OfNat.mk.{u3} G₀ 0 (Zero.zero.{u3} G₀ (MulZeroClass.toHasZero.{u3} G₀ (MulZeroOneClass.toMulZeroClass.{u3} G₀ (MonoidWithZero.toMulZeroOneClass.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2)))))))) -> (Iff (ContinuousAt.{u2, u1} β α _inst_5 _inst_1 (fun (x : β) => SMul.smul.{u3, u1} G₀ α (MulAction.toHasSmul.{u3, u1} G₀ α (MonoidWithZero.toMonoid.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2)) _inst_3) c (f x)) b) (ContinuousAt.{u2, u1} β α _inst_5 _inst_1 f b))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {G₀ : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u3} G₀] [_inst_3 : MulAction.{u3, u1} G₀ α (MonoidWithZero.toMonoid.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2))] [_inst_4 : ContinuousConstSMul.{u3, u1} G₀ α _inst_1 (MulAction.toSMul.{u3, u1} G₀ α (MonoidWithZero.toMonoid.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2)) _inst_3)] [_inst_5 : TopologicalSpace.{u2} β] {f : β -> α} {b : β} {c : G₀}, (Ne.{succ u3} G₀ c (OfNat.ofNat.{u3} G₀ 0 (Zero.toOfNat0.{u3} G₀ (MonoidWithZero.toZero.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2))))) -> (Iff (ContinuousAt.{u2, u1} β α _inst_5 _inst_1 (fun (x : β) => HSMul.hSMul.{u3, u1, u1} G₀ α α (instHSMul.{u3, u1} G₀ α (MulAction.toSMul.{u3, u1} G₀ α (MonoidWithZero.toMonoid.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2)) _inst_3)) c (f x)) b) (ContinuousAt.{u2, u1} β α _inst_5 _inst_1 f b))
-Case conversion may be inaccurate. Consider using '#align continuous_at_const_smul_iff₀ continuousAt_const_smul_iff₀ₓ'. -/
theorem continuousAt_const_smul_iff₀ (hc : c ≠ 0) :
ContinuousAt (fun x => c • f x) b ↔ ContinuousAt f b :=
continuousAt_const_smul_iff (Units.mk0 c hc)
#align continuous_at_const_smul_iff₀ continuousAt_const_smul_iff₀
-/- warning: continuous_const_smul_iff₀ -> continuous_const_smul_iff₀ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {G₀ : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u3} G₀] [_inst_3 : MulAction.{u3, u1} G₀ α (MonoidWithZero.toMonoid.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2))] [_inst_4 : ContinuousConstSMul.{u3, u1} G₀ α _inst_1 (MulAction.toHasSmul.{u3, u1} G₀ α (MonoidWithZero.toMonoid.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2)) _inst_3)] [_inst_5 : TopologicalSpace.{u2} β] {f : β -> α} {c : G₀}, (Ne.{succ u3} G₀ c (OfNat.ofNat.{u3} G₀ 0 (OfNat.mk.{u3} G₀ 0 (Zero.zero.{u3} G₀ (MulZeroClass.toHasZero.{u3} G₀ (MulZeroOneClass.toMulZeroClass.{u3} G₀ (MonoidWithZero.toMulZeroOneClass.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2)))))))) -> (Iff (Continuous.{u2, u1} β α _inst_5 _inst_1 (fun (x : β) => SMul.smul.{u3, u1} G₀ α (MulAction.toHasSmul.{u3, u1} G₀ α (MonoidWithZero.toMonoid.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2)) _inst_3) c (f x))) (Continuous.{u2, u1} β α _inst_5 _inst_1 f))
-but is expected to have type
- forall {α : Type.{u1}} {β : Type.{u2}} {G₀ : Type.{u3}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u3} G₀] [_inst_3 : MulAction.{u3, u1} G₀ α (MonoidWithZero.toMonoid.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2))] [_inst_4 : ContinuousConstSMul.{u3, u1} G₀ α _inst_1 (MulAction.toSMul.{u3, u1} G₀ α (MonoidWithZero.toMonoid.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2)) _inst_3)] [_inst_5 : TopologicalSpace.{u2} β] {f : β -> α} {c : G₀}, (Ne.{succ u3} G₀ c (OfNat.ofNat.{u3} G₀ 0 (Zero.toOfNat0.{u3} G₀ (MonoidWithZero.toZero.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2))))) -> (Iff (Continuous.{u2, u1} β α _inst_5 _inst_1 (fun (x : β) => HSMul.hSMul.{u3, u1, u1} G₀ α α (instHSMul.{u3, u1} G₀ α (MulAction.toSMul.{u3, u1} G₀ α (MonoidWithZero.toMonoid.{u3} G₀ (GroupWithZero.toMonoidWithZero.{u3} G₀ _inst_2)) _inst_3)) c (f x))) (Continuous.{u2, u1} β α _inst_5 _inst_1 f))
-Case conversion may be inaccurate. Consider using '#align continuous_const_smul_iff₀ continuous_const_smul_iff₀ₓ'. -/
theorem continuous_const_smul_iff₀ (hc : c ≠ 0) : (Continuous fun x => c • f x) ↔ Continuous f :=
continuous_const_smul_iff (Units.mk0 c hc)
#align continuous_const_smul_iff₀ continuous_const_smul_iff₀
-/- warning: homeomorph.smul_of_ne_zero -> Homeomorph.smulOfNeZero is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {G₀ : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u2} G₀] [_inst_3 : MulAction.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2))] [_inst_4 : ContinuousConstSMul.{u2, u1} G₀ α _inst_1 (MulAction.toHasSmul.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2)) _inst_3)] (c : G₀), (Ne.{succ u2} G₀ c (OfNat.ofNat.{u2} G₀ 0 (OfNat.mk.{u2} G₀ 0 (Zero.zero.{u2} G₀ (MulZeroClass.toHasZero.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2)))))))) -> (Homeomorph.{u1, u1} α α _inst_1 _inst_1)
-but is expected to have type
- forall {α : Type.{u1}} {G₀ : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u2} G₀] [_inst_3 : MulAction.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2))] [_inst_4 : ContinuousConstSMul.{u2, u1} G₀ α _inst_1 (MulAction.toSMul.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2)) _inst_3)] (c : G₀), (Ne.{succ u2} G₀ c (OfNat.ofNat.{u2} G₀ 0 (Zero.toOfNat0.{u2} G₀ (MonoidWithZero.toZero.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2))))) -> (Homeomorph.{u1, u1} α α _inst_1 _inst_1)
-Case conversion may be inaccurate. Consider using '#align homeomorph.smul_of_ne_zero Homeomorph.smulOfNeZeroₓ'. -/
/-- Scalar multiplication by a non-zero element of a group with zero acting on `α` is a
homeomorphism from `α` onto itself. -/
protected def Homeomorph.smulOfNeZero (c : G₀) (hc : c ≠ 0) : α ≃ₜ α :=
Homeomorph.smul (Units.mk0 c hc)
#align homeomorph.smul_of_ne_zero Homeomorph.smulOfNeZero
-/- warning: is_open_map_smul₀ -> isOpenMap_smul₀ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {G₀ : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u2} G₀] [_inst_3 : MulAction.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2))] [_inst_4 : ContinuousConstSMul.{u2, u1} G₀ α _inst_1 (MulAction.toHasSmul.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2)) _inst_3)] {c : G₀}, (Ne.{succ u2} G₀ c (OfNat.ofNat.{u2} G₀ 0 (OfNat.mk.{u2} G₀ 0 (Zero.zero.{u2} G₀ (MulZeroClass.toHasZero.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2)))))))) -> (IsOpenMap.{u1, u1} α α _inst_1 _inst_1 (fun (x : α) => SMul.smul.{u2, u1} G₀ α (MulAction.toHasSmul.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2)) _inst_3) c x))
-but is expected to have type
- forall {α : Type.{u1}} {G₀ : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u2} G₀] [_inst_3 : MulAction.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2))] [_inst_4 : ContinuousConstSMul.{u2, u1} G₀ α _inst_1 (MulAction.toSMul.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2)) _inst_3)] {c : G₀}, (Ne.{succ u2} G₀ c (OfNat.ofNat.{u2} G₀ 0 (Zero.toOfNat0.{u2} G₀ (MonoidWithZero.toZero.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2))))) -> (IsOpenMap.{u1, u1} α α _inst_1 _inst_1 (fun (x : α) => HSMul.hSMul.{u2, u1, u1} G₀ α α (instHSMul.{u2, u1} G₀ α (MulAction.toSMul.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2)) _inst_3)) c x))
-Case conversion may be inaccurate. Consider using '#align is_open_map_smul₀ isOpenMap_smul₀ₓ'. -/
theorem isOpenMap_smul₀ {c : G₀} (hc : c ≠ 0) : IsOpenMap fun x : α => c • x :=
(Homeomorph.smulOfNeZero c hc).IsOpenMap
#align is_open_map_smul₀ isOpenMap_smul₀
-/- warning: is_open.smul₀ -> IsOpen.smul₀ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {G₀ : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u2} G₀] [_inst_3 : MulAction.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2))] [_inst_4 : ContinuousConstSMul.{u2, u1} G₀ α _inst_1 (MulAction.toHasSmul.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2)) _inst_3)] {c : G₀} {s : Set.{u1} α}, (IsOpen.{u1} α _inst_1 s) -> (Ne.{succ u2} G₀ c (OfNat.ofNat.{u2} G₀ 0 (OfNat.mk.{u2} G₀ 0 (Zero.zero.{u2} G₀ (MulZeroClass.toHasZero.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2)))))))) -> (IsOpen.{u1} α _inst_1 (SMul.smul.{u2, u1} G₀ (Set.{u1} α) (Set.smulSet.{u2, u1} G₀ α (MulAction.toHasSmul.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2)) _inst_3)) c s))
-but is expected to have type
- forall {α : Type.{u2}} {G₀ : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : GroupWithZero.{u1} G₀] [_inst_3 : MulAction.{u1, u2} G₀ α (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_2))] [_inst_4 : ContinuousConstSMul.{u1, u2} G₀ α _inst_1 (MulAction.toSMul.{u1, u2} G₀ α (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_2)) _inst_3)] {c : G₀} {s : Set.{u2} α}, (IsOpen.{u2} α _inst_1 s) -> (Ne.{succ u1} G₀ c (OfNat.ofNat.{u1} G₀ 0 (Zero.toOfNat0.{u1} G₀ (MonoidWithZero.toZero.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_2))))) -> (IsOpen.{u2} α _inst_1 (HSMul.hSMul.{u1, u2, u2} G₀ (Set.{u2} α) (Set.{u2} α) (instHSMul.{u1, u2} G₀ (Set.{u2} α) (Set.smulSet.{u1, u2} G₀ α (MulAction.toSMul.{u1, u2} G₀ α (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_2)) _inst_3))) c s))
-Case conversion may be inaccurate. Consider using '#align is_open.smul₀ IsOpen.smul₀ₓ'. -/
theorem IsOpen.smul₀ {c : G₀} {s : Set α} (hs : IsOpen s) (hc : c ≠ 0) : IsOpen (c • s) :=
isOpenMap_smul₀ hc s hs
#align is_open.smul₀ IsOpen.smul₀
-/- warning: interior_smul₀ -> interior_smul₀ is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {G₀ : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u2} G₀] [_inst_3 : MulAction.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2))] [_inst_4 : ContinuousConstSMul.{u2, u1} G₀ α _inst_1 (MulAction.toHasSmul.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2)) _inst_3)] {c : G₀}, (Ne.{succ u2} G₀ c (OfNat.ofNat.{u2} G₀ 0 (OfNat.mk.{u2} G₀ 0 (Zero.zero.{u2} G₀ (MulZeroClass.toHasZero.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2)))))))) -> (forall (s : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (interior.{u1} α _inst_1 (SMul.smul.{u2, u1} G₀ (Set.{u1} α) (Set.smulSet.{u2, u1} G₀ α (MulAction.toHasSmul.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2)) _inst_3)) c s)) (SMul.smul.{u2, u1} G₀ (Set.{u1} α) (Set.smulSet.{u2, u1} G₀ α (MulAction.toHasSmul.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2)) _inst_3)) c (interior.{u1} α _inst_1 s)))
-but is expected to have type
- forall {α : Type.{u1}} {G₀ : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u2} G₀] [_inst_3 : MulAction.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2))] [_inst_4 : ContinuousConstSMul.{u2, u1} G₀ α _inst_1 (MulAction.toSMul.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2)) _inst_3)] {c : G₀}, (Ne.{succ u2} G₀ c (OfNat.ofNat.{u2} G₀ 0 (Zero.toOfNat0.{u2} G₀ (MonoidWithZero.toZero.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2))))) -> (forall (s : Set.{u1} α), Eq.{succ u1} (Set.{u1} α) (interior.{u1} α _inst_1 (HSMul.hSMul.{u2, u1, u1} G₀ (Set.{u1} α) (Set.{u1} α) (instHSMul.{u2, u1} G₀ (Set.{u1} α) (Set.smulSet.{u2, u1} G₀ α (MulAction.toSMul.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2)) _inst_3))) c s)) (HSMul.hSMul.{u2, u1, u1} G₀ (Set.{u1} α) (Set.{u1} α) (instHSMul.{u2, u1} G₀ (Set.{u1} α) (Set.smulSet.{u2, u1} G₀ α (MulAction.toSMul.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2)) _inst_3))) c (interior.{u1} α _inst_1 s)))
-Case conversion may be inaccurate. Consider using '#align interior_smul₀ interior_smul₀ₓ'. -/
theorem interior_smul₀ {c : G₀} (hc : c ≠ 0) (s : Set α) : interior (c • s) = c • interior s :=
((Homeomorph.smulOfNeZero c hc).image_interior s).symm
#align interior_smul₀ interior_smul₀
@@ -508,12 +376,6 @@ theorem closure_smul₀ {E} [Zero E] [MulActionWithZero G₀ E] [TopologicalSpac
#align closure_smul₀ closure_smul₀
-/
-/- warning: is_closed_map_smul_of_ne_zero -> isClosedMap_smul_of_ne_zero is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {G₀ : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u2} G₀] [_inst_3 : MulAction.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2))] [_inst_4 : ContinuousConstSMul.{u2, u1} G₀ α _inst_1 (MulAction.toHasSmul.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2)) _inst_3)] {c : G₀}, (Ne.{succ u2} G₀ c (OfNat.ofNat.{u2} G₀ 0 (OfNat.mk.{u2} G₀ 0 (Zero.zero.{u2} G₀ (MulZeroClass.toHasZero.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2)))))))) -> (IsClosedMap.{u1, u1} α α _inst_1 _inst_1 (fun (x : α) => SMul.smul.{u2, u1} G₀ α (MulAction.toHasSmul.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2)) _inst_3) c x))
-but is expected to have type
- forall {α : Type.{u1}} {G₀ : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u2} G₀] [_inst_3 : MulAction.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2))] [_inst_4 : ContinuousConstSMul.{u2, u1} G₀ α _inst_1 (MulAction.toSMul.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2)) _inst_3)] {c : G₀}, (Ne.{succ u2} G₀ c (OfNat.ofNat.{u2} G₀ 0 (Zero.toOfNat0.{u2} G₀ (MonoidWithZero.toZero.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2))))) -> (IsClosedMap.{u1, u1} α α _inst_1 _inst_1 (fun (x : α) => HSMul.hSMul.{u2, u1, u1} G₀ α α (instHSMul.{u2, u1} G₀ α (MulAction.toSMul.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2)) _inst_3)) c x))
-Case conversion may be inaccurate. Consider using '#align is_closed_map_smul_of_ne_zero isClosedMap_smul_of_ne_zeroₓ'. -/
/-- `smul` is a closed map in the second argument.
The lemma that `smul` is a closed map in the first argument (for a normed space over a complete
@@ -522,23 +384,11 @@ theorem isClosedMap_smul_of_ne_zero {c : G₀} (hc : c ≠ 0) : IsClosedMap fun
(Homeomorph.smulOfNeZero c hc).IsClosedMap
#align is_closed_map_smul_of_ne_zero isClosedMap_smul_of_ne_zero
-/- warning: is_closed.smul_of_ne_zero -> IsClosed.smul_of_ne_zero is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {G₀ : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u2} G₀] [_inst_3 : MulAction.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2))] [_inst_4 : ContinuousConstSMul.{u2, u1} G₀ α _inst_1 (MulAction.toHasSmul.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2)) _inst_3)] {c : G₀} {s : Set.{u1} α}, (IsClosed.{u1} α _inst_1 s) -> (Ne.{succ u2} G₀ c (OfNat.ofNat.{u2} G₀ 0 (OfNat.mk.{u2} G₀ 0 (Zero.zero.{u2} G₀ (MulZeroClass.toHasZero.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2)))))))) -> (IsClosed.{u1} α _inst_1 (SMul.smul.{u2, u1} G₀ (Set.{u1} α) (Set.smulSet.{u2, u1} G₀ α (MulAction.toHasSmul.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2)) _inst_3)) c s))
-but is expected to have type
- forall {α : Type.{u2}} {G₀ : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : GroupWithZero.{u1} G₀] [_inst_3 : MulAction.{u1, u2} G₀ α (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_2))] [_inst_4 : ContinuousConstSMul.{u1, u2} G₀ α _inst_1 (MulAction.toSMul.{u1, u2} G₀ α (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_2)) _inst_3)] {c : G₀} {s : Set.{u2} α}, (IsClosed.{u2} α _inst_1 s) -> (Ne.{succ u1} G₀ c (OfNat.ofNat.{u1} G₀ 0 (Zero.toOfNat0.{u1} G₀ (MonoidWithZero.toZero.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_2))))) -> (IsClosed.{u2} α _inst_1 (HSMul.hSMul.{u1, u2, u2} G₀ (Set.{u2} α) (Set.{u2} α) (instHSMul.{u1, u2} G₀ (Set.{u2} α) (Set.smulSet.{u1, u2} G₀ α (MulAction.toSMul.{u1, u2} G₀ α (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_2)) _inst_3))) c s))
-Case conversion may be inaccurate. Consider using '#align is_closed.smul_of_ne_zero IsClosed.smul_of_ne_zeroₓ'. -/
theorem IsClosed.smul_of_ne_zero {c : G₀} {s : Set α} (hs : IsClosed s) (hc : c ≠ 0) :
IsClosed (c • s) :=
isClosedMap_smul_of_ne_zero hc s hs
#align is_closed.smul_of_ne_zero IsClosed.smul_of_ne_zero
-/- warning: is_closed_map_smul₀ -> isClosedMap_smul₀ is a dubious translation:
-lean 3 declaration is
- forall {𝕜 : Type.{u1}} {M : Type.{u2}} [_inst_6 : DivisionRing.{u1} 𝕜] [_inst_7 : AddCommMonoid.{u2} M] [_inst_8 : TopologicalSpace.{u2} M] [_inst_9 : T1Space.{u2} M _inst_8] [_inst_10 : Module.{u1, u2} 𝕜 M (Ring.toSemiring.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 _inst_6)) _inst_7] [_inst_11 : ContinuousConstSMul.{u1, u2} 𝕜 M _inst_8 (SMulZeroClass.toHasSmul.{u1, u2} 𝕜 M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_7))) (SMulWithZero.toSmulZeroClass.{u1, u2} 𝕜 M (MulZeroClass.toHasZero.{u1} 𝕜 (MulZeroOneClass.toMulZeroClass.{u1} 𝕜 (MonoidWithZero.toMulZeroOneClass.{u1} 𝕜 (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 _inst_6)))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_7))) (MulActionWithZero.toSMulWithZero.{u1, u2} 𝕜 M (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 _inst_6))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_7))) (Module.toMulActionWithZero.{u1, u2} 𝕜 M (Ring.toSemiring.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 _inst_6)) _inst_7 _inst_10))))] (c : 𝕜), IsClosedMap.{u2, u2} M M _inst_8 _inst_8 (fun (x : M) => SMul.smul.{u1, u2} 𝕜 M (SMulZeroClass.toHasSmul.{u1, u2} 𝕜 M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_7))) (SMulWithZero.toSmulZeroClass.{u1, u2} 𝕜 M (MulZeroClass.toHasZero.{u1} 𝕜 (MulZeroOneClass.toMulZeroClass.{u1} 𝕜 (MonoidWithZero.toMulZeroOneClass.{u1} 𝕜 (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 _inst_6)))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_7))) (MulActionWithZero.toSMulWithZero.{u1, u2} 𝕜 M (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 _inst_6))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_7))) (Module.toMulActionWithZero.{u1, u2} 𝕜 M (Ring.toSemiring.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 _inst_6)) _inst_7 _inst_10)))) c x)
-but is expected to have type
- forall {𝕜 : Type.{u2}} {M : Type.{u1}} [_inst_6 : DivisionRing.{u2} 𝕜] [_inst_7 : AddCommMonoid.{u1} M] [_inst_8 : TopologicalSpace.{u1} M] [_inst_9 : T1Space.{u1} M _inst_8] [_inst_10 : Module.{u2, u1} 𝕜 M (DivisionSemiring.toSemiring.{u2} 𝕜 (DivisionRing.toDivisionSemiring.{u2} 𝕜 _inst_6)) _inst_7] [_inst_11 : ContinuousConstSMul.{u2, u1} 𝕜 M _inst_8 (SMulZeroClass.toSMul.{u2, u1} 𝕜 M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_7)) (SMulWithZero.toSMulZeroClass.{u2, u1} 𝕜 M (MonoidWithZero.toZero.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (DivisionSemiring.toSemiring.{u2} 𝕜 (DivisionRing.toDivisionSemiring.{u2} 𝕜 _inst_6)))) (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_7)) (MulActionWithZero.toSMulWithZero.{u2, u1} 𝕜 M (Semiring.toMonoidWithZero.{u2} 𝕜 (DivisionSemiring.toSemiring.{u2} 𝕜 (DivisionRing.toDivisionSemiring.{u2} 𝕜 _inst_6))) (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_7)) (Module.toMulActionWithZero.{u2, u1} 𝕜 M (DivisionSemiring.toSemiring.{u2} 𝕜 (DivisionRing.toDivisionSemiring.{u2} 𝕜 _inst_6)) _inst_7 _inst_10))))] (c : 𝕜), IsClosedMap.{u1, u1} M M _inst_8 _inst_8 (fun (x : M) => HSMul.hSMul.{u2, u1, u1} 𝕜 M M (instHSMul.{u2, u1} 𝕜 M (SMulZeroClass.toSMul.{u2, u1} 𝕜 M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_7)) (SMulWithZero.toSMulZeroClass.{u2, u1} 𝕜 M (MonoidWithZero.toZero.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (DivisionSemiring.toSemiring.{u2} 𝕜 (DivisionRing.toDivisionSemiring.{u2} 𝕜 _inst_6)))) (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_7)) (MulActionWithZero.toSMulWithZero.{u2, u1} 𝕜 M (Semiring.toMonoidWithZero.{u2} 𝕜 (DivisionSemiring.toSemiring.{u2} 𝕜 (DivisionRing.toDivisionSemiring.{u2} 𝕜 _inst_6))) (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_7)) (Module.toMulActionWithZero.{u2, u1} 𝕜 M (DivisionSemiring.toSemiring.{u2} 𝕜 (DivisionRing.toDivisionSemiring.{u2} 𝕜 _inst_6)) _inst_7 _inst_10))))) c x)
-Case conversion may be inaccurate. Consider using '#align is_closed_map_smul₀ isClosedMap_smul₀ₓ'. -/
/-- `smul` is a closed map in the second argument.
The lemma that `smul` is a closed map in the first argument (for a normed space over a complete
@@ -551,35 +401,17 @@ theorem isClosedMap_smul₀ {𝕜 M : Type _} [DivisionRing 𝕜] [AddCommMonoid
· exact (Homeomorph.smulOfNeZero c hne).IsClosedMap
#align is_closed_map_smul₀ isClosedMap_smul₀
-/- warning: is_closed.smul₀ -> IsClosed.smul₀ is a dubious translation:
-lean 3 declaration is
- forall {𝕜 : Type.{u1}} {M : Type.{u2}} [_inst_6 : DivisionRing.{u1} 𝕜] [_inst_7 : AddCommMonoid.{u2} M] [_inst_8 : TopologicalSpace.{u2} M] [_inst_9 : T1Space.{u2} M _inst_8] [_inst_10 : Module.{u1, u2} 𝕜 M (Ring.toSemiring.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 _inst_6)) _inst_7] [_inst_11 : ContinuousConstSMul.{u1, u2} 𝕜 M _inst_8 (SMulZeroClass.toHasSmul.{u1, u2} 𝕜 M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_7))) (SMulWithZero.toSmulZeroClass.{u1, u2} 𝕜 M (MulZeroClass.toHasZero.{u1} 𝕜 (MulZeroOneClass.toMulZeroClass.{u1} 𝕜 (MonoidWithZero.toMulZeroOneClass.{u1} 𝕜 (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 _inst_6)))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_7))) (MulActionWithZero.toSMulWithZero.{u1, u2} 𝕜 M (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 _inst_6))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_7))) (Module.toMulActionWithZero.{u1, u2} 𝕜 M (Ring.toSemiring.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 _inst_6)) _inst_7 _inst_10))))] (c : 𝕜) {s : Set.{u2} M}, (IsClosed.{u2} M _inst_8 s) -> (IsClosed.{u2} M _inst_8 (SMul.smul.{u1, u2} 𝕜 (Set.{u2} M) (Set.smulSet.{u1, u2} 𝕜 M (SMulZeroClass.toHasSmul.{u1, u2} 𝕜 M (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_7))) (SMulWithZero.toSmulZeroClass.{u1, u2} 𝕜 M (MulZeroClass.toHasZero.{u1} 𝕜 (MulZeroOneClass.toMulZeroClass.{u1} 𝕜 (MonoidWithZero.toMulZeroOneClass.{u1} 𝕜 (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 _inst_6)))))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_7))) (MulActionWithZero.toSMulWithZero.{u1, u2} 𝕜 M (Semiring.toMonoidWithZero.{u1} 𝕜 (Ring.toSemiring.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 _inst_6))) (AddZeroClass.toHasZero.{u2} M (AddMonoid.toAddZeroClass.{u2} M (AddCommMonoid.toAddMonoid.{u2} M _inst_7))) (Module.toMulActionWithZero.{u1, u2} 𝕜 M (Ring.toSemiring.{u1} 𝕜 (DivisionRing.toRing.{u1} 𝕜 _inst_6)) _inst_7 _inst_10))))) c s))
-but is expected to have type
- forall {𝕜 : Type.{u2}} {M : Type.{u1}} [_inst_6 : DivisionRing.{u2} 𝕜] [_inst_7 : AddCommMonoid.{u1} M] [_inst_8 : TopologicalSpace.{u1} M] [_inst_9 : T1Space.{u1} M _inst_8] [_inst_10 : Module.{u2, u1} 𝕜 M (DivisionSemiring.toSemiring.{u2} 𝕜 (DivisionRing.toDivisionSemiring.{u2} 𝕜 _inst_6)) _inst_7] [_inst_11 : ContinuousConstSMul.{u2, u1} 𝕜 M _inst_8 (SMulZeroClass.toSMul.{u2, u1} 𝕜 M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_7)) (SMulWithZero.toSMulZeroClass.{u2, u1} 𝕜 M (MonoidWithZero.toZero.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (DivisionSemiring.toSemiring.{u2} 𝕜 (DivisionRing.toDivisionSemiring.{u2} 𝕜 _inst_6)))) (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_7)) (MulActionWithZero.toSMulWithZero.{u2, u1} 𝕜 M (Semiring.toMonoidWithZero.{u2} 𝕜 (DivisionSemiring.toSemiring.{u2} 𝕜 (DivisionRing.toDivisionSemiring.{u2} 𝕜 _inst_6))) (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_7)) (Module.toMulActionWithZero.{u2, u1} 𝕜 M (DivisionSemiring.toSemiring.{u2} 𝕜 (DivisionRing.toDivisionSemiring.{u2} 𝕜 _inst_6)) _inst_7 _inst_10))))] (c : 𝕜) {s : Set.{u1} M}, (IsClosed.{u1} M _inst_8 s) -> (IsClosed.{u1} M _inst_8 (HSMul.hSMul.{u2, u1, u1} 𝕜 (Set.{u1} M) (Set.{u1} M) (instHSMul.{u2, u1} 𝕜 (Set.{u1} M) (Set.smulSet.{u2, u1} 𝕜 M (SMulZeroClass.toSMul.{u2, u1} 𝕜 M (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_7)) (SMulWithZero.toSMulZeroClass.{u2, u1} 𝕜 M (MonoidWithZero.toZero.{u2} 𝕜 (Semiring.toMonoidWithZero.{u2} 𝕜 (DivisionSemiring.toSemiring.{u2} 𝕜 (DivisionRing.toDivisionSemiring.{u2} 𝕜 _inst_6)))) (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_7)) (MulActionWithZero.toSMulWithZero.{u2, u1} 𝕜 M (Semiring.toMonoidWithZero.{u2} 𝕜 (DivisionSemiring.toSemiring.{u2} 𝕜 (DivisionRing.toDivisionSemiring.{u2} 𝕜 _inst_6))) (AddMonoid.toZero.{u1} M (AddCommMonoid.toAddMonoid.{u1} M _inst_7)) (Module.toMulActionWithZero.{u2, u1} 𝕜 M (DivisionSemiring.toSemiring.{u2} 𝕜 (DivisionRing.toDivisionSemiring.{u2} 𝕜 _inst_6)) _inst_7 _inst_10)))))) c s))
-Case conversion may be inaccurate. Consider using '#align is_closed.smul₀ IsClosed.smul₀ₓ'. -/
theorem IsClosed.smul₀ {𝕜 M : Type _} [DivisionRing 𝕜] [AddCommMonoid M] [TopologicalSpace M]
[T1Space M] [Module 𝕜 M] [ContinuousConstSMul 𝕜 M] (c : 𝕜) {s : Set M} (hs : IsClosed s) :
IsClosed (c • s) :=
isClosedMap_smul₀ c s hs
#align is_closed.smul₀ IsClosed.smul₀
-/- warning: has_compact_mul_support.comp_smul -> HasCompactMulSupport.comp_smul is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {G₀ : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u2} G₀] [_inst_3 : MulAction.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2))] [_inst_4 : ContinuousConstSMul.{u2, u1} G₀ α _inst_1 (MulAction.toHasSmul.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2)) _inst_3)] {β : Type.{u3}} [_inst_6 : One.{u3} β] {f : α -> β}, (HasCompactMulSupport.{u1, u3} α β _inst_1 _inst_6 f) -> (forall {c : G₀}, (Ne.{succ u2} G₀ c (OfNat.ofNat.{u2} G₀ 0 (OfNat.mk.{u2} G₀ 0 (Zero.zero.{u2} G₀ (MulZeroClass.toHasZero.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2)))))))) -> (HasCompactMulSupport.{u1, u3} α β _inst_1 _inst_6 (fun (x : α) => f (SMul.smul.{u2, u1} G₀ α (MulAction.toHasSmul.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2)) _inst_3) c x))))
-but is expected to have type
- forall {α : Type.{u2}} {G₀ : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : GroupWithZero.{u1} G₀] [_inst_3 : MulAction.{u1, u2} G₀ α (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_2))] [_inst_4 : ContinuousConstSMul.{u1, u2} G₀ α _inst_1 (MulAction.toSMul.{u1, u2} G₀ α (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_2)) _inst_3)] {β : Type.{u3}} [_inst_6 : One.{u3} β] {f : α -> β}, (HasCompactMulSupport.{u2, u3} α β _inst_1 _inst_6 f) -> (forall {c : G₀}, (Ne.{succ u1} G₀ c (OfNat.ofNat.{u1} G₀ 0 (Zero.toOfNat0.{u1} G₀ (MonoidWithZero.toZero.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_2))))) -> (HasCompactMulSupport.{u2, u3} α β _inst_1 _inst_6 (fun (x : α) => f (HSMul.hSMul.{u1, u2, u2} G₀ α α (instHSMul.{u1, u2} G₀ α (MulAction.toSMul.{u1, u2} G₀ α (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_2)) _inst_3)) c x))))
-Case conversion may be inaccurate. Consider using '#align has_compact_mul_support.comp_smul HasCompactMulSupport.comp_smulₓ'. -/
theorem HasCompactMulSupport.comp_smul {β : Type _} [One β] {f : α → β} (h : HasCompactMulSupport f)
{c : G₀} (hc : c ≠ 0) : HasCompactMulSupport fun x => f (c • x) :=
h.comp_homeomorph (Homeomorph.smulOfNeZero c hc)
#align has_compact_mul_support.comp_smul HasCompactMulSupport.comp_smul
-/- warning: has_compact_support.comp_smul -> HasCompactSupport.comp_smul is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {G₀ : Type.{u2}} [_inst_1 : TopologicalSpace.{u1} α] [_inst_2 : GroupWithZero.{u2} G₀] [_inst_3 : MulAction.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2))] [_inst_4 : ContinuousConstSMul.{u2, u1} G₀ α _inst_1 (MulAction.toHasSmul.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2)) _inst_3)] {β : Type.{u3}} [_inst_6 : Zero.{u3} β] {f : α -> β}, (HasCompactSupport.{u1, u3} α β _inst_1 _inst_6 f) -> (forall {c : G₀}, (Ne.{succ u2} G₀ c (OfNat.ofNat.{u2} G₀ 0 (OfNat.mk.{u2} G₀ 0 (Zero.zero.{u2} G₀ (MulZeroClass.toHasZero.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2)))))))) -> (HasCompactSupport.{u1, u3} α β _inst_1 _inst_6 (fun (x : α) => f (SMul.smul.{u2, u1} G₀ α (MulAction.toHasSmul.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_2)) _inst_3) c x))))
-but is expected to have type
- forall {α : Type.{u2}} {G₀ : Type.{u1}} [_inst_1 : TopologicalSpace.{u2} α] [_inst_2 : GroupWithZero.{u1} G₀] [_inst_3 : MulAction.{u1, u2} G₀ α (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_2))] [_inst_4 : ContinuousConstSMul.{u1, u2} G₀ α _inst_1 (MulAction.toSMul.{u1, u2} G₀ α (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_2)) _inst_3)] {β : Type.{u3}} [_inst_6 : Zero.{u3} β] {f : α -> β}, (HasCompactSupport.{u2, u3} α β _inst_1 _inst_6 f) -> (forall {c : G₀}, (Ne.{succ u1} G₀ c (OfNat.ofNat.{u1} G₀ 0 (Zero.toOfNat0.{u1} G₀ (MonoidWithZero.toZero.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_2))))) -> (HasCompactSupport.{u2, u3} α β _inst_1 _inst_6 (fun (x : α) => f (HSMul.hSMul.{u1, u2, u2} G₀ α α (instHSMul.{u1, u2} G₀ α (MulAction.toSMul.{u1, u2} G₀ α (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_2)) _inst_3)) c x))))
-Case conversion may be inaccurate. Consider using '#align has_compact_support.comp_smul HasCompactSupport.comp_smulₓ'. -/
theorem HasCompactSupport.comp_smul {β : Type _} [Zero β] {f : α → β} (h : HasCompactSupport f)
{c : G₀} (hc : c ≠ 0) : HasCompactSupport fun x => f (c • x) :=
h.comp_homeomorph (Homeomorph.smulOfNeZero c hc)
@@ -593,12 +425,6 @@ namespace IsUnit
variable [Monoid M] [TopologicalSpace α] [MulAction M α] [ContinuousConstSMul M α]
-/- warning: is_unit.tendsto_const_smul_iff -> IsUnit.tendsto_const_smul_iff is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : Monoid.{u1} M] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : MulAction.{u1, u2} M α _inst_1] [_inst_4 : ContinuousConstSMul.{u1, u2} M α _inst_2 (MulAction.toHasSmul.{u1, u2} M α _inst_1 _inst_3)] {f : β -> α} {l : Filter.{u3} β} {a : α} {c : M}, (IsUnit.{u1} M _inst_1 c) -> (Iff (Filter.Tendsto.{u3, u2} β α (fun (x : β) => SMul.smul.{u1, u2} M α (MulAction.toHasSmul.{u1, u2} M α _inst_1 _inst_3) c (f x)) l (nhds.{u2} α _inst_2 (SMul.smul.{u1, u2} M α (MulAction.toHasSmul.{u1, u2} M α _inst_1 _inst_3) c a))) (Filter.Tendsto.{u3, u2} β α f l (nhds.{u2} α _inst_2 a)))
-but is expected to have type
- forall {M : Type.{u2}} {α : Type.{u1}} {β : Type.{u3}} [_inst_1 : Monoid.{u2} M] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : MulAction.{u2, u1} M α _inst_1] [_inst_4 : ContinuousConstSMul.{u2, u1} M α _inst_2 (MulAction.toSMul.{u2, u1} M α _inst_1 _inst_3)] {f : β -> α} {l : Filter.{u3} β} {a : α} {c : M}, (IsUnit.{u2} M _inst_1 c) -> (Iff (Filter.Tendsto.{u3, u1} β α (fun (x : β) => HSMul.hSMul.{u2, u1, u1} M α α (instHSMul.{u2, u1} M α (MulAction.toSMul.{u2, u1} M α _inst_1 _inst_3)) c (f x)) l (nhds.{u1} α _inst_2 (HSMul.hSMul.{u2, u1, u1} M α α (instHSMul.{u2, u1} M α (MulAction.toSMul.{u2, u1} M α _inst_1 _inst_3)) c a))) (Filter.Tendsto.{u3, u1} β α f l (nhds.{u1} α _inst_2 a)))
-Case conversion may be inaccurate. Consider using '#align is_unit.tendsto_const_smul_iff IsUnit.tendsto_const_smul_iffₓ'. -/
theorem tendsto_const_smul_iff {f : β → α} {l : Filter β} {a : α} {c : M} (hc : IsUnit c) :
Tendsto (fun x => c • f x) l (𝓝 <| c • a) ↔ Tendsto f l (𝓝 a) :=
let ⟨u, hu⟩ := hc
@@ -607,70 +433,34 @@ theorem tendsto_const_smul_iff {f : β → α} {l : Filter β} {a : α} {c : M}
variable [TopologicalSpace β] {f : β → α} {b : β} {c : M} {s : Set β}
-/- warning: is_unit.continuous_within_at_const_smul_iff -> IsUnit.continuousWithinAt_const_smul_iff is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : Monoid.{u1} M] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : MulAction.{u1, u2} M α _inst_1] [_inst_4 : ContinuousConstSMul.{u1, u2} M α _inst_2 (MulAction.toHasSmul.{u1, u2} M α _inst_1 _inst_3)] [_inst_5 : TopologicalSpace.{u3} β] {f : β -> α} {b : β} {c : M} {s : Set.{u3} β}, (IsUnit.{u1} M _inst_1 c) -> (Iff (ContinuousWithinAt.{u3, u2} β α _inst_5 _inst_2 (fun (x : β) => SMul.smul.{u1, u2} M α (MulAction.toHasSmul.{u1, u2} M α _inst_1 _inst_3) c (f x)) s b) (ContinuousWithinAt.{u3, u2} β α _inst_5 _inst_2 f s b))
-but is expected to have type
- forall {M : Type.{u3}} {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Monoid.{u3} M] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : MulAction.{u3, u1} M α _inst_1] [_inst_4 : ContinuousConstSMul.{u3, u1} M α _inst_2 (MulAction.toSMul.{u3, u1} M α _inst_1 _inst_3)] [_inst_5 : TopologicalSpace.{u2} β] {f : β -> α} {b : β} {c : M} {s : Set.{u2} β}, (IsUnit.{u3} M _inst_1 c) -> (Iff (ContinuousWithinAt.{u2, u1} β α _inst_5 _inst_2 (fun (x : β) => HSMul.hSMul.{u3, u1, u1} M α α (instHSMul.{u3, u1} M α (MulAction.toSMul.{u3, u1} M α _inst_1 _inst_3)) c (f x)) s b) (ContinuousWithinAt.{u2, u1} β α _inst_5 _inst_2 f s b))
-Case conversion may be inaccurate. Consider using '#align is_unit.continuous_within_at_const_smul_iff IsUnit.continuousWithinAt_const_smul_iffₓ'. -/
theorem continuousWithinAt_const_smul_iff (hc : IsUnit c) :
ContinuousWithinAt (fun x => c • f x) s b ↔ ContinuousWithinAt f s b :=
let ⟨u, hu⟩ := hc
hu ▸ continuousWithinAt_const_smul_iff u
#align is_unit.continuous_within_at_const_smul_iff IsUnit.continuousWithinAt_const_smul_iff
-/- warning: is_unit.continuous_on_const_smul_iff -> IsUnit.continuousOn_const_smul_iff is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : Monoid.{u1} M] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : MulAction.{u1, u2} M α _inst_1] [_inst_4 : ContinuousConstSMul.{u1, u2} M α _inst_2 (MulAction.toHasSmul.{u1, u2} M α _inst_1 _inst_3)] [_inst_5 : TopologicalSpace.{u3} β] {f : β -> α} {c : M} {s : Set.{u3} β}, (IsUnit.{u1} M _inst_1 c) -> (Iff (ContinuousOn.{u3, u2} β α _inst_5 _inst_2 (fun (x : β) => SMul.smul.{u1, u2} M α (MulAction.toHasSmul.{u1, u2} M α _inst_1 _inst_3) c (f x)) s) (ContinuousOn.{u3, u2} β α _inst_5 _inst_2 f s))
-but is expected to have type
- forall {M : Type.{u3}} {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Monoid.{u3} M] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : MulAction.{u3, u1} M α _inst_1] [_inst_4 : ContinuousConstSMul.{u3, u1} M α _inst_2 (MulAction.toSMul.{u3, u1} M α _inst_1 _inst_3)] [_inst_5 : TopologicalSpace.{u2} β] {f : β -> α} {c : M} {s : Set.{u2} β}, (IsUnit.{u3} M _inst_1 c) -> (Iff (ContinuousOn.{u2, u1} β α _inst_5 _inst_2 (fun (x : β) => HSMul.hSMul.{u3, u1, u1} M α α (instHSMul.{u3, u1} M α (MulAction.toSMul.{u3, u1} M α _inst_1 _inst_3)) c (f x)) s) (ContinuousOn.{u2, u1} β α _inst_5 _inst_2 f s))
-Case conversion may be inaccurate. Consider using '#align is_unit.continuous_on_const_smul_iff IsUnit.continuousOn_const_smul_iffₓ'. -/
theorem continuousOn_const_smul_iff (hc : IsUnit c) :
ContinuousOn (fun x => c • f x) s ↔ ContinuousOn f s :=
let ⟨u, hu⟩ := hc
hu ▸ continuousOn_const_smul_iff u
#align is_unit.continuous_on_const_smul_iff IsUnit.continuousOn_const_smul_iff
-/- warning: is_unit.continuous_at_const_smul_iff -> IsUnit.continuousAt_const_smul_iff is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : Monoid.{u1} M] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : MulAction.{u1, u2} M α _inst_1] [_inst_4 : ContinuousConstSMul.{u1, u2} M α _inst_2 (MulAction.toHasSmul.{u1, u2} M α _inst_1 _inst_3)] [_inst_5 : TopologicalSpace.{u3} β] {f : β -> α} {b : β} {c : M}, (IsUnit.{u1} M _inst_1 c) -> (Iff (ContinuousAt.{u3, u2} β α _inst_5 _inst_2 (fun (x : β) => SMul.smul.{u1, u2} M α (MulAction.toHasSmul.{u1, u2} M α _inst_1 _inst_3) c (f x)) b) (ContinuousAt.{u3, u2} β α _inst_5 _inst_2 f b))
-but is expected to have type
- forall {M : Type.{u3}} {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Monoid.{u3} M] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : MulAction.{u3, u1} M α _inst_1] [_inst_4 : ContinuousConstSMul.{u3, u1} M α _inst_2 (MulAction.toSMul.{u3, u1} M α _inst_1 _inst_3)] [_inst_5 : TopologicalSpace.{u2} β] {f : β -> α} {b : β} {c : M}, (IsUnit.{u3} M _inst_1 c) -> (Iff (ContinuousAt.{u2, u1} β α _inst_5 _inst_2 (fun (x : β) => HSMul.hSMul.{u3, u1, u1} M α α (instHSMul.{u3, u1} M α (MulAction.toSMul.{u3, u1} M α _inst_1 _inst_3)) c (f x)) b) (ContinuousAt.{u2, u1} β α _inst_5 _inst_2 f b))
-Case conversion may be inaccurate. Consider using '#align is_unit.continuous_at_const_smul_iff IsUnit.continuousAt_const_smul_iffₓ'. -/
theorem continuousAt_const_smul_iff (hc : IsUnit c) :
ContinuousAt (fun x => c • f x) b ↔ ContinuousAt f b :=
let ⟨u, hu⟩ := hc
hu ▸ continuousAt_const_smul_iff u
#align is_unit.continuous_at_const_smul_iff IsUnit.continuousAt_const_smul_iff
-/- warning: is_unit.continuous_const_smul_iff -> IsUnit.continuous_const_smul_iff is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} {α : Type.{u2}} {β : Type.{u3}} [_inst_1 : Monoid.{u1} M] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : MulAction.{u1, u2} M α _inst_1] [_inst_4 : ContinuousConstSMul.{u1, u2} M α _inst_2 (MulAction.toHasSmul.{u1, u2} M α _inst_1 _inst_3)] [_inst_5 : TopologicalSpace.{u3} β] {f : β -> α} {c : M}, (IsUnit.{u1} M _inst_1 c) -> (Iff (Continuous.{u3, u2} β α _inst_5 _inst_2 (fun (x : β) => SMul.smul.{u1, u2} M α (MulAction.toHasSmul.{u1, u2} M α _inst_1 _inst_3) c (f x))) (Continuous.{u3, u2} β α _inst_5 _inst_2 f))
-but is expected to have type
- forall {M : Type.{u3}} {α : Type.{u1}} {β : Type.{u2}} [_inst_1 : Monoid.{u3} M] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : MulAction.{u3, u1} M α _inst_1] [_inst_4 : ContinuousConstSMul.{u3, u1} M α _inst_2 (MulAction.toSMul.{u3, u1} M α _inst_1 _inst_3)] [_inst_5 : TopologicalSpace.{u2} β] {f : β -> α} {c : M}, (IsUnit.{u3} M _inst_1 c) -> (Iff (Continuous.{u2, u1} β α _inst_5 _inst_2 (fun (x : β) => HSMul.hSMul.{u3, u1, u1} M α α (instHSMul.{u3, u1} M α (MulAction.toSMul.{u3, u1} M α _inst_1 _inst_3)) c (f x))) (Continuous.{u2, u1} β α _inst_5 _inst_2 f))
-Case conversion may be inaccurate. Consider using '#align is_unit.continuous_const_smul_iff IsUnit.continuous_const_smul_iffₓ'. -/
theorem continuous_const_smul_iff (hc : IsUnit c) : (Continuous fun x => c • f x) ↔ Continuous f :=
let ⟨u, hu⟩ := hc
hu ▸ continuous_const_smul_iff u
#align is_unit.continuous_const_smul_iff IsUnit.continuous_const_smul_iff
-/- warning: is_unit.is_open_map_smul -> IsUnit.isOpenMap_smul is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} {α : Type.{u2}} [_inst_1 : Monoid.{u1} M] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : MulAction.{u1, u2} M α _inst_1] [_inst_4 : ContinuousConstSMul.{u1, u2} M α _inst_2 (MulAction.toHasSmul.{u1, u2} M α _inst_1 _inst_3)] {c : M}, (IsUnit.{u1} M _inst_1 c) -> (IsOpenMap.{u2, u2} α α _inst_2 _inst_2 (fun (x : α) => SMul.smul.{u1, u2} M α (MulAction.toHasSmul.{u1, u2} M α _inst_1 _inst_3) c x))
-but is expected to have type
- forall {M : Type.{u2}} {α : Type.{u1}} [_inst_1 : Monoid.{u2} M] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : MulAction.{u2, u1} M α _inst_1] [_inst_4 : ContinuousConstSMul.{u2, u1} M α _inst_2 (MulAction.toSMul.{u2, u1} M α _inst_1 _inst_3)] {c : M}, (IsUnit.{u2} M _inst_1 c) -> (IsOpenMap.{u1, u1} α α _inst_2 _inst_2 (fun (x : α) => HSMul.hSMul.{u2, u1, u1} M α α (instHSMul.{u2, u1} M α (MulAction.toSMul.{u2, u1} M α _inst_1 _inst_3)) c x))
-Case conversion may be inaccurate. Consider using '#align is_unit.is_open_map_smul IsUnit.isOpenMap_smulₓ'. -/
theorem isOpenMap_smul (hc : IsUnit c) : IsOpenMap fun x : α => c • x :=
let ⟨u, hu⟩ := hc
hu ▸ isOpenMap_smul u
#align is_unit.is_open_map_smul IsUnit.isOpenMap_smul
-/- warning: is_unit.is_closed_map_smul -> IsUnit.isClosedMap_smul is a dubious translation:
-lean 3 declaration is
- forall {M : Type.{u1}} {α : Type.{u2}} [_inst_1 : Monoid.{u1} M] [_inst_2 : TopologicalSpace.{u2} α] [_inst_3 : MulAction.{u1, u2} M α _inst_1] [_inst_4 : ContinuousConstSMul.{u1, u2} M α _inst_2 (MulAction.toHasSmul.{u1, u2} M α _inst_1 _inst_3)] {c : M}, (IsUnit.{u1} M _inst_1 c) -> (IsClosedMap.{u2, u2} α α _inst_2 _inst_2 (fun (x : α) => SMul.smul.{u1, u2} M α (MulAction.toHasSmul.{u1, u2} M α _inst_1 _inst_3) c x))
-but is expected to have type
- forall {M : Type.{u2}} {α : Type.{u1}} [_inst_1 : Monoid.{u2} M] [_inst_2 : TopologicalSpace.{u1} α] [_inst_3 : MulAction.{u2, u1} M α _inst_1] [_inst_4 : ContinuousConstSMul.{u2, u1} M α _inst_2 (MulAction.toSMul.{u2, u1} M α _inst_1 _inst_3)] {c : M}, (IsUnit.{u2} M _inst_1 c) -> (IsClosedMap.{u1, u1} α α _inst_2 _inst_2 (fun (x : α) => HSMul.hSMul.{u2, u1, u1} M α α (instHSMul.{u2, u1} M α (MulAction.toSMul.{u2, u1} M α _inst_1 _inst_3)) c x))
-Case conversion may be inaccurate. Consider using '#align is_unit.is_closed_map_smul IsUnit.isClosedMap_smulₓ'. -/
theorem isClosedMap_smul (hc : IsUnit c) : IsClosedMap fun x : α => c • x :=
let ⟨u, hu⟩ := hc
hu ▸ isClosedMap_smul u
@@ -719,12 +509,6 @@ export ProperlyDiscontinuousSMul (finite_disjoint_inter_image)
export ProperlyDiscontinuousVAdd (finite_disjoint_inter_image)
-/- warning: is_open_map_quotient_mk_mul -> isOpenMap_quotient_mk'_mul is a dubious translation:
-lean 3 declaration is
- forall {Γ : Type.{u1}} [_inst_1 : Group.{u1} Γ] {T : Type.{u2}} [_inst_2 : TopologicalSpace.{u2} T] [_inst_3 : MulAction.{u1, u2} Γ T (DivInvMonoid.toMonoid.{u1} Γ (Group.toDivInvMonoid.{u1} Γ _inst_1))] [_inst_4 : ContinuousConstSMul.{u1, u2} Γ T _inst_2 (MulAction.toHasSmul.{u1, u2} Γ T (DivInvMonoid.toMonoid.{u1} Γ (Group.toDivInvMonoid.{u1} Γ _inst_1)) _inst_3)], IsOpenMap.{u2, u2} T (Quotient.{succ u2} T (MulAction.orbitRel.{u1, u2} Γ T _inst_1 _inst_3)) _inst_2 (Quotient.topologicalSpace.{u2} T (MulAction.orbitRel.{u1, u2} Γ T _inst_1 _inst_3) _inst_2) (Quotient.mk'.{succ u2} T (MulAction.orbitRel.{u1, u2} Γ T _inst_1 _inst_3))
-but is expected to have type
- forall {Γ : Type.{u2}} [_inst_1 : Group.{u2} Γ] {T : Type.{u1}} [_inst_2 : TopologicalSpace.{u1} T] [_inst_3 : MulAction.{u2, u1} Γ T (DivInvMonoid.toMonoid.{u2} Γ (Group.toDivInvMonoid.{u2} Γ _inst_1))] [_inst_4 : ContinuousConstSMul.{u2, u1} Γ T _inst_2 (MulAction.toSMul.{u2, u1} Γ T (DivInvMonoid.toMonoid.{u2} Γ (Group.toDivInvMonoid.{u2} Γ _inst_1)) _inst_3)], IsOpenMap.{u1, u1} T (Quotient.{succ u1} T (MulAction.orbitRel.{u2, u1} Γ T _inst_1 _inst_3)) _inst_2 (instTopologicalSpaceQuotient.{u1} T (MulAction.orbitRel.{u2, u1} Γ T _inst_1 _inst_3) _inst_2) (Quotient.mk'.{succ u1} T (MulAction.orbitRel.{u2, u1} Γ T _inst_1 _inst_3))
-Case conversion may be inaccurate. Consider using '#align is_open_map_quotient_mk_mul isOpenMap_quotient_mk'_mulₓ'. -/
/-- The quotient map by a group action is open, i.e. the quotient by a group action is an open
quotient. -/
@[to_additive
@@ -796,12 +580,6 @@ section MulAction
variable {G₀ : Type _} [GroupWithZero G₀] [MulAction G₀ α] [TopologicalSpace α]
[ContinuousConstSMul G₀ α]
-/- warning: set_smul_mem_nhds_smul -> set_smul_mem_nhds_smul is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {G₀ : Type.{u2}} [_inst_4 : GroupWithZero.{u2} G₀] [_inst_5 : MulAction.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_4))] [_inst_6 : TopologicalSpace.{u1} α] [_inst_7 : ContinuousConstSMul.{u2, u1} G₀ α _inst_6 (MulAction.toHasSmul.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_4)) _inst_5)] {c : G₀} {s : Set.{u1} α} {x : α}, (Membership.Mem.{u1, u1} (Set.{u1} α) (Filter.{u1} α) (Filter.hasMem.{u1} α) s (nhds.{u1} α _inst_6 x)) -> (Ne.{succ u2} G₀ c (OfNat.ofNat.{u2} G₀ 0 (OfNat.mk.{u2} G₀ 0 (Zero.zero.{u2} G₀ (MulZeroClass.toHasZero.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_4)))))))) -> (Membership.Mem.{u1, u1} (Set.{u1} α) (Filter.{u1} α) (Filter.hasMem.{u1} α) (SMul.smul.{u2, u1} G₀ (Set.{u1} α) (Set.smulSet.{u2, u1} G₀ α (MulAction.toHasSmul.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_4)) _inst_5)) c s) (nhds.{u1} α _inst_6 (SMul.smul.{u2, u1} G₀ α (MulAction.toHasSmul.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_4)) _inst_5) c x)))
-but is expected to have type
- forall {α : Type.{u2}} {G₀ : Type.{u1}} [_inst_4 : GroupWithZero.{u1} G₀] [_inst_5 : MulAction.{u1, u2} G₀ α (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_4))] [_inst_6 : TopologicalSpace.{u2} α] [_inst_7 : ContinuousConstSMul.{u1, u2} G₀ α _inst_6 (MulAction.toSMul.{u1, u2} G₀ α (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_4)) _inst_5)] {c : G₀} {s : Set.{u2} α} {x : α}, (Membership.mem.{u2, u2} (Set.{u2} α) (Filter.{u2} α) (instMembershipSetFilter.{u2} α) s (nhds.{u2} α _inst_6 x)) -> (Ne.{succ u1} G₀ c (OfNat.ofNat.{u1} G₀ 0 (Zero.toOfNat0.{u1} G₀ (MonoidWithZero.toZero.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_4))))) -> (Membership.mem.{u2, u2} (Set.{u2} α) (Filter.{u2} α) (instMembershipSetFilter.{u2} α) (HSMul.hSMul.{u1, u2, u2} G₀ (Set.{u2} α) (Set.{u2} α) (instHSMul.{u1, u2} G₀ (Set.{u2} α) (Set.smulSet.{u1, u2} G₀ α (MulAction.toSMul.{u1, u2} G₀ α (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_4)) _inst_5))) c s) (nhds.{u2} α _inst_6 (HSMul.hSMul.{u1, u2, u2} G₀ α α (instHSMul.{u1, u2} G₀ α (MulAction.toSMul.{u1, u2} G₀ α (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_4)) _inst_5)) c x)))
-Case conversion may be inaccurate. Consider using '#align set_smul_mem_nhds_smul set_smul_mem_nhds_smulₓ'. -/
/-- Scalar multiplication preserves neighborhoods. -/
theorem set_smul_mem_nhds_smul {c : G₀} {s : Set α} {x : α} (hs : s ∈ 𝓝 x) (hc : c ≠ 0) :
c • s ∈ 𝓝 (c • x : α) := by
@@ -810,12 +588,6 @@ theorem set_smul_mem_nhds_smul {c : G₀} {s : Set α} {x : α} (hs : s ∈ 𝓝
exact ⟨c • U, Set.smul_set_mono hs', hU.smul₀ hc, Set.smul_mem_smul_set hU'⟩
#align set_smul_mem_nhds_smul set_smul_mem_nhds_smul
-/- warning: set_smul_mem_nhds_smul_iff -> set_smul_mem_nhds_smul_iff is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {G₀ : Type.{u2}} [_inst_4 : GroupWithZero.{u2} G₀] [_inst_5 : MulAction.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_4))] [_inst_6 : TopologicalSpace.{u1} α] [_inst_7 : ContinuousConstSMul.{u2, u1} G₀ α _inst_6 (MulAction.toHasSmul.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_4)) _inst_5)] {c : G₀} {s : Set.{u1} α} {x : α}, (Ne.{succ u2} G₀ c (OfNat.ofNat.{u2} G₀ 0 (OfNat.mk.{u2} G₀ 0 (Zero.zero.{u2} G₀ (MulZeroClass.toHasZero.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_4)))))))) -> (Iff (Membership.Mem.{u1, u1} (Set.{u1} α) (Filter.{u1} α) (Filter.hasMem.{u1} α) (SMul.smul.{u2, u1} G₀ (Set.{u1} α) (Set.smulSet.{u2, u1} G₀ α (MulAction.toHasSmul.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_4)) _inst_5)) c s) (nhds.{u1} α _inst_6 (SMul.smul.{u2, u1} G₀ α (MulAction.toHasSmul.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_4)) _inst_5) c x))) (Membership.Mem.{u1, u1} (Set.{u1} α) (Filter.{u1} α) (Filter.hasMem.{u1} α) s (nhds.{u1} α _inst_6 x)))
-but is expected to have type
- forall {α : Type.{u2}} {G₀ : Type.{u1}} [_inst_4 : GroupWithZero.{u1} G₀] [_inst_5 : MulAction.{u1, u2} G₀ α (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_4))] [_inst_6 : TopologicalSpace.{u2} α] [_inst_7 : ContinuousConstSMul.{u1, u2} G₀ α _inst_6 (MulAction.toSMul.{u1, u2} G₀ α (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_4)) _inst_5)] {c : G₀} {s : Set.{u2} α} {x : α}, (Ne.{succ u1} G₀ c (OfNat.ofNat.{u1} G₀ 0 (Zero.toOfNat0.{u1} G₀ (MonoidWithZero.toZero.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_4))))) -> (Iff (Membership.mem.{u2, u2} (Set.{u2} α) (Filter.{u2} α) (instMembershipSetFilter.{u2} α) (HSMul.hSMul.{u1, u2, u2} G₀ (Set.{u2} α) (Set.{u2} α) (instHSMul.{u1, u2} G₀ (Set.{u2} α) (Set.smulSet.{u1, u2} G₀ α (MulAction.toSMul.{u1, u2} G₀ α (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_4)) _inst_5))) c s) (nhds.{u2} α _inst_6 (HSMul.hSMul.{u1, u2, u2} G₀ α α (instHSMul.{u1, u2} G₀ α (MulAction.toSMul.{u1, u2} G₀ α (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_4)) _inst_5)) c x))) (Membership.mem.{u2, u2} (Set.{u2} α) (Filter.{u2} α) (instMembershipSetFilter.{u2} α) s (nhds.{u2} α _inst_6 x)))
-Case conversion may be inaccurate. Consider using '#align set_smul_mem_nhds_smul_iff set_smul_mem_nhds_smul_iffₓ'. -/
theorem set_smul_mem_nhds_smul_iff {c : G₀} {s : Set α} {x : α} (hc : c ≠ 0) :
c • s ∈ 𝓝 (c • x : α) ↔ s ∈ 𝓝 x :=
by
@@ -831,12 +603,6 @@ section DistribMulAction
variable {G₀ : Type _} [GroupWithZero G₀] [AddMonoid α] [DistribMulAction G₀ α] [TopologicalSpace α]
[ContinuousConstSMul G₀ α]
-/- warning: set_smul_mem_nhds_zero_iff -> set_smul_mem_nhds_zero_iff is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {G₀ : Type.{u2}} [_inst_4 : GroupWithZero.{u2} G₀] [_inst_5 : AddMonoid.{u1} α] [_inst_6 : DistribMulAction.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_4)) _inst_5] [_inst_7 : TopologicalSpace.{u1} α] [_inst_8 : ContinuousConstSMul.{u2, u1} G₀ α _inst_7 (SMulZeroClass.toHasSmul.{u2, u1} G₀ α (AddZeroClass.toHasZero.{u1} α (AddMonoid.toAddZeroClass.{u1} α _inst_5)) (DistribSMul.toSmulZeroClass.{u2, u1} G₀ α (AddMonoid.toAddZeroClass.{u1} α _inst_5) (DistribMulAction.toDistribSMul.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_4)) _inst_5 _inst_6)))] {s : Set.{u1} α} {c : G₀}, (Ne.{succ u2} G₀ c (OfNat.ofNat.{u2} G₀ 0 (OfNat.mk.{u2} G₀ 0 (Zero.zero.{u2} G₀ (MulZeroClass.toHasZero.{u2} G₀ (MulZeroOneClass.toMulZeroClass.{u2} G₀ (MonoidWithZero.toMulZeroOneClass.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_4)))))))) -> (Iff (Membership.Mem.{u1, u1} (Set.{u1} α) (Filter.{u1} α) (Filter.hasMem.{u1} α) (SMul.smul.{u2, u1} G₀ (Set.{u1} α) (Set.smulSet.{u2, u1} G₀ α (SMulZeroClass.toHasSmul.{u2, u1} G₀ α (AddZeroClass.toHasZero.{u1} α (AddMonoid.toAddZeroClass.{u1} α _inst_5)) (DistribSMul.toSmulZeroClass.{u2, u1} G₀ α (AddMonoid.toAddZeroClass.{u1} α _inst_5) (DistribMulAction.toDistribSMul.{u2, u1} G₀ α (MonoidWithZero.toMonoid.{u2} G₀ (GroupWithZero.toMonoidWithZero.{u2} G₀ _inst_4)) _inst_5 _inst_6)))) c s) (nhds.{u1} α _inst_7 (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (AddZeroClass.toHasZero.{u1} α (AddMonoid.toAddZeroClass.{u1} α _inst_5))))))) (Membership.Mem.{u1, u1} (Set.{u1} α) (Filter.{u1} α) (Filter.hasMem.{u1} α) s (nhds.{u1} α _inst_7 (OfNat.ofNat.{u1} α 0 (OfNat.mk.{u1} α 0 (Zero.zero.{u1} α (AddZeroClass.toHasZero.{u1} α (AddMonoid.toAddZeroClass.{u1} α _inst_5))))))))
-but is expected to have type
- forall {α : Type.{u2}} {G₀ : Type.{u1}} [_inst_4 : GroupWithZero.{u1} G₀] [_inst_5 : AddMonoid.{u2} α] [_inst_6 : DistribMulAction.{u1, u2} G₀ α (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_4)) _inst_5] [_inst_7 : TopologicalSpace.{u2} α] [_inst_8 : ContinuousConstSMul.{u1, u2} G₀ α _inst_7 (SMulZeroClass.toSMul.{u1, u2} G₀ α (AddMonoid.toZero.{u2} α _inst_5) (DistribSMul.toSMulZeroClass.{u1, u2} G₀ α (AddMonoid.toAddZeroClass.{u2} α _inst_5) (DistribMulAction.toDistribSMul.{u1, u2} G₀ α (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_4)) _inst_5 _inst_6)))] {s : Set.{u2} α} {c : G₀}, (Ne.{succ u1} G₀ c (OfNat.ofNat.{u1} G₀ 0 (Zero.toOfNat0.{u1} G₀ (MonoidWithZero.toZero.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_4))))) -> (Iff (Membership.mem.{u2, u2} (Set.{u2} α) (Filter.{u2} α) (instMembershipSetFilter.{u2} α) (HSMul.hSMul.{u1, u2, u2} G₀ (Set.{u2} α) (Set.{u2} α) (instHSMul.{u1, u2} G₀ (Set.{u2} α) (Set.smulSet.{u1, u2} G₀ α (SMulZeroClass.toSMul.{u1, u2} G₀ α (AddMonoid.toZero.{u2} α _inst_5) (DistribSMul.toSMulZeroClass.{u1, u2} G₀ α (AddMonoid.toAddZeroClass.{u2} α _inst_5) (DistribMulAction.toDistribSMul.{u1, u2} G₀ α (MonoidWithZero.toMonoid.{u1} G₀ (GroupWithZero.toMonoidWithZero.{u1} G₀ _inst_4)) _inst_5 _inst_6))))) c s) (nhds.{u2} α _inst_7 (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α _inst_5))))) (Membership.mem.{u2, u2} (Set.{u2} α) (Filter.{u2} α) (instMembershipSetFilter.{u2} α) s (nhds.{u2} α _inst_7 (OfNat.ofNat.{u2} α 0 (Zero.toOfNat0.{u2} α (AddMonoid.toZero.{u2} α _inst_5))))))
-Case conversion may be inaccurate. Consider using '#align set_smul_mem_nhds_zero_iff set_smul_mem_nhds_zero_iffₓ'. -/
theorem set_smul_mem_nhds_zero_iff {s : Set α} {c : G₀} (hc : c ≠ 0) :
c • s ∈ 𝓝 (0 : α) ↔ s ∈ 𝓝 (0 : α) :=
by
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -503,8 +503,7 @@ theorem closure_smul₀ {E} [Zero E] [MulActionWithZero G₀ E] [TopologicalSpac
rcases eq_or_ne c 0 with (rfl | hc)
· rcases eq_empty_or_nonempty s with (rfl | hs)
· simp
- · rw [zero_smul_set hs, zero_smul_set hs.closure]
- exact closure_singleton
+ · rw [zero_smul_set hs, zero_smul_set hs.closure]; exact closure_singleton
· exact ((Homeomorph.smulOfNeZero c hc).image_closure s).symm
#align closure_smul₀ closure_smul₀
-/
@@ -548,8 +547,7 @@ theorem isClosedMap_smul₀ {𝕜 M : Type _} [DivisionRing 𝕜] [AddCommMonoid
[T1Space M] [Module 𝕜 M] [ContinuousConstSMul 𝕜 M] (c : 𝕜) : IsClosedMap fun x : M => c • x :=
by
rcases eq_or_ne c 0 with (rfl | hne)
- · simp only [zero_smul]
- exact isClosedMap_const
+ · simp only [zero_smul]; exact isClosedMap_const
· exact (Homeomorph.smulOfNeZero c hne).IsClosedMap
#align is_closed_map_smul₀ isClosedMap_smul₀
mathlib commit https://github.com/leanprover-community/mathlib/commit/e3fb84046afd187b710170887195d50bada934ee
@@ -736,7 +736,7 @@ theorem isOpenMap_quotient_mk'_mul [ContinuousConstSMul Γ T] :
by
intro U hU
rw [isOpen_coinduced, MulAction.quotient_preimage_image_eq_union_mul U]
- exact isOpen_unionᵢ fun γ => (Homeomorph.smul γ).IsOpenMap U hU
+ exact isOpen_iUnion fun γ => (Homeomorph.smul γ).IsOpenMap U hU
#align is_open_map_quotient_mk_mul isOpenMap_quotient_mk'_mul
#align is_open_map_quotient_mk_add isOpenMap_quotient_mk'_add
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
Inseparable.{smul,mul,inv}
(#12142)
Add dot notation lemmas
for algebraic operations on Specializes
and Inseparable
.
@@ -157,6 +157,15 @@ theorem IsCompact.smul {α β} [SMul α β] [TopologicalSpace β] [ContinuousCon
#align is_compact.smul IsCompact.smul
#align is_compact.vadd IsCompact.vadd
+@[to_additive]
+theorem Specializes.const_smul {x y : α} (h : x ⤳ y) (c : M) : (c • x) ⤳ (c • y) :=
+ h.map (continuous_const_smul c)
+
+@[to_additive]
+theorem Inseparable.const_smul {x y : α} (h : Inseparable x y) (c : M) :
+ Inseparable (c • x) (c • y) :=
+ h.map (continuous_const_smul c)
+
end SMul
section Monoid
@@ -8,6 +8,7 @@ import Mathlib.Topology.Homeomorph
import Mathlib.GroupTheory.GroupAction.Basic
import Mathlib.Topology.Bases
import Mathlib.Topology.Support
+import Mathlib.Algebra.Module.ULift
#align_import topology.algebra.const_mul_action from "leanprover-community/mathlib"@"d90e4e186f1d18e375dcd4e5b5f6364b01cb3e46"
@@ -77,6 +78,9 @@ section SMul
variable [TopologicalSpace α] [SMul M α] [ContinuousConstSMul M α]
+@[to_additive]
+instance : ContinuousConstSMul (ULift M) α := ⟨fun γ ↦ continuous_const_smul (ULift.down γ)⟩
+
@[to_additive]
theorem Filter.Tendsto.const_smul {f : β → α} {l : Filter β} {a : α} (hf : Tendsto f l (𝓝 a))
(c : M) : Tendsto (fun x => c • f x) l (𝓝 (c • a)) :=
@@ -531,7 +531,7 @@ instance (priority := 100) t2Space_of_properlyDiscontinuousSMul_of_t2Space [T2Sp
by_cases H : γ ∈ bad_Γ_set
· exact fun h => (u_v_disjoint γ).le_bot ⟨mem_iInter₂.mp x_in_U₀₀ γ H, mem_iInter₂.mp h.1 γ H⟩
· rintro ⟨-, h'⟩
- simp only [bad_Γ_set, image_smul, Classical.not_not, mem_setOf_eq, Ne.def] at H
+ simp only [bad_Γ_set, image_smul, Classical.not_not, mem_setOf_eq, Ne] at H
exact eq_empty_iff_forall_not_mem.mp H (γ • x) ⟨mem_image_of_mem _ x_in_K₀, h'⟩
#align t2_space_of_properly_discontinuous_smul_of_t2_space t2Space_of_properlyDiscontinuousSMul_of_t2Space
#align t2_space_of_properly_discontinuous_vadd_of_t2_space t2Space_of_properlyDiscontinuousVAdd_of_t2Space
Empty lines were removed by executing the following Python script twice
import os
import re
# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
for filename in files:
if filename.endswith('.lean'):
file_path = os.path.join(dir_path, filename)
# Open the file and read its contents
with open(file_path, 'r') as file:
content = file.read()
# Use a regular expression to replace sequences of "variable" lines separated by empty lines
# with sequences without empty lines
modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)
# Write the modified content back to the file
with open(file_path, 'w') as file:
file.write(modified_content)
@@ -158,7 +158,6 @@ end SMul
section Monoid
variable [TopologicalSpace α]
-
variable [Monoid M] [MulAction M α] [ContinuousConstSMul M α]
@[to_additive]
closure_smul₀'
, generalize (#10860)
closure_smul₀'
, a version of closure_smul₀
assuming c ≠ 0
and no T1Space
.MulActionWithZero
.@@ -343,6 +343,10 @@ theorem interior_smul₀ {c : G₀} (hc : c ≠ 0) (s : Set α) : interior (c
((Homeomorph.smulOfNeZero c hc).image_interior s).symm
#align interior_smul₀ interior_smul₀
+theorem closure_smul₀' {c : G₀} (hc : c ≠ 0) (s : Set α) :
+ closure (c • s) = c • closure s :=
+ ((Homeomorph.smulOfNeZero c hc).image_closure s).symm
+
theorem closure_smul₀ {E} [Zero E] [MulActionWithZero G₀ E] [TopologicalSpace E] [T1Space E]
[ContinuousConstSMul G₀ E] (c : G₀) (s : Set E) : closure (c • s) = c • closure s := by
rcases eq_or_ne c 0 with (rfl | hc)
@@ -350,7 +354,7 @@ theorem closure_smul₀ {E} [Zero E] [MulActionWithZero G₀ E] [TopologicalSpac
· simp
· rw [zero_smul_set hs, zero_smul_set hs.closure]
exact closure_singleton
- · exact ((Homeomorph.smulOfNeZero c hc).image_closure s).symm
+ · exact closure_smul₀' hc s
#align closure_smul₀ closure_smul₀
/-- `smul` is a closed map in the second argument.
@@ -370,17 +374,16 @@ theorem IsClosed.smul_of_ne_zero {c : G₀} {s : Set α} (hs : IsClosed s) (hc :
The lemma that `smul` is a closed map in the first argument (for a normed space over a complete
normed field) is `isClosedMap_smul_left` in `Analysis.NormedSpace.FiniteDimension`. -/
-theorem isClosedMap_smul₀ {𝕜 M : Type*} [DivisionRing 𝕜] [AddCommMonoid M] [TopologicalSpace M]
- [T1Space M] [Module 𝕜 M] [ContinuousConstSMul 𝕜 M] (c : 𝕜) :
- IsClosedMap fun x : M => c • x := by
+theorem isClosedMap_smul₀ {E : Type*} [Zero E] [MulActionWithZero G₀ E] [TopologicalSpace E]
+ [T1Space E] [ContinuousConstSMul G₀ E] (c : G₀) : IsClosedMap fun x : E => c • x := by
rcases eq_or_ne c 0 with (rfl | hne)
· simp only [zero_smul]
exact isClosedMap_const
· exact (Homeomorph.smulOfNeZero c hne).isClosedMap
#align is_closed_map_smul₀ isClosedMap_smul₀
-theorem IsClosed.smul₀ {𝕜 M : Type*} [DivisionRing 𝕜] [AddCommMonoid M] [TopologicalSpace M]
- [T1Space M] [Module 𝕜 M] [ContinuousConstSMul 𝕜 M] (c : 𝕜) {s : Set M} (hs : IsClosed s) :
+theorem IsClosed.smul₀ {E : Type*} [Zero E] [MulActionWithZero G₀ E] [TopologicalSpace E]
+ [T1Space E] [ContinuousConstSMul G₀ E] (c : G₀) {s : Set E} (hs : IsClosed s) :
IsClosed (c • s) :=
isClosedMap_smul₀ c s hs
#align is_closed.smul₀ IsClosed.smul₀
@@ -447,7 +447,7 @@ nonrec theorem isClosedMap_smul (hc : IsUnit c) : IsClosedMap fun x : α => c
end IsUnit
--- Porting note: todo: use `Set.Nonempty`
+-- Porting note (#11215): TODO: use `Set.Nonempty`
/-- Class `ProperlyDiscontinuousSMul Γ T` says that the scalar multiplication `(•) : Γ → T → T`
is properly discontinuous, that is, for any pair of compact sets `K, L` in `T`, only finitely many
`γ:Γ` move `K` to have nontrivial intersection with `L`.
Homogenises porting notes via capitalisation and addition of whitespace.
It makes the following changes:
@@ -447,7 +447,7 @@ nonrec theorem isClosedMap_smul (hc : IsUnit c) : IsClosedMap fun x : α => c
end IsUnit
--- porting note: todo: use `Set.Nonempty`
+-- Porting note: todo: use `Set.Nonempty`
/-- Class `ProperlyDiscontinuousSMul Γ T` says that the scalar multiplication `(•) : Γ → T → T`
is properly discontinuous, that is, for any pair of compact sets `K, L` in `T`, only finitely many
`γ:Γ` move `K` to have nontrivial intersection with `L`.
@@ -550,7 +550,7 @@ section MulAction
variable {G₀ : Type*} [GroupWithZero G₀] [MulAction G₀ α] [TopologicalSpace α]
[ContinuousConstSMul G₀ α]
--- porting note: generalize to a group action + `IsUnit`
+-- Porting note: generalize to a group action + `IsUnit`
/-- Scalar multiplication preserves neighborhoods. -/
theorem set_smul_mem_nhds_smul {c : G₀} {s : Set α} {x : α} (hs : s ∈ 𝓝 x) (hc : c ≠ 0) :
c • s ∈ 𝓝 (c • x : α) := by
@@ -529,7 +529,7 @@ instance (priority := 100) t2Space_of_properlyDiscontinuousSMul_of_t2Space [T2Sp
by_cases H : γ ∈ bad_Γ_set
· exact fun h => (u_v_disjoint γ).le_bot ⟨mem_iInter₂.mp x_in_U₀₀ γ H, mem_iInter₂.mp h.1 γ H⟩
· rintro ⟨-, h'⟩
- simp only [image_smul, Classical.not_not, mem_setOf_eq, Ne.def] at H
+ simp only [bad_Γ_set, image_smul, Classical.not_not, mem_setOf_eq, Ne.def] at H
exact eq_empty_iff_forall_not_mem.mp H (γ • x) ⟨mem_image_of_mem _ x_in_K₀, h'⟩
#align t2_space_of_properly_discontinuous_smul_of_t2_space t2Space_of_properlyDiscontinuousSMul_of_t2Space
#align t2_space_of_properly_discontinuous_vadd_of_t2_space t2Space_of_properlyDiscontinuousVAdd_of_t2Space
@@ -93,20 +93,20 @@ nonrec theorem ContinuousWithinAt.const_smul (hg : ContinuousWithinAt g s b) (c
#align continuous_within_at.const_smul ContinuousWithinAt.const_smul
#align continuous_within_at.const_vadd ContinuousWithinAt.const_vadd
-@[to_additive]
+@[to_additive (attr := fun_prop)]
nonrec theorem ContinuousAt.const_smul (hg : ContinuousAt g b) (c : M) :
ContinuousAt (fun x => c • g x) b :=
hg.const_smul c
#align continuous_at.const_smul ContinuousAt.const_smul
#align continuous_at.const_vadd ContinuousAt.const_vadd
-@[to_additive]
+@[to_additive (attr := fun_prop)]
theorem ContinuousOn.const_smul (hg : ContinuousOn g s) (c : M) :
ContinuousOn (fun x => c • g x) s := fun x hx => (hg x hx).const_smul c
#align continuous_on.const_smul ContinuousOn.const_smul
#align continuous_on.const_vadd ContinuousOn.const_vadd
-@[to_additive (attr := continuity)]
+@[to_additive (attr := continuity, fun_prop)]
theorem Continuous.const_smul (hg : Continuous g) (c : M) : Continuous fun x => c • g x :=
(continuous_const_smul _).comp hg
#align continuous.const_smul Continuous.const_smul
@@ -162,8 +162,8 @@ variable [TopologicalSpace α]
variable [Monoid M] [MulAction M α] [ContinuousConstSMul M α]
@[to_additive]
-instance Units.continuousConstSMul : ContinuousConstSMul Mˣ α
- where continuous_const_smul m := (continuous_const_smul (m : M) : _)
+instance Units.continuousConstSMul : ContinuousConstSMul Mˣ α where
+ continuous_const_smul m := (continuous_const_smul (m : M) : _)
#align units.has_continuous_const_smul Units.continuousConstSMul
#align add_units.has_continuous_const_vadd AddUnits.continuousConstVAdd
Autoimplicits are highly controversial and also defeat the performance-improving work in #6474.
The intent of this PR is to make autoImplicit
opt-in on a per-file basis, by disabling it in the lakefile and enabling it again with set_option autoImplicit true
in the few files that rely on it.
That also keeps this PR small, as opposed to attempting to "fix" files to not need it any more.
I claim that many of the uses of autoImplicit
in these files are accidental; situations such as:
variables
are in scope, but pasting the lemma in the wrong sectionHaving set_option autoImplicit false
as the default prevents these types of mistake being made in the 90% of files where autoImplicit
s are not used at all, and causes them to be caught by CI during review.
I think there were various points during the port where we encouraged porters to delete the universes u v
lines; I think having autoparams for universe variables only would cover a lot of the cases we actually use them, while avoiding any real shortcomings.
A Zulip poll (after combining overlapping votes accordingly) was in favor of this change with 5:5:18
as the no:dontcare:yes
vote ratio.
While this PR was being reviewed, a handful of files gained some more likely-accidental autoImplicits. In these places, set_option autoImplicit true
has been placed locally within a section, rather than at the top of the file.
@@ -39,6 +39,8 @@ Hausdorff, discrete group, properly discontinuous, quotient space
-/
+set_option autoImplicit true
+
open Topology Pointwise Filter Set TopologicalSpace
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -48,7 +48,7 @@ actions, including (semi)modules and algebras.
Note that both `ContinuousConstSMul α α` and `ContinuousConstSMul αᵐᵒᵖ α` are
weaker versions of `ContinuousMul α`. -/
-class ContinuousConstSMul (Γ : Type _) (T : Type _) [TopologicalSpace T] [SMul Γ T] : Prop where
+class ContinuousConstSMul (Γ : Type*) (T : Type*) [TopologicalSpace T] [SMul Γ T] : Prop where
/-- The scalar multiplication `(•) : Γ → T → T` is continuous in the second argument. -/
continuous_const_smul : ∀ γ : Γ, Continuous fun x : T => γ • x
#align has_continuous_const_smul ContinuousConstSMul
@@ -59,7 +59,7 @@ including (semi)modules and algebras.
Note that both `ContinuousConstVAdd α α` and `ContinuousConstVAdd αᵐᵒᵖ α` are
weaker versions of `ContinuousVAdd α`. -/
-class ContinuousConstVAdd (Γ : Type _) (T : Type _) [TopologicalSpace T] [VAdd Γ T] : Prop where
+class ContinuousConstVAdd (Γ : Type*) (T : Type*) [TopologicalSpace T] [VAdd Γ T] : Prop where
/-- The additive action `(+ᵥ) : Γ → T → T` is continuous in the second argument. -/
continuous_const_vadd : ∀ γ : Γ, Continuous fun x : T => γ +ᵥ x
#align has_continuous_const_vadd ContinuousConstVAdd
@@ -69,7 +69,7 @@ attribute [to_additive] ContinuousConstSMul
export ContinuousConstSMul (continuous_const_smul)
export ContinuousConstVAdd (continuous_const_vadd)
-variable {M α β : Type _}
+variable {M α β : Type*}
section SMul
@@ -140,7 +140,7 @@ instance Prod.continuousConstSMul [SMul M β] [ContinuousConstSMul M β] :
⟨fun _ => (continuous_fst.const_smul _).prod_mk (continuous_snd.const_smul _)⟩
@[to_additive]
-instance {ι : Type _} {γ : ι → Type _} [∀ i, TopologicalSpace (γ i)] [∀ i, SMul M (γ i)]
+instance {ι : Type*} {γ : ι → Type*} [∀ i, TopologicalSpace (γ i)] [∀ i, SMul M (γ i)]
[∀ i, ContinuousConstSMul M (γ i)] : ContinuousConstSMul M (∀ i, γ i) :=
⟨fun _ => continuous_pi fun i => (continuous_apply i).const_smul _⟩
@@ -190,7 +190,7 @@ end Monoid
section Group
-variable {G : Type _} [TopologicalSpace α] [Group G] [MulAction G α] [ContinuousConstSMul G α]
+variable {G : Type*} [TopologicalSpace α] [Group G] [MulAction G α] [ContinuousConstSMul G α]
@[to_additive]
theorem tendsto_const_smul_iff {f : β → α} {l : Filter β} {a : α} (c : G) :
@@ -288,7 +288,7 @@ end Group
section GroupWithZero
-variable {G₀ : Type _} [TopologicalSpace α] [GroupWithZero G₀] [MulAction G₀ α]
+variable {G₀ : Type*} [TopologicalSpace α] [GroupWithZero G₀] [MulAction G₀ α]
[ContinuousConstSMul G₀ α]
theorem tendsto_const_smul_iff₀ {f : β → α} {l : Filter β} {a : α} {c : G₀} (hc : c ≠ 0) :
@@ -368,7 +368,7 @@ theorem IsClosed.smul_of_ne_zero {c : G₀} {s : Set α} (hs : IsClosed s) (hc :
The lemma that `smul` is a closed map in the first argument (for a normed space over a complete
normed field) is `isClosedMap_smul_left` in `Analysis.NormedSpace.FiniteDimension`. -/
-theorem isClosedMap_smul₀ {𝕜 M : Type _} [DivisionRing 𝕜] [AddCommMonoid M] [TopologicalSpace M]
+theorem isClosedMap_smul₀ {𝕜 M : Type*} [DivisionRing 𝕜] [AddCommMonoid M] [TopologicalSpace M]
[T1Space M] [Module 𝕜 M] [ContinuousConstSMul 𝕜 M] (c : 𝕜) :
IsClosedMap fun x : M => c • x := by
rcases eq_or_ne c 0 with (rfl | hne)
@@ -377,18 +377,18 @@ theorem isClosedMap_smul₀ {𝕜 M : Type _} [DivisionRing 𝕜] [AddCommMonoid
· exact (Homeomorph.smulOfNeZero c hne).isClosedMap
#align is_closed_map_smul₀ isClosedMap_smul₀
-theorem IsClosed.smul₀ {𝕜 M : Type _} [DivisionRing 𝕜] [AddCommMonoid M] [TopologicalSpace M]
+theorem IsClosed.smul₀ {𝕜 M : Type*} [DivisionRing 𝕜] [AddCommMonoid M] [TopologicalSpace M]
[T1Space M] [Module 𝕜 M] [ContinuousConstSMul 𝕜 M] (c : 𝕜) {s : Set M} (hs : IsClosed s) :
IsClosed (c • s) :=
isClosedMap_smul₀ c s hs
#align is_closed.smul₀ IsClosed.smul₀
-theorem HasCompactMulSupport.comp_smul {β : Type _} [One β] {f : α → β} (h : HasCompactMulSupport f)
+theorem HasCompactMulSupport.comp_smul {β : Type*} [One β] {f : α → β} (h : HasCompactMulSupport f)
{c : G₀} (hc : c ≠ 0) : HasCompactMulSupport fun x => f (c • x) :=
h.comp_homeomorph (Homeomorph.smulOfNeZero c hc)
#align has_compact_mul_support.comp_smul HasCompactMulSupport.comp_smul
-theorem HasCompactSupport.comp_smul {β : Type _} [Zero β] {f : α → β} (h : HasCompactSupport f)
+theorem HasCompactSupport.comp_smul {β : Type*} [Zero β] {f : α → β} (h : HasCompactSupport f)
{c : G₀} (hc : c ≠ 0) : HasCompactSupport fun x => f (c • x) :=
h.comp_homeomorph (Homeomorph.smulOfNeZero c hc)
#align has_compact_support.comp_smul HasCompactSupport.comp_smul
@@ -450,7 +450,7 @@ end IsUnit
is properly discontinuous, that is, for any pair of compact sets `K, L` in `T`, only finitely many
`γ:Γ` move `K` to have nontrivial intersection with `L`.
-/
-class ProperlyDiscontinuousSMul (Γ : Type _) (T : Type _) [TopologicalSpace T] [SMul Γ T] :
+class ProperlyDiscontinuousSMul (Γ : Type*) (T : Type*) [TopologicalSpace T] [SMul Γ T] :
Prop where
/-- Given two compact sets `K` and `L`, `γ • K ∩ L` is nonempty for finitely many `γ`. -/
finite_disjoint_inter_image :
@@ -461,7 +461,7 @@ class ProperlyDiscontinuousSMul (Γ : Type _) (T : Type _) [TopologicalSpace T]
is properly discontinuous, that is, for any pair of compact sets `K, L` in `T`, only finitely many
`γ:Γ` move `K` to have nontrivial intersection with `L`.
-/
-class ProperlyDiscontinuousVAdd (Γ : Type _) (T : Type _) [TopologicalSpace T] [VAdd Γ T] :
+class ProperlyDiscontinuousVAdd (Γ : Type*) (T : Type*) [TopologicalSpace T] [VAdd Γ T] :
Prop where
/-- Given two compact sets `K` and `L`, `γ +ᵥ K ∩ L` is nonempty for finitely many `γ`. -/
finite_disjoint_inter_image :
@@ -470,7 +470,7 @@ class ProperlyDiscontinuousVAdd (Γ : Type _) (T : Type _) [TopologicalSpace T]
attribute [to_additive] ProperlyDiscontinuousSMul
-variable {Γ : Type _} [Group Γ] {T : Type _} [TopologicalSpace T] [MulAction Γ T]
+variable {Γ : Type*} [Group Γ] {T : Type*} [TopologicalSpace T] [MulAction Γ T]
/-- A finite group action is always properly discontinuous. -/
@[to_additive "A finite group action is always properly discontinuous."]
@@ -545,7 +545,7 @@ section nhds
section MulAction
-variable {G₀ : Type _} [GroupWithZero G₀] [MulAction G₀ α] [TopologicalSpace α]
+variable {G₀ : Type*} [GroupWithZero G₀] [MulAction G₀ α] [TopologicalSpace α]
[ContinuousConstSMul G₀ α]
-- porting note: generalize to a group action + `IsUnit`
@@ -568,7 +568,7 @@ end MulAction
section DistribMulAction
-variable {G₀ : Type _} [GroupWithZero G₀] [AddMonoid α] [DistribMulAction G₀ α] [TopologicalSpace α]
+variable {G₀ : Type*} [GroupWithZero G₀] [AddMonoid α] [DistribMulAction G₀ α] [TopologicalSpace α]
[ContinuousConstSMul G₀ α]
theorem set_smul_mem_nhds_zero_iff {s : Set α} {c : G₀} (hc : c ≠ 0) :
@@ -319,10 +319,16 @@ theorem continuous_const_smul_iff₀ (hc : c ≠ 0) : (Continuous fun x => c •
/-- Scalar multiplication by a non-zero element of a group with zero acting on `α` is a
homeomorphism from `α` onto itself. -/
+@[simps! (config := .asFn) apply]
protected def Homeomorph.smulOfNeZero (c : G₀) (hc : c ≠ 0) : α ≃ₜ α :=
Homeomorph.smul (Units.mk0 c hc)
#align homeomorph.smul_of_ne_zero Homeomorph.smulOfNeZero
+@[simp]
+theorem Homeomorph.smulOfNeZero_symm_apply {c : G₀} (hc : c ≠ 0) :
+ ⇑(Homeomorph.smulOfNeZero c hc).symm = (c⁻¹ • · : α → α) :=
+ rfl
+
theorem isOpenMap_smul₀ {c : G₀} (hc : c ≠ 0) : IsOpenMap fun x : α => c • x :=
(Homeomorph.smulOfNeZero c hc).isOpenMap
#align is_open_map_smul₀ isOpenMap_smul₀
@@ -2,11 +2,6 @@
Copyright (c) 2021 Alex Kontorovich, Heather Macbeth. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Alex Kontorovich, Heather Macbeth
-
-! This file was ported from Lean 3 source module topology.algebra.const_mul_action
-! leanprover-community/mathlib commit d90e4e186f1d18e375dcd4e5b5f6364b01cb3e46
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Topology.Algebra.Constructions
import Mathlib.Topology.Homeomorph
@@ -14,6 +9,8 @@ import Mathlib.GroupTheory.GroupAction.Basic
import Mathlib.Topology.Bases
import Mathlib.Topology.Support
+#align_import topology.algebra.const_mul_action from "leanprover-community/mathlib"@"d90e4e186f1d18e375dcd4e5b5f6364b01cb3e46"
+
/-!
# Monoid actions continuous in the second variable
@@ -451,7 +451,7 @@ class ProperlyDiscontinuousSMul (Γ : Type _) (T : Type _) [TopologicalSpace T]
Prop where
/-- Given two compact sets `K` and `L`, `γ • K ∩ L` is nonempty for finitely many `γ`. -/
finite_disjoint_inter_image :
- ∀ {K L : Set T}, IsCompact K → IsCompact L → Set.Finite { γ : Γ | (γ • ·) '' K ∩ L ≠ ∅ }
+ ∀ {K L : Set T}, IsCompact K → IsCompact L → Set.Finite { γ : Γ | (γ • ·) '' K ∩ L ≠ ∅ }
#align properly_discontinuous_smul ProperlyDiscontinuousSMul
/-- Class `ProperlyDiscontinuousVAdd Γ T` says that the additive action `(+ᵥ) : Γ → T → T`
sSup
/iSup
(#3938)
As discussed on Zulip
supₛ
→ sSup
infₛ
→ sInf
supᵢ
→ iSup
infᵢ
→ iInf
bsupₛ
→ bsSup
binfₛ
→ bsInf
bsupᵢ
→ biSup
binfᵢ
→ biInf
csupₛ
→ csSup
cinfₛ
→ csInf
csupᵢ
→ ciSup
cinfᵢ
→ ciInf
unionₛ
→ sUnion
interₛ
→ sInter
unionᵢ
→ iUnion
interᵢ
→ iInter
bunionₛ
→ bsUnion
binterₛ
→ bsInter
bunionᵢ
→ biUnion
binterᵢ
→ biInter
Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>
@@ -185,7 +185,7 @@ theorem isClosed_setOf_map_smul [Monoid N] (α β) [MulAction M α] [MulAction N
[TopologicalSpace β] [T2Space β] [ContinuousConstSMul N β] (σ : M → N) :
IsClosed { f : α → β | ∀ c x, f (c • x) = σ c • f x } := by
simp only [Set.setOf_forall]
- exact isClosed_interᵢ fun c => isClosed_interᵢ fun x =>
+ exact isClosed_iInter fun c => isClosed_iInter fun x =>
isClosed_eq (continuous_apply _) ((continuous_apply _).const_smul _)
#align is_closed_set_of_map_smul isClosed_setOf_map_smulₓ
@@ -487,7 +487,7 @@ theorem isOpenMap_quotient_mk'_mul [ContinuousConstSMul Γ T] :
letI := MulAction.orbitRel Γ T
IsOpenMap (Quotient.mk' : T → Quotient (MulAction.orbitRel Γ T)) := fun U hU => by
rw [isOpen_coinduced, MulAction.quotient_preimage_image_eq_union_mul U]
- exact isOpen_unionᵢ fun γ => isOpenMap_smul γ U hU
+ exact isOpen_iUnion fun γ => isOpenMap_smul γ U hU
#align is_open_map_quotient_mk_mul isOpenMap_quotient_mk'_mul
#align is_open_map_quotient_mk_add isOpenMap_quotient_mk'_add
@@ -515,14 +515,14 @@ instance (priority := 100) t2Space_of_properlyDiscontinuousSMul_of_t2Space [T2Sp
let V₀₀ := ⋂ γ ∈ bad_Γ_set, v γ
let V₀ := V₀₀ ∩ L₀
have U_nhds : f '' U₀ ∈ 𝓝 (f x₀) := by
- refine f_op.image_mem_nhds (inter_mem ((binterᵢ_mem bad_Γ_finite).mpr fun γ _ => ?_) K₀_in)
+ refine f_op.image_mem_nhds (inter_mem ((biInter_mem bad_Γ_finite).mpr fun γ _ => ?_) K₀_in)
exact (continuous_const_smul _).continuousAt (hu γ)
have V_nhds : f '' V₀ ∈ 𝓝 (f y₀) :=
- f_op.image_mem_nhds (inter_mem ((binterᵢ_mem bad_Γ_finite).mpr fun γ _ => hv γ) L₀_in)
+ f_op.image_mem_nhds (inter_mem ((biInter_mem bad_Γ_finite).mpr fun γ _ => hv γ) L₀_in)
refine' ⟨f '' U₀, U_nhds, f '' V₀, V_nhds, MulAction.disjoint_image_image_iff.2 _⟩
rintro x ⟨x_in_U₀₀, x_in_K₀⟩ γ
by_cases H : γ ∈ bad_Γ_set
- · exact fun h => (u_v_disjoint γ).le_bot ⟨mem_interᵢ₂.mp x_in_U₀₀ γ H, mem_interᵢ₂.mp h.1 γ H⟩
+ · exact fun h => (u_v_disjoint γ).le_bot ⟨mem_iInter₂.mp x_in_U₀₀ γ H, mem_iInter₂.mp h.1 γ H⟩
· rintro ⟨-, h'⟩
simp only [image_smul, Classical.not_not, mem_setOf_eq, Ne.def] at H
exact eq_empty_iff_forall_not_mem.mp H (γ • x) ⟨mem_image_of_mem _ x_in_K₀, h'⟩
@@ -45,8 +45,6 @@ Hausdorff, discrete group, properly discontinuous, quotient space
open Topology Pointwise Filter Set TopologicalSpace
-attribute [local instance] MulAction.orbitRel
-
/-- Class `ContinuousConstSMul Γ T` says that the scalar multiplication `(•) : Γ → T → T`
is continuous in the second argument. We use the same class for all kinds of multiplicative
actions, including (semi)modules and algebras.
@@ -486,6 +484,7 @@ export ProperlyDiscontinuousVAdd (finite_disjoint_inter_image)
@[to_additive "The quotient map by a group action is open, i.e. the quotient by a group
action is an open quotient. "]
theorem isOpenMap_quotient_mk'_mul [ContinuousConstSMul Γ T] :
+ letI := MulAction.orbitRel Γ T
IsOpenMap (Quotient.mk' : T → Quotient (MulAction.orbitRel Γ T)) := fun U hU => by
rw [isOpen_coinduced, MulAction.quotient_preimage_image_eq_union_mul U]
exact isOpen_unionᵢ fun γ => isOpenMap_smul γ U hU
@@ -498,6 +497,7 @@ space is t2."]
instance (priority := 100) t2Space_of_properlyDiscontinuousSMul_of_t2Space [T2Space T]
[LocallyCompactSpace T] [ContinuousConstSMul Γ T] [ProperlyDiscontinuousSMul Γ T] :
T2Space (Quotient (MulAction.orbitRel Γ T)) := by
+ letI := MulAction.orbitRel Γ T
set Q := Quotient (MulAction.orbitRel Γ T)
rw [t2Space_iff_nhds]
let f : T → Q := Quotient.mk'
@@ -140,7 +140,8 @@ instance OrderDual.continuousConstSMul' : ContinuousConstSMul Mᵒᵈ α :=
#align order_dual.has_continuous_const_vadd' OrderDual.continuousConstVAdd'
@[to_additive]
-instance [SMul M β] [ContinuousConstSMul M β] : ContinuousConstSMul M (α × β) :=
+instance Prod.continuousConstSMul [SMul M β] [ContinuousConstSMul M β] :
+ ContinuousConstSMul M (α × β) :=
⟨fun _ => (continuous_fst.const_smul _).prod_mk (continuous_snd.const_smul _)⟩
@[to_additive]
Co-authored-by: Moritz Doll <moritz.doll@googlemail.com> Co-authored-by: Yury G. Kudryashov <urkud@urkud.name> Co-authored-by: Komyyy <pol_tta@outlook.jp> Co-authored-by: Yury Kudryashov <urkud@urkud.name> Co-authored-by: ChrisHughes24 <chrishughes24@gmail.com> Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>
@@ -171,7 +171,7 @@ instance Units.continuousConstSMul : ContinuousConstSMul Mˣ α
@[to_additive]
theorem smul_closure_subset (c : M) (s : Set α) : c • closure s ⊆ closure (c • s) :=
- ((Set.mapsTo_image _ _).closure <| continuous_id.const_smul c).image_subset
+ ((Set.mapsTo_image _ _).closure <| continuous_const_smul c).image_subset
#align smul_closure_subset smul_closure_subset
#align vadd_closure_subset vadd_closure_subset
@@ -182,6 +182,14 @@ theorem smul_closure_orbit_subset (c : M) (x : α) :
#align smul_closure_orbit_subset smul_closure_orbit_subset
#align vadd_closure_orbit_subset vadd_closure_orbit_subset
+theorem isClosed_setOf_map_smul [Monoid N] (α β) [MulAction M α] [MulAction N β]
+ [TopologicalSpace β] [T2Space β] [ContinuousConstSMul N β] (σ : M → N) :
+ IsClosed { f : α → β | ∀ c x, f (c • x) = σ c • f x } := by
+ simp only [Set.setOf_forall]
+ exact isClosed_interᵢ fun c => isClosed_interᵢ fun x =>
+ isClosed_eq (continuous_apply _) ((continuous_apply _).const_smul _)
+#align is_closed_set_of_map_smul isClosed_setOf_map_smulₓ
+
end Monoid
section Group
@@ -109,7 +109,7 @@ theorem ContinuousOn.const_smul (hg : ContinuousOn g s) (c : M) :
#align continuous_on.const_smul ContinuousOn.const_smul
#align continuous_on.const_vadd ContinuousOn.const_vadd
-@[to_additive, continuity]
+@[to_additive (attr := continuity)]
theorem Continuous.const_smul (hg : Continuous g) (c : M) : Continuous fun x => c • g x :=
(continuous_const_smul _).comp hg
#align continuous.const_smul Continuous.const_smul
@@ -383,7 +383,7 @@ theorem HasCompactSupport.comp_smul {β : Type _} [Zero β] {f : α → β} (h :
h.comp_homeomorph (Homeomorph.smulOfNeZero c hc)
#align has_compact_support.comp_smul HasCompactSupport.comp_smul
-attribute [to_additive HasCompactSupport.comp_smul] HasCompactMulSupport.comp_smul
+attribute [to_additive existing HasCompactSupport.comp_smul] HasCompactMulSupport.comp_smul
end GroupWithZero
We implement the continuity tactic using aesop, this makes it more robust and reduces the code to trivial macros.
@@ -109,7 +109,7 @@ theorem ContinuousOn.const_smul (hg : ContinuousOn g s) (c : M) :
#align continuous_on.const_smul ContinuousOn.const_smul
#align continuous_on.const_vadd ContinuousOn.const_vadd
-@[to_additive] -- porting note: todo: restore `continuity`
+@[to_additive, continuity]
theorem Continuous.const_smul (hg : Continuous g) (c : M) : Continuous fun x => c • g x :=
(continuous_const_smul _).comp hg
#align continuous.const_smul Continuous.const_smul
@@ -17,13 +17,13 @@ import Mathlib.Topology.Support
/-!
# Monoid actions continuous in the second variable
-In this file we define class `HasContinuousConstSMul`. We say `HasContinuousConstSMul Γ T` if
+In this file we define class `ContinuousConstSMul`. We say `ContinuousConstSMul Γ T` if
`Γ` acts on `T` and for each `γ`, the map `x ↦ γ • x` is continuous. (This differs from
-`HasContinuousSMul`, which requires simultaneous continuity in both variables.)
+`ContinuousSMul`, which requires simultaneous continuity in both variables.)
## Main definitions
-* `HasContinuousConstSMul Γ T` : typeclass saying that the map `x ↦ γ • x` is continuous on `T`;
+* `ContinuousConstSMul Γ T` : typeclass saying that the map `x ↦ γ • x` is continuous on `T`;
* `ProperlyDiscontinuousSMul`: says that the scalar multiplication `(•) : Γ → T → T`
is properly discontinuous, that is, for any pair of compact sets `K, L` in `T`, only finitely
many `γ:Γ` move `K` to have nontrivial intersection with `L`.
@@ -47,38 +47,38 @@ open Topology Pointwise Filter Set TopologicalSpace
attribute [local instance] MulAction.orbitRel
-/-- Class `HasContinuousConstSMul Γ T` says that the scalar multiplication `(•) : Γ → T → T`
+/-- Class `ContinuousConstSMul Γ T` says that the scalar multiplication `(•) : Γ → T → T`
is continuous in the second argument. We use the same class for all kinds of multiplicative
actions, including (semi)modules and algebras.
-Note that both `HasContinuousConstSMul α α` and `HasContinuousConstSMul αᵐᵒᵖ α` are
-weaker versions of `HasContinuousMul α`. -/
-class HasContinuousConstSMul (Γ : Type _) (T : Type _) [TopologicalSpace T] [SMul Γ T] : Prop where
+Note that both `ContinuousConstSMul α α` and `ContinuousConstSMul αᵐᵒᵖ α` are
+weaker versions of `ContinuousMul α`. -/
+class ContinuousConstSMul (Γ : Type _) (T : Type _) [TopologicalSpace T] [SMul Γ T] : Prop where
/-- The scalar multiplication `(•) : Γ → T → T` is continuous in the second argument. -/
continuous_const_smul : ∀ γ : Γ, Continuous fun x : T => γ • x
-#align has_continuous_const_smul HasContinuousConstSMul
+#align has_continuous_const_smul ContinuousConstSMul
-/-- Class `HasContinuousConstVAdd Γ T` says that the additive action `(+ᵥ) : Γ → T → T`
+/-- Class `ContinuousConstVAdd Γ T` says that the additive action `(+ᵥ) : Γ → T → T`
is continuous in the second argument. We use the same class for all kinds of additive actions,
including (semi)modules and algebras.
-Note that both `HasContinuousConstVAdd α α` and `HasContinuousConstVAdd αᵐᵒᵖ α` are
-weaker versions of `HasContinuousVAdd α`. -/
-class HasContinuousConstVAdd (Γ : Type _) (T : Type _) [TopologicalSpace T] [VAdd Γ T] : Prop where
+Note that both `ContinuousConstVAdd α α` and `ContinuousConstVAdd αᵐᵒᵖ α` are
+weaker versions of `ContinuousVAdd α`. -/
+class ContinuousConstVAdd (Γ : Type _) (T : Type _) [TopologicalSpace T] [VAdd Γ T] : Prop where
/-- The additive action `(+ᵥ) : Γ → T → T` is continuous in the second argument. -/
continuous_const_vadd : ∀ γ : Γ, Continuous fun x : T => γ +ᵥ x
-#align has_continuous_const_vadd HasContinuousConstVAdd
+#align has_continuous_const_vadd ContinuousConstVAdd
-attribute [to_additive] HasContinuousConstSMul
+attribute [to_additive] ContinuousConstSMul
-export HasContinuousConstSMul (continuous_const_smul)
-export HasContinuousConstVAdd (continuous_const_vadd)
+export ContinuousConstSMul (continuous_const_smul)
+export ContinuousConstVAdd (continuous_const_vadd)
variable {M α β : Type _}
section SMul
-variable [TopologicalSpace α] [SMul M α] [HasContinuousConstSMul M α]
+variable [TopologicalSpace α] [SMul M α] [ContinuousConstSMul M α]
@[to_additive]
theorem Filter.Tendsto.const_smul {f : β → α} {l : Filter β} {a : α} (hf : Tendsto f l (𝓝 a))
@@ -118,38 +118,38 @@ theorem Continuous.const_smul (hg : Continuous g) (c : M) : Continuous fun x =>
/-- If a scalar is central, then its right action is continuous when its left action is. -/
@[to_additive "If an additive action is central, then its right action is continuous when its left
action is."]
-instance HasContinuousConstSMul.op [SMul Mᵐᵒᵖ α] [IsCentralScalar M α] :
- HasContinuousConstSMul Mᵐᵒᵖ α :=
+instance ContinuousConstSMul.op [SMul Mᵐᵒᵖ α] [IsCentralScalar M α] :
+ ContinuousConstSMul Mᵐᵒᵖ α :=
⟨MulOpposite.rec' fun c => by simpa only [op_smul_eq_smul] using continuous_const_smul c⟩
-#align has_continuous_const_smul.op HasContinuousConstSMul.op
-#align has_continuous_const_vadd.op HasContinuousConstVAdd.op
+#align has_continuous_const_smul.op ContinuousConstSMul.op
+#align has_continuous_const_vadd.op ContinuousConstVAdd.op
@[to_additive]
-instance MulOpposite.hasContinuousConstSMul : HasContinuousConstSMul M αᵐᵒᵖ :=
+instance MulOpposite.continuousConstSMul : ContinuousConstSMul M αᵐᵒᵖ :=
⟨fun c => MulOpposite.continuous_op.comp <| MulOpposite.continuous_unop.const_smul c⟩
-#align mul_opposite.has_continuous_const_smul MulOpposite.hasContinuousConstSMul
-#align add_opposite.has_continuous_const_vadd AddOpposite.hasContinuousConstVAdd
+#align mul_opposite.has_continuous_const_smul MulOpposite.continuousConstSMul
+#align add_opposite.has_continuous_const_vadd AddOpposite.continuousConstVAdd
@[to_additive]
-instance : HasContinuousConstSMul M αᵒᵈ := ‹HasContinuousConstSMul M α›
+instance : ContinuousConstSMul M αᵒᵈ := ‹ContinuousConstSMul M α›
@[to_additive]
-instance OrderDual.hasContinuousConstSMul' : HasContinuousConstSMul Mᵒᵈ α :=
- ‹HasContinuousConstSMul M α›
-#align order_dual.has_continuous_const_smul' OrderDual.hasContinuousConstSMul'
-#align order_dual.has_continuous_const_vadd' OrderDual.hasContinuousConstVAdd'
+instance OrderDual.continuousConstSMul' : ContinuousConstSMul Mᵒᵈ α :=
+ ‹ContinuousConstSMul M α›
+#align order_dual.has_continuous_const_smul' OrderDual.continuousConstSMul'
+#align order_dual.has_continuous_const_vadd' OrderDual.continuousConstVAdd'
@[to_additive]
-instance [SMul M β] [HasContinuousConstSMul M β] : HasContinuousConstSMul M (α × β) :=
+instance [SMul M β] [ContinuousConstSMul M β] : ContinuousConstSMul M (α × β) :=
⟨fun _ => (continuous_fst.const_smul _).prod_mk (continuous_snd.const_smul _)⟩
@[to_additive]
instance {ι : Type _} {γ : ι → Type _} [∀ i, TopologicalSpace (γ i)] [∀ i, SMul M (γ i)]
- [∀ i, HasContinuousConstSMul M (γ i)] : HasContinuousConstSMul M (∀ i, γ i) :=
+ [∀ i, ContinuousConstSMul M (γ i)] : ContinuousConstSMul M (∀ i, γ i) :=
⟨fun _ => continuous_pi fun i => (continuous_apply i).const_smul _⟩
@[to_additive]
-theorem IsCompact.smul {α β} [SMul α β] [TopologicalSpace β] [HasContinuousConstSMul α β] (a : α)
+theorem IsCompact.smul {α β} [SMul α β] [TopologicalSpace β] [ContinuousConstSMul α β] (a : α)
{s : Set β} (hs : IsCompact s) : IsCompact (a • s) :=
hs.image (continuous_id.const_smul a)
#align is_compact.smul IsCompact.smul
@@ -161,13 +161,13 @@ section Monoid
variable [TopologicalSpace α]
-variable [Monoid M] [MulAction M α] [HasContinuousConstSMul M α]
+variable [Monoid M] [MulAction M α] [ContinuousConstSMul M α]
@[to_additive]
-instance Units.hasContinuousConstSMul : HasContinuousConstSMul Mˣ α
+instance Units.continuousConstSMul : ContinuousConstSMul Mˣ α
where continuous_const_smul m := (continuous_const_smul (m : M) : _)
-#align units.has_continuous_const_smul Units.hasContinuousConstSMul
-#align add_units.has_continuous_const_vadd AddUnits.hasContinuousConstVAdd
+#align units.has_continuous_const_smul Units.continuousConstSMul
+#align add_units.has_continuous_const_vadd AddUnits.continuousConstVAdd
@[to_additive]
theorem smul_closure_subset (c : M) (s : Set α) : c • closure s ⊆ closure (c • s) :=
@@ -186,7 +186,7 @@ end Monoid
section Group
-variable {G : Type _} [TopologicalSpace α] [Group G] [MulAction G α] [HasContinuousConstSMul G α]
+variable {G : Type _} [TopologicalSpace α] [Group G] [MulAction G α] [ContinuousConstSMul G α]
@[to_additive]
theorem tendsto_const_smul_iff {f : β → α} {l : Filter β} {a : α} (c : G) :
@@ -285,7 +285,7 @@ end Group
section GroupWithZero
variable {G₀ : Type _} [TopologicalSpace α] [GroupWithZero G₀] [MulAction G₀ α]
- [HasContinuousConstSMul G₀ α]
+ [ContinuousConstSMul G₀ α]
theorem tendsto_const_smul_iff₀ {f : β → α} {l : Filter β} {a : α} {c : G₀} (hc : c ≠ 0) :
Tendsto (fun x => c • f x) l (𝓝 <| c • a) ↔ Tendsto f l (𝓝 a) :=
@@ -332,7 +332,7 @@ theorem interior_smul₀ {c : G₀} (hc : c ≠ 0) (s : Set α) : interior (c
#align interior_smul₀ interior_smul₀
theorem closure_smul₀ {E} [Zero E] [MulActionWithZero G₀ E] [TopologicalSpace E] [T1Space E]
- [HasContinuousConstSMul G₀ E] (c : G₀) (s : Set E) : closure (c • s) = c • closure s := by
+ [ContinuousConstSMul G₀ E] (c : G₀) (s : Set E) : closure (c • s) = c • closure s := by
rcases eq_or_ne c 0 with (rfl | hc)
· rcases eq_empty_or_nonempty s with (rfl | hs)
· simp
@@ -359,7 +359,7 @@ theorem IsClosed.smul_of_ne_zero {c : G₀} {s : Set α} (hs : IsClosed s) (hc :
The lemma that `smul` is a closed map in the first argument (for a normed space over a complete
normed field) is `isClosedMap_smul_left` in `Analysis.NormedSpace.FiniteDimension`. -/
theorem isClosedMap_smul₀ {𝕜 M : Type _} [DivisionRing 𝕜] [AddCommMonoid M] [TopologicalSpace M]
- [T1Space M] [Module 𝕜 M] [HasContinuousConstSMul 𝕜 M] (c : 𝕜) :
+ [T1Space M] [Module 𝕜 M] [ContinuousConstSMul 𝕜 M] (c : 𝕜) :
IsClosedMap fun x : M => c • x := by
rcases eq_or_ne c 0 with (rfl | hne)
· simp only [zero_smul]
@@ -368,7 +368,7 @@ theorem isClosedMap_smul₀ {𝕜 M : Type _} [DivisionRing 𝕜] [AddCommMonoid
#align is_closed_map_smul₀ isClosedMap_smul₀
theorem IsClosed.smul₀ {𝕜 M : Type _} [DivisionRing 𝕜] [AddCommMonoid M] [TopologicalSpace M]
- [T1Space M] [Module 𝕜 M] [HasContinuousConstSMul 𝕜 M] (c : 𝕜) {s : Set M} (hs : IsClosed s) :
+ [T1Space M] [Module 𝕜 M] [ContinuousConstSMul 𝕜 M] (c : 𝕜) {s : Set M} (hs : IsClosed s) :
IsClosed (c • s) :=
isClosedMap_smul₀ c s hs
#align is_closed.smul₀ IsClosed.smul₀
@@ -389,7 +389,7 @@ end GroupWithZero
namespace IsUnit
-variable [Monoid M] [TopologicalSpace α] [MulAction M α] [HasContinuousConstSMul M α]
+variable [Monoid M] [TopologicalSpace α] [MulAction M α] [ContinuousConstSMul M α]
nonrec theorem tendsto_const_smul_iff {f : β → α} {l : Filter β} {a : α} {c : M} (hc : IsUnit c) :
Tendsto (fun x => c • f x) l (𝓝 <| c • a) ↔ Tendsto f l (𝓝 a) :=
@@ -476,7 +476,7 @@ export ProperlyDiscontinuousVAdd (finite_disjoint_inter_image)
quotient. -/
@[to_additive "The quotient map by a group action is open, i.e. the quotient by a group
action is an open quotient. "]
-theorem isOpenMap_quotient_mk'_mul [HasContinuousConstSMul Γ T] :
+theorem isOpenMap_quotient_mk'_mul [ContinuousConstSMul Γ T] :
IsOpenMap (Quotient.mk' : T → Quotient (MulAction.orbitRel Γ T)) := fun U hU => by
rw [isOpen_coinduced, MulAction.quotient_preimage_image_eq_union_mul U]
exact isOpen_unionᵢ fun γ => isOpenMap_smul γ U hU
@@ -487,7 +487,7 @@ theorem isOpenMap_quotient_mk'_mul [HasContinuousConstSMul Γ T] :
@[to_additive "The quotient by a discontinuous group action of a locally compact t2
space is t2."]
instance (priority := 100) t2Space_of_properlyDiscontinuousSMul_of_t2Space [T2Space T]
- [LocallyCompactSpace T] [HasContinuousConstSMul Γ T] [ProperlyDiscontinuousSMul Γ T] :
+ [LocallyCompactSpace T] [ContinuousConstSMul Γ T] [ProperlyDiscontinuousSMul Γ T] :
T2Space (Quotient (MulAction.orbitRel Γ T)) := by
set Q := Quotient (MulAction.orbitRel Γ T)
rw [t2Space_iff_nhds]
@@ -523,18 +523,18 @@ instance (priority := 100) t2Space_of_properlyDiscontinuousSMul_of_t2Space [T2Sp
/-- The quotient of a second countable space by a group action is second countable. -/
@[to_additive "The quotient of a second countable space by an additive group action is second
countable."]
-theorem HasContinuousConstSMul.secondCountableTopology [SecondCountableTopology T]
- [HasContinuousConstSMul Γ T] : SecondCountableTopology (Quotient (MulAction.orbitRel Γ T)) :=
+theorem ContinuousConstSMul.secondCountableTopology [SecondCountableTopology T]
+ [ContinuousConstSMul Γ T] : SecondCountableTopology (Quotient (MulAction.orbitRel Γ T)) :=
TopologicalSpace.Quotient.secondCountableTopology isOpenMap_quotient_mk'_mul
-#align has_continuous_const_smul.second_countable_topology HasContinuousConstSMul.secondCountableTopology
-#align has_continuous_const_vadd.second_countable_topology HasContinuousConstVAdd.secondCountableTopology
+#align has_continuous_const_smul.second_countable_topology ContinuousConstSMul.secondCountableTopology
+#align has_continuous_const_vadd.second_countable_topology ContinuousConstVAdd.secondCountableTopology
section nhds
section MulAction
variable {G₀ : Type _} [GroupWithZero G₀] [MulAction G₀ α] [TopologicalSpace α]
- [HasContinuousConstSMul G₀ α]
+ [ContinuousConstSMul G₀ α]
-- porting note: generalize to a group action + `IsUnit`
/-- Scalar multiplication preserves neighborhoods. -/
@@ -557,7 +557,7 @@ end MulAction
section DistribMulAction
variable {G₀ : Type _} [GroupWithZero G₀] [AddMonoid α] [DistribMulAction G₀ α] [TopologicalSpace α]
- [HasContinuousConstSMul G₀ α]
+ [ContinuousConstSMul G₀ α]
theorem set_smul_mem_nhds_zero_iff {s : Set α} {c : G₀} (hc : c ≠ 0) :
c • s ∈ 𝓝 (0 : α) ↔ s ∈ 𝓝 (0 : α) := by
@@ -17,14 +17,14 @@ import Mathlib.Topology.Support
/-!
# Monoid actions continuous in the second variable
-In this file we define class `HasContinuousConstSmul`. We say `HasContinuousConstSmul Γ T` if
+In this file we define class `HasContinuousConstSMul`. We say `HasContinuousConstSMul Γ T` if
`Γ` acts on `T` and for each `γ`, the map `x ↦ γ • x` is continuous. (This differs from
-`has_continuous_smul`, which requires simultaneous continuity in both variables.)
+`HasContinuousSMul`, which requires simultaneous continuity in both variables.)
## Main definitions
-* `HasContinuousConstSmul Γ T` : typeclass saying that the map `x ↦ γ • x` is continuous on `T`;
-* `ProperlyDiscontinuousSmul`: says that the scalar multiplication `(•) : Γ → T → T`
+* `HasContinuousConstSMul Γ T` : typeclass saying that the map `x ↦ γ • x` is continuous on `T`;
+* `ProperlyDiscontinuousSMul`: says that the scalar multiplication `(•) : Γ → T → T`
is properly discontinuous, that is, for any pair of compact sets `K, L` in `T`, only finitely
many `γ:Γ` move `K` to have nontrivial intersection with `L`.
* `Homeomorph.smul`: scalar multiplication by an element of a group `Γ` acting on `T`
@@ -33,7 +33,7 @@ In this file we define class `HasContinuousConstSmul`. We say `HasContinuousCons
## Main results
* `isOpenMap_quotient_mk'_mul` : The quotient map by a group action is open.
-* `t2Space_of_properlyDiscontinuousSmul_of_t2Space` : The quotient by a discontinuous group
+* `t2Space_of_properlyDiscontinuousSMul_of_t2Space` : The quotient by a discontinuous group
action of a locally compact t2 space is t2.
## Tags
@@ -47,38 +47,38 @@ open Topology Pointwise Filter Set TopologicalSpace
attribute [local instance] MulAction.orbitRel
-/-- Class `HasContinuousConstSmul Γ T` says that the scalar multiplication `(•) : Γ → T → T`
+/-- Class `HasContinuousConstSMul Γ T` says that the scalar multiplication `(•) : Γ → T → T`
is continuous in the second argument. We use the same class for all kinds of multiplicative
actions, including (semi)modules and algebras.
-Note that both `HasContinuousConstSmul α α` and `HasContinuousConstSmul αᵐᵒᵖ α` are
-weaker versions of `has_continuous_mul α`. -/
-class HasContinuousConstSmul (Γ : Type _) (T : Type _) [TopologicalSpace T] [SMul Γ T] : Prop where
+Note that both `HasContinuousConstSMul α α` and `HasContinuousConstSMul αᵐᵒᵖ α` are
+weaker versions of `HasContinuousMul α`. -/
+class HasContinuousConstSMul (Γ : Type _) (T : Type _) [TopologicalSpace T] [SMul Γ T] : Prop where
/-- The scalar multiplication `(•) : Γ → T → T` is continuous in the second argument. -/
continuous_const_smul : ∀ γ : Γ, Continuous fun x : T => γ • x
-#align has_continuous_const_smul HasContinuousConstSmul
+#align has_continuous_const_smul HasContinuousConstSMul
-/-- Class `HasContinuousConstVadd Γ T` says that the additive action `(+ᵥ) : Γ → T → T`
+/-- Class `HasContinuousConstVAdd Γ T` says that the additive action `(+ᵥ) : Γ → T → T`
is continuous in the second argument. We use the same class for all kinds of additive actions,
including (semi)modules and algebras.
-Note that both `HasContinuousConstVadd α α` and `HasContinuousConstVadd αᵐᵒᵖ α` are
-weaker versions of `has_continuous_add α`. -/
-class HasContinuousConstVadd (Γ : Type _) (T : Type _) [TopologicalSpace T] [VAdd Γ T] : Prop where
+Note that both `HasContinuousConstVAdd α α` and `HasContinuousConstVAdd αᵐᵒᵖ α` are
+weaker versions of `HasContinuousVAdd α`. -/
+class HasContinuousConstVAdd (Γ : Type _) (T : Type _) [TopologicalSpace T] [VAdd Γ T] : Prop where
/-- The additive action `(+ᵥ) : Γ → T → T` is continuous in the second argument. -/
continuous_const_vadd : ∀ γ : Γ, Continuous fun x : T => γ +ᵥ x
-#align has_continuous_const_vadd HasContinuousConstVadd
+#align has_continuous_const_vadd HasContinuousConstVAdd
-attribute [to_additive] HasContinuousConstSmul
+attribute [to_additive] HasContinuousConstSMul
-export HasContinuousConstSmul (continuous_const_smul)
-export HasContinuousConstVadd (continuous_const_vadd)
+export HasContinuousConstSMul (continuous_const_smul)
+export HasContinuousConstVAdd (continuous_const_vadd)
variable {M α β : Type _}
section SMul
-variable [TopologicalSpace α] [SMul M α] [HasContinuousConstSmul M α]
+variable [TopologicalSpace α] [SMul M α] [HasContinuousConstSMul M α]
@[to_additive]
theorem Filter.Tendsto.const_smul {f : β → α} {l : Filter β} {a : α} (hf : Tendsto f l (𝓝 a))
@@ -118,38 +118,38 @@ theorem Continuous.const_smul (hg : Continuous g) (c : M) : Continuous fun x =>
/-- If a scalar is central, then its right action is continuous when its left action is. -/
@[to_additive "If an additive action is central, then its right action is continuous when its left
action is."]
-instance HasContinuousConstSmul.op [SMul Mᵐᵒᵖ α] [IsCentralScalar M α] :
- HasContinuousConstSmul Mᵐᵒᵖ α :=
+instance HasContinuousConstSMul.op [SMul Mᵐᵒᵖ α] [IsCentralScalar M α] :
+ HasContinuousConstSMul Mᵐᵒᵖ α :=
⟨MulOpposite.rec' fun c => by simpa only [op_smul_eq_smul] using continuous_const_smul c⟩
-#align has_continuous_const_smul.op HasContinuousConstSmul.op
-#align has_continuous_const_vadd.op HasContinuousConstVadd.op
+#align has_continuous_const_smul.op HasContinuousConstSMul.op
+#align has_continuous_const_vadd.op HasContinuousConstVAdd.op
@[to_additive]
-instance MulOpposite.hasContinuousConstSmul : HasContinuousConstSmul M αᵐᵒᵖ :=
+instance MulOpposite.hasContinuousConstSMul : HasContinuousConstSMul M αᵐᵒᵖ :=
⟨fun c => MulOpposite.continuous_op.comp <| MulOpposite.continuous_unop.const_smul c⟩
-#align mul_opposite.has_continuous_const_smul MulOpposite.hasContinuousConstSmul
-#align add_opposite.has_continuous_const_vadd AddOpposite.hasContinuousConstVadd
+#align mul_opposite.has_continuous_const_smul MulOpposite.hasContinuousConstSMul
+#align add_opposite.has_continuous_const_vadd AddOpposite.hasContinuousConstVAdd
@[to_additive]
-instance : HasContinuousConstSmul M αᵒᵈ := ‹HasContinuousConstSmul M α›
+instance : HasContinuousConstSMul M αᵒᵈ := ‹HasContinuousConstSMul M α›
@[to_additive]
-instance OrderDual.has_continuous_const_smul' : HasContinuousConstSmul Mᵒᵈ α :=
- ‹HasContinuousConstSmul M α›
-#align order_dual.has_continuous_const_smul' OrderDual.has_continuous_const_smul'
-#align order_dual.has_continuous_const_vadd' OrderDual.has_continuous_const_vadd'
+instance OrderDual.hasContinuousConstSMul' : HasContinuousConstSMul Mᵒᵈ α :=
+ ‹HasContinuousConstSMul M α›
+#align order_dual.has_continuous_const_smul' OrderDual.hasContinuousConstSMul'
+#align order_dual.has_continuous_const_vadd' OrderDual.hasContinuousConstVAdd'
@[to_additive]
-instance [SMul M β] [HasContinuousConstSmul M β] : HasContinuousConstSmul M (α × β) :=
+instance [SMul M β] [HasContinuousConstSMul M β] : HasContinuousConstSMul M (α × β) :=
⟨fun _ => (continuous_fst.const_smul _).prod_mk (continuous_snd.const_smul _)⟩
@[to_additive]
instance {ι : Type _} {γ : ι → Type _} [∀ i, TopologicalSpace (γ i)] [∀ i, SMul M (γ i)]
- [∀ i, HasContinuousConstSmul M (γ i)] : HasContinuousConstSmul M (∀ i, γ i) :=
+ [∀ i, HasContinuousConstSMul M (γ i)] : HasContinuousConstSMul M (∀ i, γ i) :=
⟨fun _ => continuous_pi fun i => (continuous_apply i).const_smul _⟩
@[to_additive]
-theorem IsCompact.smul {α β} [SMul α β] [TopologicalSpace β] [HasContinuousConstSmul α β] (a : α)
+theorem IsCompact.smul {α β} [SMul α β] [TopologicalSpace β] [HasContinuousConstSMul α β] (a : α)
{s : Set β} (hs : IsCompact s) : IsCompact (a • s) :=
hs.image (continuous_id.const_smul a)
#align is_compact.smul IsCompact.smul
@@ -161,13 +161,13 @@ section Monoid
variable [TopologicalSpace α]
-variable [Monoid M] [MulAction M α] [HasContinuousConstSmul M α]
+variable [Monoid M] [MulAction M α] [HasContinuousConstSMul M α]
@[to_additive]
-instance Units.hasContinuousConstSmul : HasContinuousConstSmul Mˣ α
+instance Units.hasContinuousConstSMul : HasContinuousConstSMul Mˣ α
where continuous_const_smul m := (continuous_const_smul (m : M) : _)
-#align units.has_continuous_const_smul Units.hasContinuousConstSmul
-#align add_units.has_continuous_const_vadd AddUnits.hasContinuousConstVadd
+#align units.has_continuous_const_smul Units.hasContinuousConstSMul
+#align add_units.has_continuous_const_vadd AddUnits.hasContinuousConstVAdd
@[to_additive]
theorem smul_closure_subset (c : M) (s : Set α) : c • closure s ⊆ closure (c • s) :=
@@ -186,7 +186,7 @@ end Monoid
section Group
-variable {G : Type _} [TopologicalSpace α] [Group G] [MulAction G α] [HasContinuousConstSmul G α]
+variable {G : Type _} [TopologicalSpace α] [Group G] [MulAction G α] [HasContinuousConstSMul G α]
@[to_additive]
theorem tendsto_const_smul_iff {f : β → α} {l : Filter β} {a : α} (c : G) :
@@ -285,7 +285,7 @@ end Group
section GroupWithZero
variable {G₀ : Type _} [TopologicalSpace α] [GroupWithZero G₀] [MulAction G₀ α]
- [HasContinuousConstSmul G₀ α]
+ [HasContinuousConstSMul G₀ α]
theorem tendsto_const_smul_iff₀ {f : β → α} {l : Filter β} {a : α} {c : G₀} (hc : c ≠ 0) :
Tendsto (fun x => c • f x) l (𝓝 <| c • a) ↔ Tendsto f l (𝓝 a) :=
@@ -332,7 +332,7 @@ theorem interior_smul₀ {c : G₀} (hc : c ≠ 0) (s : Set α) : interior (c
#align interior_smul₀ interior_smul₀
theorem closure_smul₀ {E} [Zero E] [MulActionWithZero G₀ E] [TopologicalSpace E] [T1Space E]
- [HasContinuousConstSmul G₀ E] (c : G₀) (s : Set E) : closure (c • s) = c • closure s := by
+ [HasContinuousConstSMul G₀ E] (c : G₀) (s : Set E) : closure (c • s) = c • closure s := by
rcases eq_or_ne c 0 with (rfl | hc)
· rcases eq_empty_or_nonempty s with (rfl | hs)
· simp
@@ -344,7 +344,7 @@ theorem closure_smul₀ {E} [Zero E] [MulActionWithZero G₀ E] [TopologicalSpac
/-- `smul` is a closed map in the second argument.
The lemma that `smul` is a closed map in the first argument (for a normed space over a complete
-normed field) is `is_closed_map_smul_left` in `analysis.normed_space.finite_dimension`. -/
+normed field) is `isClosedMap_smul_left` in `Analysis.NormedSpace.FiniteDimension`. -/
theorem isClosedMap_smul_of_ne_zero {c : G₀} (hc : c ≠ 0) : IsClosedMap fun x : α => c • x :=
(Homeomorph.smulOfNeZero c hc).isClosedMap
#align is_closed_map_smul_of_ne_zero isClosedMap_smul_of_ne_zero
@@ -359,7 +359,7 @@ theorem IsClosed.smul_of_ne_zero {c : G₀} {s : Set α} (hs : IsClosed s) (hc :
The lemma that `smul` is a closed map in the first argument (for a normed space over a complete
normed field) is `isClosedMap_smul_left` in `Analysis.NormedSpace.FiniteDimension`. -/
theorem isClosedMap_smul₀ {𝕜 M : Type _} [DivisionRing 𝕜] [AddCommMonoid M] [TopologicalSpace M]
- [T1Space M] [Module 𝕜 M] [HasContinuousConstSmul 𝕜 M] (c : 𝕜) :
+ [T1Space M] [Module 𝕜 M] [HasContinuousConstSMul 𝕜 M] (c : 𝕜) :
IsClosedMap fun x : M => c • x := by
rcases eq_or_ne c 0 with (rfl | hne)
· simp only [zero_smul]
@@ -368,7 +368,7 @@ theorem isClosedMap_smul₀ {𝕜 M : Type _} [DivisionRing 𝕜] [AddCommMonoid
#align is_closed_map_smul₀ isClosedMap_smul₀
theorem IsClosed.smul₀ {𝕜 M : Type _} [DivisionRing 𝕜] [AddCommMonoid M] [TopologicalSpace M]
- [T1Space M] [Module 𝕜 M] [HasContinuousConstSmul 𝕜 M] (c : 𝕜) {s : Set M} (hs : IsClosed s) :
+ [T1Space M] [Module 𝕜 M] [HasContinuousConstSMul 𝕜 M] (c : 𝕜) {s : Set M} (hs : IsClosed s) :
IsClosed (c • s) :=
isClosedMap_smul₀ c s hs
#align is_closed.smul₀ IsClosed.smul₀
@@ -389,7 +389,7 @@ end GroupWithZero
namespace IsUnit
-variable [Monoid M] [TopologicalSpace α] [MulAction M α] [HasContinuousConstSmul M α]
+variable [Monoid M] [TopologicalSpace α] [MulAction M α] [HasContinuousConstSMul M α]
nonrec theorem tendsto_const_smul_iff {f : β → α} {l : Filter β} {a : α} {c : M} (hc : IsUnit c) :
Tendsto (fun x => c • f x) l (𝓝 <| c • a) ↔ Tendsto f l (𝓝 a) :=
@@ -436,47 +436,47 @@ nonrec theorem isClosedMap_smul (hc : IsUnit c) : IsClosedMap fun x : α => c
end IsUnit
-- porting note: todo: use `Set.Nonempty`
-/-- Class `ProperlyDiscontinuousSmul Γ T` says that the scalar multiplication `(•) : Γ → T → T`
+/-- Class `ProperlyDiscontinuousSMul Γ T` says that the scalar multiplication `(•) : Γ → T → T`
is properly discontinuous, that is, for any pair of compact sets `K, L` in `T`, only finitely many
`γ:Γ` move `K` to have nontrivial intersection with `L`.
-/
-class ProperlyDiscontinuousSmul (Γ : Type _) (T : Type _) [TopologicalSpace T] [SMul Γ T] :
+class ProperlyDiscontinuousSMul (Γ : Type _) (T : Type _) [TopologicalSpace T] [SMul Γ T] :
Prop where
/-- Given two compact sets `K` and `L`, `γ • K ∩ L` is nonempty for finitely many `γ`. -/
finite_disjoint_inter_image :
∀ {K L : Set T}, IsCompact K → IsCompact L → Set.Finite { γ : Γ | (γ • ·) '' K ∩ L ≠ ∅ }
-#align properly_discontinuous_smul ProperlyDiscontinuousSmul
+#align properly_discontinuous_smul ProperlyDiscontinuousSMul
-/-- Class `ProperlyDiscontinuousVadd Γ T` says that the additive action `(+ᵥ) : Γ → T → T`
+/-- Class `ProperlyDiscontinuousVAdd Γ T` says that the additive action `(+ᵥ) : Γ → T → T`
is properly discontinuous, that is, for any pair of compact sets `K, L` in `T`, only finitely many
`γ:Γ` move `K` to have nontrivial intersection with `L`.
-/
-class ProperlyDiscontinuousVadd (Γ : Type _) (T : Type _) [TopologicalSpace T] [VAdd Γ T] :
+class ProperlyDiscontinuousVAdd (Γ : Type _) (T : Type _) [TopologicalSpace T] [VAdd Γ T] :
Prop where
/-- Given two compact sets `K` and `L`, `γ +ᵥ K ∩ L` is nonempty for finitely many `γ`. -/
finite_disjoint_inter_image :
∀ {K L : Set T}, IsCompact K → IsCompact L → Set.Finite { γ : Γ | (γ +ᵥ ·) '' K ∩ L ≠ ∅ }
-#align properly_discontinuous_vadd ProperlyDiscontinuousVadd
+#align properly_discontinuous_vadd ProperlyDiscontinuousVAdd
-attribute [to_additive] ProperlyDiscontinuousSmul
+attribute [to_additive] ProperlyDiscontinuousSMul
variable {Γ : Type _} [Group Γ] {T : Type _} [TopologicalSpace T] [MulAction Γ T]
/-- A finite group action is always properly discontinuous. -/
@[to_additive "A finite group action is always properly discontinuous."]
-instance (priority := 100) Finite.to_properlyDiscontinuousSmul [Finite Γ] :
- ProperlyDiscontinuousSmul Γ T where finite_disjoint_inter_image _ _ := Set.toFinite _
-#align finite.to_properly_discontinuous_smul Finite.to_properlyDiscontinuousSmul
-#align finite.to_properly_discontinuous_vadd Finite.to_properlyDiscontinuousVadd
+instance (priority := 100) Finite.to_properlyDiscontinuousSMul [Finite Γ] :
+ ProperlyDiscontinuousSMul Γ T where finite_disjoint_inter_image _ _ := Set.toFinite _
+#align finite.to_properly_discontinuous_smul Finite.to_properlyDiscontinuousSMul
+#align finite.to_properly_discontinuous_vadd Finite.to_properlyDiscontinuousVAdd
-export ProperlyDiscontinuousSmul (finite_disjoint_inter_image)
-export ProperlyDiscontinuousVadd (finite_disjoint_inter_image)
+export ProperlyDiscontinuousSMul (finite_disjoint_inter_image)
+export ProperlyDiscontinuousVAdd (finite_disjoint_inter_image)
/-- The quotient map by a group action is open, i.e. the quotient by a group action is an open
quotient. -/
@[to_additive "The quotient map by a group action is open, i.e. the quotient by a group
action is an open quotient. "]
-theorem isOpenMap_quotient_mk'_mul [HasContinuousConstSmul Γ T] :
+theorem isOpenMap_quotient_mk'_mul [HasContinuousConstSMul Γ T] :
IsOpenMap (Quotient.mk' : T → Quotient (MulAction.orbitRel Γ T)) := fun U hU => by
rw [isOpen_coinduced, MulAction.quotient_preimage_image_eq_union_mul U]
exact isOpen_unionᵢ fun γ => isOpenMap_smul γ U hU
@@ -486,8 +486,8 @@ theorem isOpenMap_quotient_mk'_mul [HasContinuousConstSmul Γ T] :
/-- The quotient by a discontinuous group action of a locally compact t2 space is t2. -/
@[to_additive "The quotient by a discontinuous group action of a locally compact t2
space is t2."]
-instance (priority := 100) t2Space_of_properlyDiscontinuousSmul_of_t2Space [T2Space T]
- [LocallyCompactSpace T] [HasContinuousConstSmul Γ T] [ProperlyDiscontinuousSmul Γ T] :
+instance (priority := 100) t2Space_of_properlyDiscontinuousSMul_of_t2Space [T2Space T]
+ [LocallyCompactSpace T] [HasContinuousConstSMul Γ T] [ProperlyDiscontinuousSMul Γ T] :
T2Space (Quotient (MulAction.orbitRel Γ T)) := by
set Q := Quotient (MulAction.orbitRel Γ T)
rw [t2Space_iff_nhds]
@@ -517,24 +517,24 @@ instance (priority := 100) t2Space_of_properlyDiscontinuousSmul_of_t2Space [T2Sp
· rintro ⟨-, h'⟩
simp only [image_smul, Classical.not_not, mem_setOf_eq, Ne.def] at H
exact eq_empty_iff_forall_not_mem.mp H (γ • x) ⟨mem_image_of_mem _ x_in_K₀, h'⟩
-#align t2_space_of_properly_discontinuous_smul_of_t2_space t2Space_of_properlyDiscontinuousSmul_of_t2Space
-#align t2_space_of_properly_discontinuous_vadd_of_t2_space t2Space_of_properlyDiscontinuousVadd_of_t2Space
+#align t2_space_of_properly_discontinuous_smul_of_t2_space t2Space_of_properlyDiscontinuousSMul_of_t2Space
+#align t2_space_of_properly_discontinuous_vadd_of_t2_space t2Space_of_properlyDiscontinuousVAdd_of_t2Space
/-- The quotient of a second countable space by a group action is second countable. -/
@[to_additive "The quotient of a second countable space by an additive group action is second
countable."]
-theorem HasContinuousConstSmul.secondCountableTopology [SecondCountableTopology T]
- [HasContinuousConstSmul Γ T] : SecondCountableTopology (Quotient (MulAction.orbitRel Γ T)) :=
+theorem HasContinuousConstSMul.secondCountableTopology [SecondCountableTopology T]
+ [HasContinuousConstSMul Γ T] : SecondCountableTopology (Quotient (MulAction.orbitRel Γ T)) :=
TopologicalSpace.Quotient.secondCountableTopology isOpenMap_quotient_mk'_mul
-#align has_continuous_const_smul.second_countable_topology HasContinuousConstSmul.secondCountableTopology
-#align has_continuous_const_vadd.second_countable_topology HasContinuousConstVadd.secondCountableTopology
+#align has_continuous_const_smul.second_countable_topology HasContinuousConstSMul.secondCountableTopology
+#align has_continuous_const_vadd.second_countable_topology HasContinuousConstVAdd.secondCountableTopology
section nhds
section MulAction
variable {G₀ : Type _} [GroupWithZero G₀] [MulAction G₀ α] [TopologicalSpace α]
- [HasContinuousConstSmul G₀ α]
+ [HasContinuousConstSMul G₀ α]
-- porting note: generalize to a group action + `IsUnit`
/-- Scalar multiplication preserves neighborhoods. -/
@@ -557,7 +557,7 @@ end MulAction
section DistribMulAction
variable {G₀ : Type _} [GroupWithZero G₀] [AddMonoid α] [DistribMulAction G₀ α] [TopologicalSpace α]
- [HasContinuousConstSmul G₀ α]
+ [HasContinuousConstSMul G₀ α]
theorem set_smul_mem_nhds_zero_iff {s : Set α} {c : G₀} (hc : c ≠ 0) :
c • s ∈ 𝓝 (0 : α) ↔ s ∈ 𝓝 (0 : α) := by
The unported dependencies are