Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit ddbfecf

Browse files
committed
feat(topology/continuous_function): lemmas on infinite sums of continuous functions (#18424)
A lemma (in three variants) about evaluating infinite sums of continuous functions at a point. Split off from #18392.
1 parent ad0089a commit ddbfecf

File tree

1 file changed

+51
-37
lines changed

1 file changed

+51
-37
lines changed

src/topology/continuous_function/algebra.lean

Lines changed: 51 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import topology.continuous_function.ordered
88
import topology.algebra.uniform_group
99
import topology.uniform_space.compact_convergence
1010
import topology.algebra.star
11+
import topology.algebra.infinite_sum
1112
import algebra.algebra.pi
1213
import algebra.algebra.subalgebra.basic
1314
import tactic.field_simp
@@ -180,51 +181,43 @@ end subtype
180181

181182
namespace continuous_map
182183

184+
variables {α β : Type*} [topological_space α] [topological_space β]
185+
183186
@[to_additive]
184-
instance {α : Type*} {β : Type*} [topological_space α]
185-
[topological_space β] [semigroup β] [has_continuous_mul β] : semigroup C(α, β) :=
187+
instance [semigroup β] [has_continuous_mul β] : semigroup C(α, β) :=
186188
coe_injective.semigroup _ coe_mul
187189

188190
@[to_additive]
189-
instance {α : Type*} {β : Type*} [topological_space α]
190-
[topological_space β] [comm_semigroup β] [has_continuous_mul β] : comm_semigroup C(α, β) :=
191+
instance [comm_semigroup β] [has_continuous_mul β] : comm_semigroup C(α, β) :=
191192
coe_injective.comm_semigroup _ coe_mul
192193

193194
@[to_additive]
194-
instance {α : Type*} {β : Type*} [topological_space α]
195-
[topological_space β] [mul_one_class β] [has_continuous_mul β] : mul_one_class C(α, β) :=
195+
instance [mul_one_class β] [has_continuous_mul β] : mul_one_class C(α, β) :=
196196
coe_injective.mul_one_class _ coe_one coe_mul
197197

198-
instance {α : Type*} {β : Type*} [topological_space α]
199-
[topological_space β] [mul_zero_class β] [has_continuous_mul β] : mul_zero_class C(α, β) :=
198+
instance [mul_zero_class β] [has_continuous_mul β] : mul_zero_class C(α, β) :=
200199
coe_injective.mul_zero_class _ coe_zero coe_mul
201200

202-
instance {α : Type*} {β : Type*} [topological_space α] [topological_space β]
203-
[semigroup_with_zero β] [has_continuous_mul β] : semigroup_with_zero C(α, β) :=
201+
instance [semigroup_with_zero β] [has_continuous_mul β] : semigroup_with_zero C(α, β) :=
204202
coe_injective.semigroup_with_zero _ coe_zero coe_mul
205203

206204
@[to_additive]
207-
instance {α : Type*} {β : Type*} [topological_space α] [topological_space β]
208-
[monoid β] [has_continuous_mul β] : monoid C(α, β) :=
205+
instance [monoid β] [has_continuous_mul β] : monoid C(α, β) :=
209206
coe_injective.monoid _ coe_one coe_mul coe_pow
210207

211-
instance {α : Type*} {β : Type*} [topological_space α] [topological_space β]
212-
[monoid_with_zero β] [has_continuous_mul β] : monoid_with_zero C(α, β) :=
208+
instance [monoid_with_zero β] [has_continuous_mul β] : monoid_with_zero C(α, β) :=
213209
coe_injective.monoid_with_zero _ coe_zero coe_one coe_mul coe_pow
214210

215211
@[to_additive]
216-
instance {α : Type*} {β : Type*} [topological_space α]
217-
[topological_space β] [comm_monoid β] [has_continuous_mul β] : comm_monoid C(α, β) :=
212+
instance [comm_monoid β] [has_continuous_mul β] : comm_monoid C(α, β) :=
218213
coe_injective.comm_monoid _ coe_one coe_mul coe_pow
219214

220-
instance {α : Type*} {β : Type*} [topological_space α] [topological_space β]
221-
[comm_monoid_with_zero β] [has_continuous_mul β] : comm_monoid_with_zero C(α, β) :=
215+
instance [comm_monoid_with_zero β] [has_continuous_mul β] : comm_monoid_with_zero C(α, β) :=
222216
coe_injective.comm_monoid_with_zero _ coe_zero coe_one coe_mul coe_pow
223217

224218
@[to_additive]
225-
instance {α : Type*} {β : Type*} [topological_space α]
226-
[locally_compact_space α] [topological_space β]
227-
[has_mul β] [has_continuous_mul β] : has_continuous_mul C(α, β) :=
219+
instance [locally_compact_space α] [has_mul β] [has_continuous_mul β] :
220+
has_continuous_mul C(α, β) :=
228221
begin
229222
refine continuous_of_continuous_uncurry _ _,
230223
have h1 : continuous (λ x : (C(α, β) × C(α, β)) × α, x.fst.fst x.snd) :=
@@ -237,56 +230,53 @@ end⟩
237230
/-- Coercion to a function as an `monoid_hom`. Similar to `monoid_hom.coe_fn`. -/
238231
@[to_additive "Coercion to a function as an `add_monoid_hom`. Similar to `add_monoid_hom.coe_fn`.",
239232
simps]
240-
def coe_fn_monoid_hom {α : Type*} {β : Type*} [topological_space α] [topological_space β]
241-
[monoid β] [has_continuous_mul β] : C(α, β) →* (α → β) :=
233+
def coe_fn_monoid_hom [monoid β] [has_continuous_mul β] : C(α, β) →* (α → β) :=
242234
{ to_fun := coe_fn, map_one' := coe_one, map_mul' := coe_mul }
243235

236+
variables (α)
237+
244238
/-- Composition on the left by a (continuous) homomorphism of topological monoids, as a
245239
`monoid_hom`. Similar to `monoid_hom.comp_left`. -/
246240
@[to_additive "Composition on the left by a (continuous) homomorphism of topological `add_monoid`s,
247241
as an `add_monoid_hom`. Similar to `add_monoid_hom.comp_left`.", simps]
248-
protected def _root_.monoid_hom.comp_left_continuous (α : Type*) {β : Type*} {γ : Type*}
249-
[topological_space α] [topological_space β] [monoid β] [has_continuous_mul β]
242+
protected def _root_.monoid_hom.comp_left_continuous
243+
{γ : Type*} [monoid β] [has_continuous_mul β]
250244
[topological_space γ] [monoid γ] [has_continuous_mul γ] (g : β →* γ) (hg : continuous g) :
251245
C(α, β) →* C(α, γ) :=
252246
{ to_fun := λ f, (⟨g, hg⟩ : C(β, γ)).comp f,
253247
map_one' := ext $ λ x, g.map_one,
254248
map_mul' := λ f₁ f₂, ext $ λ x, g.map_mul _ _ }
255249

250+
variables {α}
251+
256252
/-- Composition on the right as a `monoid_hom`. Similar to `monoid_hom.comp_hom'`. -/
257253
@[to_additive "Composition on the right as an `add_monoid_hom`. Similar to
258254
`add_monoid_hom.comp_hom'`.", simps]
259-
def comp_monoid_hom' {α : Type*} {β : Type*} {γ : Type*}
260-
[topological_space α] [topological_space β] [topological_space γ]
255+
def comp_monoid_hom' {γ : Type*} [topological_space γ]
261256
[mul_one_class γ] [has_continuous_mul γ] (g : C(α, β)) : C(β, γ) →* C(α, γ) :=
262257
{ to_fun := λ f, f.comp g, map_one' := one_comp g, map_mul' := λ f₁ f₂, mul_comp f₁ f₂ g }
263258

264259
open_locale big_operators
265-
@[simp, to_additive] lemma coe_prod {α : Type*} {β : Type*} [comm_monoid β]
266-
[topological_space α] [topological_space β] [has_continuous_mul β]
260+
@[simp, to_additive] lemma coe_prod [comm_monoid β] [has_continuous_mul β]
267261
{ι : Type*} (s : finset ι) (f : ι → C(α, β)) :
268262
⇑(∏ i in s, f i) = (∏ i in s, (f i : α → β)) :=
269263
(coe_fn_monoid_hom : C(α, β) →* _).map_prod f s
270264

271265
@[to_additive]
272-
lemma prod_apply {α : Type*} {β : Type*} [comm_monoid β]
273-
[topological_space α] [topological_space β] [has_continuous_mul β]
266+
lemma prod_apply [comm_monoid β] [has_continuous_mul β]
274267
{ι : Type*} (s : finset ι) (f : ι → C(α, β)) (a : α) :
275268
(∏ i in s, f i) a = (∏ i in s, f i a) :=
276269
by simp
277270

278271
@[to_additive]
279-
instance {α : Type*} {β : Type*} [topological_space α] [topological_space β]
280-
[group β] [topological_group β] : group C(α, β) :=
272+
instance [group β] [topological_group β] : group C(α, β) :=
281273
coe_injective.group _ coe_one coe_mul coe_inv coe_div coe_pow coe_zpow
282274

283275
@[to_additive]
284-
instance {α : Type*} {β : Type*} [topological_space α]
285-
[topological_space β] [comm_group β] [topological_group β] : comm_group C(α, β) :=
276+
instance [comm_group β] [topological_group β] : comm_group C(α, β) :=
286277
coe_injective.comm_group _ coe_one coe_mul coe_inv coe_div coe_pow coe_zpow
287278

288-
@[to_additive] instance {α : Type*} {β : Type*} [topological_space α]
289-
[topological_space β] [comm_group β] [topological_group β] : topological_group C(α, β) :=
279+
@[to_additive] instance [comm_group β] [topological_group β] : topological_group C(α, β) :=
290280
{ continuous_mul := by
291281
{ letI : uniform_space β := topological_group.to_uniform_space β,
292282
have : uniform_group β := topological_comm_group_is_uniform,
@@ -305,6 +295,30 @@ coe_injective.comm_group _ coe_one coe_mul coe_inv coe_div coe_pow coe_zpow
305295
exactI λ K hK, uniform_continuous_inv.comp_tendsto_uniformly_on
306296
(tendsto_iff_forall_compact_tendsto_uniformly_on.mp filter.tendsto_id K hK), } }
307297

298+
-- TODO: rewrite the next three lemmas for products and deduce sum case via `to_additive`, once
299+
-- definition of `tprod` is in place
300+
301+
/-- If `α` is locally compact, and an infinite sum of functions in `C(α, β)`
302+
converges to `g` (for the compact-open topology), then the pointwise sum converges to `g x` for
303+
all `x ∈ α`. -/
304+
lemma has_sum_apply {γ : Type*} [locally_compact_space α] [add_comm_monoid β] [has_continuous_add β]
305+
{f : γ → C(α, β)} {g : C(α, β)} (hf : has_sum f g) (x : α) :
306+
has_sum (λ i : γ, f i x) (g x) :=
307+
begin
308+
let evₓ : add_monoid_hom C(α, β) β := (pi.eval_add_monoid_hom _ x).comp coe_fn_add_monoid_hom,
309+
exact hf.map evₓ (continuous_map.continuous_eval_const' x),
310+
end
311+
312+
lemma summable_apply [locally_compact_space α] [add_comm_monoid β] [has_continuous_add β]
313+
{γ : Type*} {f : γ → C(α, β)} (hf : summable f) (x : α) :
314+
summable (λ i : γ, f i x) :=
315+
(has_sum_apply hf.has_sum x).summable
316+
317+
lemma tsum_apply [locally_compact_space α] [t2_space β] [add_comm_monoid β] [has_continuous_add β]
318+
{γ : Type*} {f : γ → C(α, β)} (hf : summable f) (x : α) :
319+
(∑' (i:γ), f i x) = (∑' (i:γ), f i) x :=
320+
(has_sum_apply hf.has_sum x).tsum_eq
321+
308322
end continuous_map
309323

310324
end group_structure

0 commit comments

Comments
 (0)