@@ -3,20 +3,18 @@ Copyright (c) 2017 Johannes Hölzl. All rights reserved.
33Released under Apache 2.0 license as described in the file LICENSE.
44Authors: Johannes Hölzl, Yury Kudryashov
55-/
6- import analysis.complex.basic
7- import analysis.normed_space.finite_dimension
6+ import analysis.normed.group.basic
87import measure_theory.function.ae_measurable_sequence
98import measure_theory.group.arithmetic
109import measure_theory.lattice
1110import measure_theory.measure.open_pos
1211import topology.algebra.order.liminf_limsup
1312import topology.continuous_function.basic
14- import topology.instances.add_circle
1513import topology.instances.ereal
14+ import topology.metric_space.hausdorff_distance
1615import topology.G_delta
1716import topology.order.lattice
1817import topology.semicontinuous
19- import topology.metric_space.metrizable
2018
2119/-!
2220# Borel (measurable) space
@@ -1327,11 +1325,6 @@ instance nat.borel_space : borel_space ℕ := ⟨borel_eq_top_of_discrete.symm
13271325instance int.borel_space : borel_space ℤ := ⟨borel_eq_top_of_discrete.symm⟩
13281326instance rat.borel_space : borel_space ℚ := ⟨borel_eq_top_of_countable.symm⟩
13291327
1330- @[priority 900 ]
1331- instance is_R_or_C.measurable_space {𝕜 : Type *} [is_R_or_C 𝕜] : measurable_space 𝕜 := borel 𝕜
1332- @[priority 900 ]
1333- instance is_R_or_C.borel_space {𝕜 : Type *} [is_R_or_C 𝕜] : borel_space 𝕜 := ⟨rfl⟩
1334-
13351328/- Instances on `real` and `complex` are special cases of `is_R_or_C` but without these instances,
13361329Lean fails to prove `borel_space (ι → ℝ)`, so we leave them here. -/
13371330
@@ -1347,18 +1340,6 @@ instance ennreal.borel_space : borel_space ℝ≥0∞ := ⟨rfl⟩
13471340instance ereal.measurable_space : measurable_space ereal := borel ereal
13481341instance ereal.borel_space : borel_space ereal := ⟨rfl⟩
13491342
1350- instance complex.measurable_space : measurable_space ℂ := borel ℂ
1351- instance complex.borel_space : borel_space ℂ := ⟨rfl⟩
1352-
1353- instance add_circle.measurable_space {a : ℝ} : measurable_space (add_circle a) :=
1354- borel (add_circle a)
1355-
1356- instance add_circle.borel_space {a : ℝ} : borel_space (add_circle a) := ⟨rfl⟩
1357-
1358- @[measurability] protected lemma add_circle.measurable_mk' {a : ℝ} :
1359- measurable (coe : ℝ → add_circle a) :=
1360- continuous.measurable $ add_circle.continuous_mk' a
1361-
13621343/-- One can cut out `ℝ≥0∞` into the sets `{0}`, `Ico (t^n) (t^(n+1))` for `n : ℤ` and `{∞}`. This
13631344gives a way to compute the measure of a set in terms of sets on which a given function `f` does not
13641345fluctuate by more than `t`. -/
@@ -1899,237 +1880,3 @@ lemma ae_measurable.ennnorm {f : β → α} {μ : measure β} (hf : ae_measurabl
18991880measurable_ennnorm.comp_ae_measurable hf
19001881
19011882end normed_add_comm_group
1902-
1903- section limits
1904-
1905- variables [topological_space β] [pseudo_metrizable_space β] [measurable_space β] [borel_space β]
1906-
1907- open metric
1908-
1909- /-- A limit (over a general filter) of measurable `ℝ≥0∞` valued functions is measurable. -/
1910- lemma measurable_of_tendsto_ennreal' {ι} {f : ι → α → ℝ≥0 ∞} {g : α → ℝ≥0 ∞} (u : filter ι)
1911- [ne_bot u] [is_countably_generated u] (hf : ∀ i, measurable (f i)) (lim : tendsto f u (𝓝 g)) :
1912- measurable g :=
1913- begin
1914- rcases u.exists_seq_tendsto with ⟨x, hx⟩,
1915- rw [tendsto_pi_nhds] at lim,
1916- have : (λ y, liminf (λ n, (f (x n) y : ℝ≥0 ∞)) at_top) = g :=
1917- by { ext1 y, exact ((lim y).comp hx).liminf_eq, },
1918- rw ← this ,
1919- show measurable (λ y, liminf (λ n, (f (x n) y : ℝ≥0 ∞)) at_top),
1920- exact measurable_liminf (λ n, hf (x n)),
1921- end
1922-
1923- /-- A sequential limit of measurable `ℝ≥0∞` valued functions is measurable. -/
1924- lemma measurable_of_tendsto_ennreal {f : ℕ → α → ℝ≥0 ∞} {g : α → ℝ≥0 ∞}
1925- (hf : ∀ i, measurable (f i)) (lim : tendsto f at_top (𝓝 g)) : measurable g :=
1926- measurable_of_tendsto_ennreal' at_top hf lim
1927-
1928- /-- A limit (over a general filter) of measurable `ℝ≥0` valued functions is measurable. -/
1929- lemma measurable_of_tendsto_nnreal' {ι} {f : ι → α → ℝ≥0 } {g : α → ℝ≥0 } (u : filter ι)
1930- [ne_bot u] [is_countably_generated u] (hf : ∀ i, measurable (f i)) (lim : tendsto f u (𝓝 g)) :
1931- measurable g :=
1932- begin
1933- simp_rw [← measurable_coe_nnreal_ennreal_iff] at hf ⊢,
1934- refine measurable_of_tendsto_ennreal' u hf _,
1935- rw tendsto_pi_nhds at lim ⊢,
1936- exact λ x, (ennreal.continuous_coe.tendsto (g x)).comp (lim x),
1937- end
1938-
1939- /-- A sequential limit of measurable `ℝ≥0` valued functions is measurable. -/
1940- lemma measurable_of_tendsto_nnreal {f : ℕ → α → ℝ≥0 } {g : α → ℝ≥0 }
1941- (hf : ∀ i, measurable (f i)) (lim : tendsto f at_top (𝓝 g)) : measurable g :=
1942- measurable_of_tendsto_nnreal' at_top hf lim
1943-
1944- /-- A limit (over a general filter) of measurable functions valued in a (pseudo) metrizable space is
1945- measurable. -/
1946- lemma measurable_of_tendsto_metrizable' {ι} {f : ι → α → β} {g : α → β}
1947- (u : filter ι) [ne_bot u] [is_countably_generated u]
1948- (hf : ∀ i, measurable (f i)) (lim : tendsto f u (𝓝 g)) :
1949- measurable g :=
1950- begin
1951- letI : pseudo_metric_space β := pseudo_metrizable_space_pseudo_metric β,
1952- apply measurable_of_is_closed', intros s h1s h2s h3s,
1953- have : measurable (λ x, inf_nndist (g x) s),
1954- { suffices : tendsto (λ i x, inf_nndist (f i x) s) u (𝓝 (λ x, inf_nndist (g x) s)),
1955- from measurable_of_tendsto_nnreal' u (λ i, (hf i).inf_nndist) this ,
1956- rw [tendsto_pi_nhds] at lim ⊢, intro x,
1957- exact ((continuous_inf_nndist_pt s).tendsto (g x)).comp (lim x) },
1958- have h4s : g ⁻¹' s = (λ x, inf_nndist (g x) s) ⁻¹' {0 },
1959- { ext x, simp [h1s, ← h1s.mem_iff_inf_dist_zero h2s, ← nnreal.coe_eq_zero] },
1960- rw [h4s], exact this (measurable_set_singleton 0 ),
1961- end
1962-
1963- /-- A sequential limit of measurable functions valued in a (pseudo) metrizable space is
1964- measurable. -/
1965- lemma measurable_of_tendsto_metrizable {f : ℕ → α → β} {g : α → β}
1966- (hf : ∀ i, measurable (f i)) (lim : tendsto f at_top (𝓝 g)) :
1967- measurable g :=
1968- measurable_of_tendsto_metrizable' at_top hf lim
1969-
1970- lemma ae_measurable_of_tendsto_metrizable_ae {ι}
1971- {μ : measure α} {f : ι → α → β} {g : α → β}
1972- (u : filter ι) [hu : ne_bot u] [is_countably_generated u]
1973- (hf : ∀ n, ae_measurable (f n) μ) (h_tendsto : ∀ᵐ x ∂μ, tendsto (λ n, f n x) u (𝓝 (g x))) :
1974- ae_measurable g μ :=
1975- begin
1976- rcases u.exists_seq_tendsto with ⟨v, hv⟩,
1977- have h'f : ∀ n, ae_measurable (f (v n)) μ := λ n, hf (v n),
1978- set p : α → (ℕ → β) → Prop := λ x f', tendsto (λ n, f' n) at_top (𝓝 (g x)),
1979- have hp : ∀ᵐ x ∂μ, p x (λ n, f (v n) x),
1980- by filter_upwards [h_tendsto] with x hx using hx.comp hv,
1981- set ae_seq_lim := λ x, ite (x ∈ ae_seq_set h'f p) (g x) (⟨f (v 0 ) x⟩ : nonempty β).some with hs,
1982- refine ⟨ae_seq_lim, measurable_of_tendsto_metrizable' at_top (ae_seq.measurable h'f p)
1983- (tendsto_pi_nhds.mpr (λ x, _)), _⟩,
1984- { simp_rw [ae_seq, ae_seq_lim],
1985- split_ifs with hx,
1986- { simp_rw ae_seq.mk_eq_fun_of_mem_ae_seq_set h'f hx,
1987- exact @ae_seq.fun_prop_of_mem_ae_seq_set _ α β _ _ _ _ _ h'f x hx, },
1988- { exact tendsto_const_nhds } },
1989- { exact (ite_ae_eq_of_measure_compl_zero g (λ x, (⟨f (v 0 ) x⟩ : nonempty β).some)
1990- (ae_seq_set h'f p) (ae_seq.measure_compl_ae_seq_set_eq_zero h'f hp)).symm },
1991- end
1992-
1993- lemma ae_measurable_of_tendsto_metrizable_ae' {μ : measure α} {f : ℕ → α → β} {g : α → β}
1994- (hf : ∀ n, ae_measurable (f n) μ)
1995- (h_ae_tendsto : ∀ᵐ x ∂μ, tendsto (λ n, f n x) at_top (𝓝 (g x))) :
1996- ae_measurable g μ :=
1997- ae_measurable_of_tendsto_metrizable_ae at_top hf h_ae_tendsto
1998-
1999- lemma ae_measurable_of_unif_approx {β} [measurable_space β] [pseudo_metric_space β] [borel_space β]
2000- {μ : measure α} {g : α → β}
2001- (hf : ∀ ε > (0 : ℝ), ∃ (f : α → β), ae_measurable f μ ∧ ∀ᵐ x ∂μ, dist (f x) (g x) ≤ ε) :
2002- ae_measurable g μ :=
2003- begin
2004- obtain ⟨u, u_anti, u_pos, u_lim⟩ :
2005- ∃ (u : ℕ → ℝ), strict_anti u ∧ (∀ (n : ℕ), 0 < u n) ∧ tendsto u at_top (𝓝 0 ) :=
2006- exists_seq_strict_anti_tendsto (0 : ℝ),
2007- choose f Hf using λ (n : ℕ), hf (u n) (u_pos n),
2008- have : ∀ᵐ x ∂μ, tendsto (λ n, f n x) at_top (𝓝 (g x)),
2009- { have : ∀ᵐ x ∂ μ, ∀ n, dist (f n x) (g x) ≤ u n := ae_all_iff.2 (λ n, (Hf n).2 ),
2010- filter_upwards [this ],
2011- assume x hx,
2012- rw tendsto_iff_dist_tendsto_zero,
2013- exact squeeze_zero (λ n, dist_nonneg) hx u_lim },
2014- exact ae_measurable_of_tendsto_metrizable_ae' (λ n, (Hf n).1 ) this ,
2015- end
2016-
2017- lemma measurable_of_tendsto_metrizable_ae {μ : measure α} [μ.is_complete] {f : ℕ → α → β}
2018- {g : α → β} (hf : ∀ n, measurable (f n))
2019- (h_ae_tendsto : ∀ᵐ x ∂μ, tendsto (λ n, f n x) at_top (𝓝 (g x))) :
2020- measurable g :=
2021- ae_measurable_iff_measurable.mp
2022- (ae_measurable_of_tendsto_metrizable_ae' (λ i, (hf i).ae_measurable) h_ae_tendsto)
2023-
2024- lemma measurable_limit_of_tendsto_metrizable_ae {ι} [countable ι] [nonempty ι] {μ : measure α}
2025- {f : ι → α → β} {L : filter ι} [L.is_countably_generated] (hf : ∀ n, ae_measurable (f n) μ)
2026- (h_ae_tendsto : ∀ᵐ x ∂μ, ∃ l : β, tendsto (λ n, f n x) L (𝓝 l)) :
2027- ∃ (f_lim : α → β) (hf_lim_meas : measurable f_lim),
2028- ∀ᵐ x ∂μ, tendsto (λ n, f n x) L (𝓝 (f_lim x)) :=
2029- begin
2030- inhabit ι,
2031- unfreezingI { rcases eq_or_ne L ⊥ with rfl | hL },
2032- { exact ⟨(hf default).mk _, (hf default).measurable_mk,
2033- eventually_of_forall $ λ x, tendsto_bot⟩ },
2034- haveI : ne_bot L := ⟨hL⟩,
2035- let p : α → (ι → β) → Prop := λ x f', ∃ l : β, tendsto (λ n, f' n) L (𝓝 l),
2036- have hp_mem : ∀ x ∈ ae_seq_set hf p, p x (λ n, f n x),
2037- from λ x hx, ae_seq.fun_prop_of_mem_ae_seq_set hf hx,
2038- have h_ae_eq : ∀ᵐ x ∂μ, ∀ n, ae_seq hf p n x = f n x,
2039- from ae_seq.ae_seq_eq_fun_ae hf h_ae_tendsto,
2040- let f_lim : α → β := λ x, dite (x ∈ ae_seq_set hf p) (λ h, (hp_mem x h).some)
2041- (λ h, (⟨f default x⟩ : nonempty β).some),
2042- have hf_lim : ∀ x, tendsto (λ n, ae_seq hf p n x) L (𝓝 (f_lim x)),
2043- { intros x,
2044- simp only [f_lim, ae_seq],
2045- split_ifs,
2046- { refine (hp_mem x h).some_spec.congr (λ n, _),
2047- exact (ae_seq.mk_eq_fun_of_mem_ae_seq_set hf h n).symm },
2048- { exact tendsto_const_nhds, }, },
2049- have h_ae_tendsto_f_lim : ∀ᵐ x ∂μ, tendsto (λ n, f n x) L (𝓝 (f_lim x)),
2050- from h_ae_eq.mono (λ x hx, (hf_lim x).congr hx),
2051- have h_f_lim_meas : measurable f_lim,
2052- from measurable_of_tendsto_metrizable' L (ae_seq.measurable hf p)
2053- (tendsto_pi_nhds.mpr (λ x, hf_lim x)),
2054- exact ⟨f_lim, h_f_lim_meas, h_ae_tendsto_f_lim⟩,
2055- end
2056-
2057- end limits
2058-
2059- namespace continuous_linear_map
2060-
2061- variables {𝕜 : Type *} [normed_field 𝕜]
2062- variables {E : Type *} [normed_add_comm_group E] [normed_space 𝕜 E] [measurable_space E]
2063- [opens_measurable_space E] {F : Type *} [normed_add_comm_group F] [normed_space 𝕜 F]
2064- [measurable_space F] [borel_space F]
2065-
2066- @[measurability]
2067- protected lemma measurable (L : E →L[𝕜] F) : measurable L :=
2068- L.continuous.measurable
2069-
2070- lemma measurable_comp (L : E →L[𝕜] F) {φ : α → E} (φ_meas : measurable φ) :
2071- measurable (λ (a : α), L (φ a)) :=
2072- L.measurable.comp φ_meas
2073-
2074- end continuous_linear_map
2075-
2076- namespace continuous_linear_map
2077-
2078- variables {𝕜 : Type *} [nontrivially_normed_field 𝕜]
2079- variables {E : Type *} [normed_add_comm_group E] [normed_space 𝕜 E]
2080- {F : Type *} [normed_add_comm_group F] [normed_space 𝕜 F]
2081-
2082- instance : measurable_space (E →L[𝕜] F) := borel _
2083-
2084- instance : borel_space (E →L[𝕜] F) := ⟨rfl⟩
2085-
2086- @[measurability]
2087- lemma measurable_apply [measurable_space F] [borel_space F] (x : E) :
2088- measurable (λ f : E →L[𝕜] F, f x) :=
2089- (apply 𝕜 F x).continuous.measurable
2090-
2091- @[measurability]
2092- lemma measurable_apply' [measurable_space E] [opens_measurable_space E]
2093- [measurable_space F] [borel_space F] :
2094- measurable (λ (x : E) (f : E →L[𝕜] F), f x) :=
2095- measurable_pi_lambda _ $ λ f, f.measurable
2096-
2097- @[measurability]
2098- lemma measurable_coe [measurable_space F] [borel_space F] :
2099- measurable (λ (f : E →L[𝕜] F) (x : E), f x) :=
2100- measurable_pi_lambda _ measurable_apply
2101-
2102- end continuous_linear_map
2103-
2104- section continuous_linear_map_nontrivially_normed_field
2105-
2106- variables {𝕜 : Type *} [nontrivially_normed_field 𝕜]
2107- variables {E : Type *} [normed_add_comm_group E] [normed_space 𝕜 E] [measurable_space E]
2108- [borel_space E] {F : Type *} [normed_add_comm_group F] [normed_space 𝕜 F]
2109-
2110- @[measurability]
2111- lemma measurable.apply_continuous_linear_map {φ : α → F →L[𝕜] E} (hφ : measurable φ) (v : F) :
2112- measurable (λ a, φ a v) :=
2113- (continuous_linear_map.apply 𝕜 E v).measurable.comp hφ
2114-
2115- @[measurability]
2116- lemma ae_measurable.apply_continuous_linear_map {φ : α → F →L[𝕜] E} {μ : measure α}
2117- (hφ : ae_measurable φ μ) (v : F) : ae_measurable (λ a, φ a v) μ :=
2118- (continuous_linear_map.apply 𝕜 E v).measurable.comp_ae_measurable hφ
2119-
2120- end continuous_linear_map_nontrivially_normed_field
2121-
2122- section normed_space
2123- variables {𝕜 : Type *} [nontrivially_normed_field 𝕜] [complete_space 𝕜] [measurable_space 𝕜]
2124- variables [borel_space 𝕜] {E : Type *} [normed_add_comm_group E] [normed_space 𝕜 E]
2125- [measurable_space E] [borel_space E]
2126-
2127- lemma measurable_smul_const {f : α → 𝕜} {c : E} (hc : c ≠ 0 ) :
2128- measurable (λ x, f x • c) ↔ measurable f :=
2129- (closed_embedding_smul_left hc).measurable_embedding.measurable_comp_iff
2130-
2131- lemma ae_measurable_smul_const {f : α → 𝕜} {μ : measure α} {c : E} (hc : c ≠ 0 ) :
2132- ae_measurable (λ x, f x • c) μ ↔ ae_measurable f μ :=
2133- (closed_embedding_smul_left hc).measurable_embedding.ae_measurable_comp_iff
2134-
2135- end normed_space
0 commit comments