@@ -12,18 +12,18 @@ import topology.algebra.const_mul_action
1212/-!
1313# Continuous monoid action
1414
15- In this file we define class `has_continuous_smul`. We say `has_continuous_smul M α ` if `M` acts on
16- `α ` and the map `(c, x) ↦ c • x` is continuous on `M × α `. We reuse this class for topological
15+ In this file we define class `has_continuous_smul`. We say `has_continuous_smul M X ` if `M` acts on
16+ `X ` and the map `(c, x) ↦ c • x` is continuous on `M × X `. We reuse this class for topological
1717(semi)modules, vector spaces and algebras.
1818
1919## Main definitions
2020
21- * `has_continuous_smul M α ` : typeclass saying that the map `(c, x) ↦ c • x` is continuous
22- on `M × α `;
23- * `homeomorph.smul_of_ne_zero`: if a group with zero `G₀` (e.g., a field) acts on `α ` and `c : G₀`
24- is a nonzero element of `G₀`, then scalar multiplication by `c` is a homeomorphism of `α `;
25- * `homeomorph.smul`: scalar multiplication by an element of a group `G` acting on `α `
26- is a homeomorphism of `α `.
21+ * `has_continuous_smul M X ` : typeclass saying that the map `(c, x) ↦ c • x` is continuous
22+ on `M × X `;
23+ * `homeomorph.smul_of_ne_zero`: if a group with zero `G₀` (e.g., a field) acts on `X ` and `c : G₀`
24+ is a nonzero element of `G₀`, then scalar multiplication by `c` is a homeomorphism of `X `;
25+ * `homeomorph.smul`: scalar multiplication by an element of a group `G` acting on `X `
26+ is a homeomorphism of `X `.
2727* `units.has_continuous_smul`: scalar multiplication by `Mˣ` is continuous when scalar
2828 multiplication by `M` is continuous. This allows `homeomorph.smul` to be used with on monoids
2929 with `G = Mˣ`.
@@ -37,49 +37,51 @@ or `filter.tendsto.smul` that provide dot-syntax access to `continuous_smul`.
3737open_locale topological_space pointwise
3838open filter
3939
40- /-- Class `has_continuous_smul M α ` says that the scalar multiplication `(•) : M → α → α `
40+ /-- Class `has_continuous_smul M X ` says that the scalar multiplication `(•) : M → X → X `
4141is continuous in both arguments. We use the same class for all kinds of multiplicative actions,
4242including (semi)modules and algebras. -/
43- class has_continuous_smul (M α : Type *) [has_scalar M α ]
44- [topological_space M] [topological_space α ] : Prop :=
45- (continuous_smul : continuous (λp : M × α , p.1 • p.2 ))
43+ class has_continuous_smul (M X : Type *) [has_scalar M X ]
44+ [topological_space M] [topological_space X ] : Prop :=
45+ (continuous_smul : continuous (λp : M × X , p.1 • p.2 ))
4646
4747export has_continuous_smul (continuous_smul)
4848
49- /-- Class `has_continuous_vadd M α ` says that the additive action `(+ᵥ) : M → α → α `
49+ /-- Class `has_continuous_vadd M X ` says that the additive action `(+ᵥ) : M → X → X `
5050is continuous in both arguments. We use the same class for all kinds of additive actions,
5151including (semi)modules and algebras. -/
52- class has_continuous_vadd (M α : Type *) [has_vadd M α ]
53- [topological_space M] [topological_space α ] : Prop :=
54- (continuous_vadd : continuous (λp : M × α , p.1 +ᵥ p.2 ))
52+ class has_continuous_vadd (M X : Type *) [has_vadd M X ]
53+ [topological_space M] [topological_space X ] : Prop :=
54+ (continuous_vadd : continuous (λp : M × X , p.1 +ᵥ p.2 ))
5555
5656export has_continuous_vadd (continuous_vadd)
5757
5858attribute [to_additive] has_continuous_smul
5959
60- variables {M α β : Type *}
61- variables [topological_space M] [topological_space α]
60+ section main
61+
62+ variables {M X Y α : Type *} [topological_space M] [topological_space X] [topological_space Y]
6263
6364section has_scalar
64- variables [has_scalar M α] [has_continuous_smul M α]
65+
66+ variables [has_scalar M X] [has_continuous_smul M X]
6567
6668@[priority 100 , to_additive] instance has_continuous_smul.has_continuous_const_smul :
67- has_continuous_const_smul M α :=
69+ has_continuous_const_smul M X :=
6870{ continuous_const_smul := λ _, continuous_smul.comp (continuous_const.prod_mk continuous_id) }
6971
7072@[to_additive]
71- lemma filter.tendsto.smul {f : β → M} {g : β → α } {l : filter β } {c : M} {a : α }
73+ lemma filter.tendsto.smul {f : α → M} {g : α → X } {l : filter α } {c : M} {a : X }
7274 (hf : tendsto f l (𝓝 c)) (hg : tendsto g l (𝓝 a)) :
7375 tendsto (λ x, f x • g x) l (𝓝 $ c • a) :=
7476(continuous_smul.tendsto _).comp (hf.prod_mk_nhds hg)
7577
7678@[to_additive]
77- lemma filter.tendsto.smul_const {f : β → M} {l : filter β } {c : M}
78- (hf : tendsto f l (𝓝 c)) (a : α ) :
79+ lemma filter.tendsto.smul_const {f : α → M} {l : filter α } {c : M}
80+ (hf : tendsto f l (𝓝 c)) (a : X ) :
7981 tendsto (λ x, (f x) • a) l (𝓝 (c • a)) :=
8082hf.smul tendsto_const_nhds
8183
82- variables [topological_space β] {f : β → M} {g : β → α } {b : β } {s : set β }
84+ variables {f : Y → M} {g : Y → X } {b : Y } {s : set Y }
8385
8486@[to_additive]
8587lemma continuous_within_at.smul (hf : continuous_within_at f s b)
@@ -103,20 +105,21 @@ lemma continuous.smul (hf : continuous f) (hg : continuous g) :
103105continuous_smul.comp (hf.prod_mk hg)
104106
105107/-- If a scalar is central, then its right action is continuous when its left action is. -/
106- instance has_continuous_smul.op [has_scalar Mᵐᵒᵖ α ] [is_central_scalar M α ] :
107- has_continuous_smul Mᵐᵒᵖ α :=
108- ⟨ suffices continuous (λ p : M × α , mul_opposite.op p.fst • p.snd),
108+ instance has_continuous_smul.op [has_scalar Mᵐᵒᵖ X ] [is_central_scalar M X ] :
109+ has_continuous_smul Mᵐᵒᵖ X :=
110+ ⟨ suffices continuous (λ p : M × X , mul_opposite.op p.fst • p.snd),
109111 from this.comp (mul_opposite.continuous_unop.prod_map continuous_id),
110- by simpa only [op_smul_eq_smul] using (continuous_smul : continuous (λ p : M × α , _)) ⟩
112+ by simpa only [op_smul_eq_smul] using (continuous_smul : continuous (λ p : M × X , _)) ⟩
111113
112114end has_scalar
113115
114116section monoid
115- variables [monoid M] [mul_action M α] [has_continuous_smul M α]
116117
117- @[to_additive] instance units.has_continuous_smul : has_continuous_smul Mˣ α :=
118+ variables [monoid M] [mul_action M X] [has_continuous_smul M X]
119+
120+ @[to_additive] instance units.has_continuous_smul : has_continuous_smul Mˣ X :=
118121{ continuous_smul :=
119- show continuous ((λ p : M × α , p.fst • p.snd) ∘ (λ p : Mˣ × α , (p.1 , p.2 ))),
122+ show continuous ((λ p : M × X , p.fst • p.snd) ∘ (λ p : Mˣ × X , (p.1 , p.2 ))),
120123 from continuous_smul.comp ((units.continuous_coe.comp continuous_fst).prod_mk continuous_snd) }
121124
122125end monoid
@@ -128,9 +131,9 @@ instance has_continuous_mul.has_continuous_smul {M : Type*} [monoid M]
128131⟨continuous_mul⟩
129132
130133@[to_additive]
131- instance [topological_space β] [ has_scalar M α ] [has_scalar M β ] [has_continuous_smul M α ]
132- [has_continuous_smul M β ] :
133- has_continuous_smul M (α × β ) :=
134+ instance [has_scalar M X ] [has_scalar M Y ] [has_continuous_smul M X ]
135+ [has_continuous_smul M Y ] :
136+ has_continuous_smul M (X × Y ) :=
134137⟨(continuous_fst.smul (continuous_fst.comp continuous_snd)).prod_mk
135138 (continuous_fst.smul (continuous_snd.comp continuous_snd))⟩
136139
@@ -142,41 +145,30 @@ instance {ι : Type*} {γ : ι → Type*}
142145 (continuous_fst.smul continuous_snd).comp $
143146 continuous_fst.prod_mk ((continuous_apply i).comp continuous_snd)⟩
144147
145- section lattice_ops
148+ end main
146149
147- variables {ι : Sort *} [has_scalar M β]
148- {ts : set (topological_space β)} (h : Π t ∈ ts, @has_continuous_smul M β _ _ t)
149- {ts' : ι → topological_space β} (h' : Π i, @has_continuous_smul M β _ _ (ts' i))
150- {t₁ t₂ : topological_space β} [h₁ : @has_continuous_smul M β _ _ t₁]
151- [h₂ : @has_continuous_smul M β _ _ t₂]
150+ section lattice_ops
152151
153- include h
152+ variables {ι : Sort *} {M X : Type *} [topological_space M] [has_scalar M X]
154153
155- @[to_additive] lemma has_continuous_smul_Inf :
156- @has_continuous_smul M β _ _ (Inf ts) :=
154+ @[to_additive] lemma has_continuous_smul_Inf {ts : set (topological_space X)}
155+ (h : Π t ∈ ts, @has_continuous_smul M X _ _ t) :
156+ @has_continuous_smul M X _ _ (Inf ts) :=
157157{ continuous_smul :=
158158 begin
159159 rw ← @Inf_singleton _ _ ‹topological_space M›,
160160 exact continuous_Inf_rng (λ t ht, continuous_Inf_dom₂ (eq.refl _) ht
161161 (@has_continuous_smul.continuous_smul _ _ _ _ t (h t ht)))
162162 end }
163163
164- omit h
165-
166- include h'
167-
168- @[to_additive] lemma has_continuous_smul_infi :
169- @has_continuous_smul M β _ _ (⨅ i, ts' i) :=
170- by {rw ← Inf_range, exact has_continuous_smul_Inf (set.forall_range_iff.mpr h')}
171-
172- omit h'
173-
174- include h₁ h₂
175-
176- @[to_additive] lemma has_continuous_smul_inf :
177- @has_continuous_smul M β _ _ (t₁ ⊓ t₂) :=
178- by {rw inf_eq_infi, refine has_continuous_smul_infi (λ b, _), cases b; assumption}
164+ @[to_additive] lemma has_continuous_smul_infi {ts' : ι → topological_space X}
165+ (h : Π i, @has_continuous_smul M X _ _ (ts' i)) :
166+ @has_continuous_smul M X _ _ (⨅ i, ts' i) :=
167+ has_continuous_smul_Inf $ set.forall_range_iff.mpr h
179168
180- omit h₁ h₂
169+ @[to_additive] lemma has_continuous_smul_inf {t₁ t₂ : topological_space X}
170+ [@has_continuous_smul M X _ _ t₁] [@has_continuous_smul M X _ _ t₂] :
171+ @has_continuous_smul M X _ _ (t₁ ⊓ t₂) :=
172+ by { rw inf_eq_infi, refine has_continuous_smul_infi (λ b, _), cases b; assumption }
181173
182174end lattice_ops
0 commit comments