|
| 1 | +/- |
| 2 | +Copyright (c) 2025 Chris Birkbeck. All rights reserved. |
| 3 | +Released under Apache 2.0 license as described in the file LICENSE. |
| 4 | +Authors: Chris Birkbeck |
| 5 | +-/ |
| 6 | +import Mathlib.Analysis.NormedSpace.FunctionSeries |
| 7 | +import Mathlib.Analysis.SpecialFunctions.Log.Summable |
| 8 | +import Mathlib.Topology.Algebra.InfiniteSum.UniformOn |
| 9 | +import Mathlib.Topology.Algebra.IsUniformGroup.Order |
| 10 | + |
| 11 | +/-! |
| 12 | +# Uniform convergence of products of functions |
| 13 | +
|
| 14 | +We gather some results about the uniform convergence of infinite products, in particular those of |
| 15 | +the form `∏' i, (1 + f i x)` for a sequence `f` of complex valued functions. |
| 16 | +-/ |
| 17 | + |
| 18 | +open Filter Function Complex Finset Topology |
| 19 | + |
| 20 | +variable {α ι : Type*} {𝔖 : Set (Set α)} {K : Set α} {u : ι → ℝ} |
| 21 | + |
| 22 | +section Complex |
| 23 | + |
| 24 | +variable {f : ι → α → ℂ} |
| 25 | + |
| 26 | +lemma TendstoUniformlyOn.comp_cexp {p : Filter ι} {g : α → ℂ} |
| 27 | + (hf : TendstoUniformlyOn f g p K) (hg : BddAbove <| (fun x ↦ (g x).re) '' K) : |
| 28 | + TendstoUniformlyOn (cexp ∘ f ·) (cexp ∘ g) p K := by |
| 29 | + obtain ⟨v, hv⟩ : ∃ v, ∀ x ∈ K, (g x).re ≤ v := hg.imp <| by simp [mem_upperBounds] |
| 30 | + have : ∀ᶠ i in p, ∀ x ∈ K, (f i x).re ≤ v + 1 := hf.re.eventually_forall_le (lt_add_one v) hv |
| 31 | + refine (UniformContinuousOn.cexp _).comp_tendstoUniformlyOn_eventually (by simpa) ?_ hf |
| 32 | + exact fun x hx ↦ (hv x hx).trans (lt_add_one v).le |
| 33 | + |
| 34 | +lemma Summable.hasSumUniformlyOn_log_one_add (hu : Summable u) |
| 35 | + (h : ∀ᶠ i in cofinite, ∀ x ∈ K, ‖f i x‖ ≤ u i) : |
| 36 | + HasSumUniformlyOn (fun i x ↦ log (1 + f i x)) (fun x ↦ ∑' i, log (1 + f i x)) {K} := by |
| 37 | + simp only [hasSumUniformlyOn_iff_tendstoUniformlyOn, Set.mem_singleton_iff, forall_eq] |
| 38 | + apply tendstoUniformlyOn_tsum_of_cofinite_eventually <| hu.mul_left (3 / 2) |
| 39 | + filter_upwards [h, hu.tendsto_cofinite_zero.eventually_le_const one_half_pos] with i hi hi' x hx |
| 40 | + using (norm_log_one_add_half_le_self <| (hi x hx).trans hi').trans (by simpa using hi x hx) |
| 41 | + |
| 42 | +lemma Summable.tendstoUniformlyOn_tsum_nat_log_one_add {f : ℕ → α → ℂ} {u : ℕ → ℝ} |
| 43 | + (hu : Summable u) (h : ∀ᶠ n in atTop, ∀ x ∈ K, ‖f n x‖ ≤ u n) : |
| 44 | + TendstoUniformlyOn (fun n x ↦ ∑ m ∈ Finset.range n, log (1 + f m x)) |
| 45 | + (fun x ↦ ∑' n, log (1 + f n x)) atTop K := by |
| 46 | + rw [← Nat.cofinite_eq_atTop] at h |
| 47 | + exact (hu.hasSumUniformlyOn_log_one_add h).tendstoUniformlyOn_finset_range rfl |
| 48 | + |
| 49 | +/-- If `x ↦ ∑' i, log (f i x)` is uniformly convergent on `𝔖`, its sum has bounded-above real part |
| 50 | +on each set in `𝔖`, and the functions `f i x` have no zeroes, then `∏' i, f i x` is uniformly |
| 51 | +convergent on `𝔖`. |
| 52 | +
|
| 53 | +Note that the non-vanishing assumption is really needed here: if this assumption is dropped then |
| 54 | +one obtains a counterexample if `ι = α = ℕ` and `f i x` is `0` if `i = x` and `1` otherwise. -/ |
| 55 | +lemma hasProdUniformlyOn_of_clog (hf : SummableUniformlyOn (fun i x ↦ log (f i x)) 𝔖) |
| 56 | + (hfn : ∀ K ∈ 𝔖, ∀ x ∈ K, ∀ i, f i x ≠ 0) |
| 57 | + (hg : ∀ K ∈ 𝔖, BddAbove <| (fun x ↦ (∑' i, log (f i x)).re) '' K) : |
| 58 | + HasProdUniformlyOn f (fun x ↦ ∏' i, f i x) 𝔖 := by |
| 59 | + simp only [hasProdUniformlyOn_iff_tendstoUniformlyOn] |
| 60 | + obtain ⟨r, hr⟩ := hf.exists |
| 61 | + intro K hK |
| 62 | + suffices H : TendstoUniformlyOn (fun s x ↦ ∏ i ∈ s, f i x) (cexp ∘ r) atTop K by |
| 63 | + refine H.congr_right ((hr.tsum_eqOn hK).comp_left.symm.trans ?_) |
| 64 | + exact fun x hx ↦ (cexp_tsum_eq_tprod (hfn K hK x hx) (hf.summable hK hx)) |
| 65 | + have h1 := hr.tsum_eqOn hK |
| 66 | + simp only [hasSumUniformlyOn_iff_tendstoUniformlyOn] at hr |
| 67 | + refine ((hr K hK).comp_cexp ?_).congr ?_ |
| 68 | + · simp +contextual [← h1 _] |
| 69 | + exact hg K hK |
| 70 | + · filter_upwards with s i hi using by simp [exp_sum, fun y ↦ exp_log (hfn K hK i hi y)] |
| 71 | + |
| 72 | +lemma multipliableUniformlyOn_of_clog (hf : SummableUniformlyOn (fun i x ↦ log (f i x)) 𝔖) |
| 73 | + (hfn : ∀ K ∈ 𝔖, ∀ x ∈ K, ∀ i, f i x ≠ 0) |
| 74 | + (hg : ∀ K ∈ 𝔖, BddAbove <| (fun x ↦ (∑' i, log (f i x)).re) '' K) : |
| 75 | + MultipliableUniformlyOn f 𝔖 := |
| 76 | + ⟨_, hasProdUniformlyOn_of_clog hf hfn hg⟩ |
| 77 | + |
| 78 | +end Complex |
| 79 | + |
| 80 | +namespace Summable |
| 81 | + |
| 82 | +variable {R : Type*} [NormedCommRing R] [NormOneClass R] [CompleteSpace R] [TopologicalSpace α] |
| 83 | + {f : ι → α → R} |
| 84 | + |
| 85 | +/-- If a sequence of continuous functions `f i x` on an open compact `K` have norms eventually |
| 86 | +bounded by a summable function, then `∏' i, (1 + f i x)` is uniformly convergent on `K`. -/ |
| 87 | +lemma hasProdUniformlyOn_one_add (hK : IsCompact K) (hu : Summable u) |
| 88 | + (h : ∀ᶠ i in cofinite, ∀ x ∈ K, ‖f i x‖ ≤ u i) (hcts : ∀ i, ContinuousOn (f i) K) : |
| 89 | + HasProdUniformlyOn (fun i x ↦ 1 + f i x) (fun x ↦ ∏' i, (1 + f i x)) {K} := by |
| 90 | + simp only [hasProdUniformlyOn_iff_tendstoUniformlyOn, Set.mem_singleton_iff, |
| 91 | + tendstoUniformlyOn_iff_tendstoUniformly_comp_coe, forall_eq] |
| 92 | + by_cases hKe : K = ∅ |
| 93 | + · simp [TendstoUniformly, hKe] |
| 94 | + · haveI hCK : CompactSpace K := isCompact_iff_compactSpace.mp hK |
| 95 | + haveI hne : Nonempty K := by rwa [Set.nonempty_coe_sort, Set.nonempty_iff_ne_empty] |
| 96 | + let f' i : C(K, R) := ⟨_, continuousOn_iff_continuous_restrict.mp (hcts i)⟩ |
| 97 | + have hf'_bd : ∀ᶠ i in cofinite, ‖f' i‖ ≤ u i := by |
| 98 | + simp only [ContinuousMap.norm_le_of_nonempty] |
| 99 | + filter_upwards [h] with i hi using fun x ↦ hi x x.2 |
| 100 | + have hM : Multipliable fun i ↦ 1 + f' i := by |
| 101 | + refine multipliable_one_add_of_summable (hu.of_norm_bounded_eventually _ ?_) |
| 102 | + simpa using hf'_bd |
| 103 | + convert ContinuousMap.tendsto_iff_tendstoUniformly.mp hM.hasProd |
| 104 | + · simp [f'] |
| 105 | + · exact funext fun k ↦ ContinuousMap.tprod_apply hM k |
| 106 | + |
| 107 | +lemma multipliableUniformlyOn_one_add (hK : IsCompact K) (hu : Summable u) |
| 108 | + (h : ∀ᶠ i in cofinite, ∀ x ∈ K, ‖f i x‖ ≤ u i) (hcts : ∀ i, ContinuousOn (f i) K) : |
| 109 | + MultipliableUniformlyOn (fun i x ↦ 1 + f i x) {K} := |
| 110 | + ⟨_, hasProdUniformlyOn_one_add hK hu h hcts⟩ |
| 111 | + |
| 112 | +/-- This is a version of `hasProdUniformlyOn_one_add` for sequences indexed by `ℕ`. -/ |
| 113 | +lemma hasProdUniformlyOn_nat_one_add {f : ℕ → α → R} (hK : IsCompact K) {u : ℕ → ℝ} |
| 114 | + (hu : Summable u) (h : ∀ᶠ n in atTop, ∀ x ∈ K, ‖f n x‖ ≤ u n) |
| 115 | + (hcts : ∀ n, ContinuousOn (f n) K) : |
| 116 | + HasProdUniformlyOn (fun n x ↦ 1 + f n x) (fun x ↦ ∏' i, (1 + f i x)) {K} := |
| 117 | + hasProdUniformlyOn_one_add hK hu (Nat.cofinite_eq_atTop ▸ h) hcts |
| 118 | + |
| 119 | +lemma multipliableUniformlyOn_nat_one_add {f : ℕ → α → R} (hK : IsCompact K) |
| 120 | + {u : ℕ → ℝ} (hu : Summable u) (h : ∀ᶠ n in atTop, ∀ x ∈ K, ‖f n x‖ ≤ u n) |
| 121 | + (hcts : ∀ n, ContinuousOn (f n) K) : |
| 122 | + MultipliableUniformlyOn (fun n x ↦ 1 + f n x) {K} := |
| 123 | + ⟨_, hasProdUniformlyOn_nat_one_add hK hu h hcts⟩ |
| 124 | + |
| 125 | +section LocallyCompactSpace |
| 126 | + |
| 127 | +variable [LocallyCompactSpace α] |
| 128 | + |
| 129 | +/-- If a sequence of continuous functions `f i x` on an open subset `K` have norms eventually |
| 130 | +bounded by a summable function, then `∏' i, (1 + f i x)` is locally uniformly convergent on `K`. -/ |
| 131 | +lemma hasProdLocallyUniformlyOn_one_add (hK : IsOpen K) (hu : Summable u) |
| 132 | + (h : ∀ᶠ i in cofinite, ∀ x ∈ K, ‖f i x‖ ≤ u i) (hcts : ∀ i, ContinuousOn (f i) K) : |
| 133 | + HasProdLocallyUniformlyOn (fun i x ↦ 1 + f i x) (fun x ↦ ∏' i, (1 + f i x)) K := by |
| 134 | + apply hasProdLocallyUniformlyOn_of_forall_compact hK |
| 135 | + refine fun S hS hC ↦ hasProdUniformlyOn_one_add hC hu ?_ fun i ↦ (hcts i).mono hS |
| 136 | + filter_upwards [h] with i hi a ha using hi a (hS ha) |
| 137 | + |
| 138 | +lemma multipliableLocallyUniformlyOn_one_add (hK : IsOpen K) (hu : Summable u) |
| 139 | + (h : ∀ᶠ i in cofinite, ∀ x ∈ K, ‖f i x‖ ≤ u i) (hcts : ∀ i, ContinuousOn (f i) K) : |
| 140 | + MultipliableLocallyUniformlyOn (fun i x ↦ 1 + f i x) K := |
| 141 | + ⟨_, hasProdLocallyUniformlyOn_one_add hK hu h hcts⟩ |
| 142 | + |
| 143 | +/-- This is a version of `hasProdLocallyUniformlyOn_one_add` for sequences indexed by `ℕ`. -/ |
| 144 | +lemma hasProdLocallyUniformlyOn_nat_one_add {f : ℕ → α → R} (hK : IsOpen K) {u : ℕ → ℝ} |
| 145 | + (hu : Summable u) (h : ∀ᶠ n in atTop, ∀ x ∈ K, ‖f n x‖ ≤ u n) |
| 146 | + (hcts : ∀ n, ContinuousOn (f n) K) : |
| 147 | + HasProdLocallyUniformlyOn (fun n x ↦ 1 + f n x) (fun x ↦ ∏' i, (1 + f i x)) K := |
| 148 | + hasProdLocallyUniformlyOn_one_add hK hu (Nat.cofinite_eq_atTop ▸ h) hcts |
| 149 | + |
| 150 | +lemma multipliableLocallyUniformlyOn_nat_one_add {f : ℕ → α → R} (hK : IsOpen K) {u : ℕ → ℝ} |
| 151 | + (hu : Summable u) (h : ∀ᶠ n in atTop, ∀ x ∈ K, ‖f n x‖ ≤ u n) |
| 152 | + (hcts : ∀ n, ContinuousOn (f n) K) : |
| 153 | + MultipliableLocallyUniformlyOn (fun n x ↦ 1 + f n x) K := |
| 154 | + ⟨_, hasProdLocallyUniformlyOn_nat_one_add hK hu h hcts⟩ |
| 155 | + |
| 156 | +end LocallyCompactSpace |
| 157 | + |
| 158 | +end Summable |
0 commit comments