Skip to content

Commit cb2dc1d

Browse files
committed
Complete Remark 1.3.10 proof and refactor function names
- Relax binaryDigit_partial_sum_lt signature (remove Ico constraint), update call sites - Fix sum_add_tsum_nat_add calls to use Summable.sum_add_tsum_nat_add - Complete Remark 1.3.10 example proof: show A' measurable via complement of countable set, then F' = f⁻¹(E) ∩ A' is measurable intersection - Rename f to f_lifted and update related lemma names for clarity - Use underscore prefix for unused hypothesis names
1 parent 5673c33 commit cb2dc1d

File tree

1 file changed

+128
-47
lines changed

1 file changed

+128
-47
lines changed

analysis/Analysis/MeasureTheory/Section_1_3_2.lean

Lines changed: 128 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -1921,7 +1921,7 @@ lemma binaryDigit_partial_sum_le {x : ℝ} (hx : x ∈ Set.Ico (0:ℝ) 1) (n :
19211921
exact Nat.floor_le (mul_nonneg hx.1 (le_of_lt h2n_pos))
19221922

19231923
/-- The partial sum bounds x from above: x < Sₙ(x) + 2^{-n} -/
1924-
lemma binaryDigit_partial_sum_lt {x : ℝ} (hx : x ∈ Set.Ico (0:ℝ) 1) (n : ℕ) :
1924+
lemma binaryDigit_partial_sum_lt (x : ℝ) (n : ℕ) :
19251925
x < (⌊(2:ℝ)^n * x⌋₊ : ℝ) / (2:ℝ)^n + (1:ℝ) / (2:ℝ)^n := by
19261926
have h2n_pos : (0:ℝ) < 2^n := by positivity
19271927
have := Nat.lt_floor_add_one ((2:ℝ)^n * x)
@@ -2036,7 +2036,7 @@ lemma binaryDigit_zero_implies_upper_bound {y : ℝ} (hy : y ∈ Set.Ico (0:ℝ)
20362036
have h_floor_rel : ⌊(2:ℝ)^(k+1) * y⌋₊ ≤ 2 * ⌊(2:ℝ)^k * y⌋₊ := by
20372037
rw [heq]
20382038
exact floor_two_mul_even_le hy_nonneg h_floor_even
2039-
have h_lt := binaryDigit_partial_sum_lt hy (k + 1)
2039+
have h_lt := binaryDigit_partial_sum_lt y (k + 1)
20402040
calc y < (⌊(2:ℝ)^(k+1) * y⌋₊ : ℝ) / (2:ℝ)^(k + 1) + (1:ℝ) / (2:ℝ)^(k + 1) := h_lt
20412041
_ = (⌊(2:ℝ)^(k+1) * y⌋₊ + 1 : ℝ) / (2:ℝ)^(k + 1) := by ring
20422042
_ ≤ (2 * ⌊(2:ℝ)^k * y⌋₊ + 1 : ℝ) / (2:ℝ)^(k + 1) := by
@@ -2084,9 +2084,9 @@ lemma binaryDigit_first_diff {x y : ℝ} (hx : x ∈ Set.Ico (0:ℝ) 1) (hy : y
20842084
have h_close : ∀ n, |x - y| < (1:ℝ) / (2:ℝ)^n := by
20852085
intro n
20862086
have hx_bounds := binaryDigit_partial_sum_le hx n
2087-
have hx_bounds' := binaryDigit_partial_sum_lt hx n
2087+
have hx_bounds' := binaryDigit_partial_sum_lt x n
20882088
have hy_bounds := binaryDigit_partial_sum_le hy n
2089-
have hy_bounds' := binaryDigit_partial_sum_lt hy n
2089+
have hy_bounds' := binaryDigit_partial_sum_lt y n
20902090
rw [h_floor_eq n] at hx_bounds hx_bounds'
20912091
rw [abs_lt]
20922092
constructor <;> linarith
@@ -2181,14 +2181,14 @@ lemma binaryToTernary_lt_of_digit_lt {x y : ℝ}
21812181
have hsum_x : Summable fx := binaryToTernary_summable x
21822182
have hsum_y : Summable fy := binaryToTernary_summable y
21832183
have h_split_x : ∑' j, fx j = ∑ j ∈ Finset.range k, fx j + fx k + ∑' j, fx (k + 1 + j) := by
2184-
rw [← sum_add_tsum_nat_add (k + 1) hsum_x, Finset.sum_range_succ]
2184+
rw [← Summable.sum_add_tsum_nat_add (k + 1) hsum_x, Finset.sum_range_succ]
21852185
congr 1
21862186
congr 1
21872187
ext j
21882188
congr 1
21892189
omega
21902190
have h_split_y : ∑' j, fy j = ∑ j ∈ Finset.range k, fy j + fy k + ∑' j, fy (k + 1 + j) := by
2191-
rw [← sum_add_tsum_nat_add (k + 1) hsum_y, Finset.sum_range_succ]
2191+
rw [← Summable.sum_add_tsum_nat_add (k + 1) hsum_y, Finset.sum_range_succ]
21922192
congr 1
21932193
congr 1
21942194
ext j
@@ -2734,33 +2734,33 @@ lemma binaryToTernary_eq_zero_iff {x : ℝ} (hx : x ∈ Set.Icc (0:ℝ) 1) :
27342734
rw [h]
27352735
exact binaryToTernary_props.zero_at_zero
27362736

2737-
/-- Binary-to-ternary lifted to EuclideanSpace' 1 → EReal. -/
2738-
noncomputable def f : EuclideanSpace' 1 → EReal :=
2737+
/-- binaryToTernary lifted to EuclideanSpace' 1 → EReal (called f in informal proof). -/
2738+
noncomputable def f_lifted : EuclideanSpace' 1 → EReal :=
27392739
fun x => Real.toEReal (max 0 (binaryToTernary (EuclideanSpace'.equiv_Real x)))
27402740

2741-
lemma f_unsigned : Unsigned f := by
2741+
lemma f_lifted_unsigned : Unsigned f_lifted := by
27422742
intro x
2743-
simp only [f, ge_iff_le]
2743+
simp only [f_lifted, ge_iff_le]
27442744
rw [EReal.coe_nonneg]
27452745
exact le_max_left 0 _
27462746

2747-
lemma f_le_one (x : EuclideanSpace' 1) : f x ≤ 1 := by
2748-
simp only [f]
2747+
lemma f_lifted_le_one (x : EuclideanSpace' 1) : f_lifted x ≤ 1 := by
2748+
simp only [f_lifted]
27492749
have hg := binaryToTernary_props.bounded (EuclideanSpace'.equiv_Real x)
27502750
have h_max_le : max 0 (binaryToTernary (EuclideanSpace'.equiv_Real x)) ≤ 1 :=
27512751
max_le (by norm_num) hg
27522752
exact EReal.coe_le_coe_iff.mpr h_max_le
27532753

2754-
lemma f_zero_outside (x : EuclideanSpace' 1) (hx : EuclideanSpace'.equiv_Real x ∉ Set.Icc 0 1) :
2755-
f x = 0 := by
2756-
simp only [f]
2754+
lemma f_lifted_zero_outside (x : EuclideanSpace' 1) (hx : EuclideanSpace'.equiv_Real x ∉ Set.Icc 0 1) :
2755+
f_lifted x = 0 := by
2756+
simp only [f_lifted]
27572757
have hg := binaryToTernary_props.zero_outside (EuclideanSpace'.equiv_Real x) hx
27582758
rw [hg]
27592759
simp
27602760

2761-
lemma f_zero_at_zero (x : EuclideanSpace' 1) (hx : EuclideanSpace'.equiv_Real x = 0) :
2762-
f x = 0 := by
2763-
simp only [f]
2761+
lemma f_lifted_zero_at_zero (x : EuclideanSpace' 1) (hx : EuclideanSpace'.equiv_Real x = 0) :
2762+
f_lifted x = 0 := by
2763+
simp only [f_lifted]
27642764
have hg := binaryToTernary_props.zero_at_zero
27652765
rw [hx, hg]
27662766
simp
@@ -2769,15 +2769,15 @@ lemma f_zero_set_in_interval_countable :
27692769
(Set.Icc (0:ℝ) 1 ∩ {x | binaryToTernary x = 0}).Countable :=
27702770
binaryToTernary_props.zero_set_countable
27712771

2772-
lemma f_zero_set_measurable : LebesgueMeasurable {x : EuclideanSpace' 1 | f x = 0} := by
2773-
have h_decomp : {x : EuclideanSpace' 1 | f x = 0} =
2772+
lemma f_lifted_zero_set_measurable : LebesgueMeasurable {x : EuclideanSpace' 1 | f_lifted x = 0} := by
2773+
have h_decomp : {x : EuclideanSpace' 1 | f_lifted x = 0} =
27742774
(Real.equiv_EuclideanSpace' '' (Set.Icc 0 1)ᶜ) ∪
27752775
(Real.equiv_EuclideanSpace' '' (Set.Icc 0 1 ∩ {x | binaryToTernary x = 0})) := by
27762776
ext x
27772777
simp only [Set.mem_setOf_eq, Set.mem_union, Set.mem_image]
27782778
constructor
27792779
· intro hfx
2780-
simp only [f] at hfx
2780+
simp only [f_lifted] at hfx
27812781
have hmax : max 0 (binaryToTernary (EuclideanSpace'.equiv_Real x)) = 0 := by
27822782
rw [EReal.coe_eq_zero] at hfx
27832783
exact hfx
@@ -2801,11 +2801,11 @@ lemma f_zero_set_measurable : LebesgueMeasurable {x : EuclideanSpace' 1 | f x =
28012801
exact ⟨h_in, EuclideanSpace'.equiv_Real.symm_apply_apply x⟩
28022802
· intro h
28032803
rcases h with ⟨r, hr, hrx⟩ | ⟨r, ⟨hr_in, hr_zero⟩, hrx⟩
2804-
· simp only [f]
2804+
· simp only [f_lifted]
28052805
have hx_eq : EuclideanSpace'.equiv_Real x = r := by
28062806
rw [← hrx]; exact EuclideanSpace'.equiv_Real.apply_symm_apply r
28072807
rw [hx_eq, binaryToTernary_props.zero_outside r hr]; simp
2808-
· simp only [f]
2808+
· simp only [f_lifted]
28092809
have hx_eq : EuclideanSpace'.equiv_Real x = r := by
28102810
rw [← hrx]; exact EuclideanSpace'.equiv_Real.apply_symm_apply r
28112811
rw [hx_eq, hr_zero]; simp
@@ -2832,15 +2832,15 @@ lemma f_zero_set_measurable : LebesgueMeasurable {x : EuclideanSpace' 1 | f x =
28322832
apply Set.Countable.image; exact f_zero_set_in_interval_countable
28332833
exact Countable.Lebesgue_measure Nat.one_pos h_countable
28342834

2835-
/-- Sublevel sets of f are measurable (key lemma for f_measurable). -/
2835+
/-- Sublevel sets of f_lifted are measurable (key lemma for f_lifted_measurable). -/
28362836
lemma sublevel_set_measurable (t : EReal) (ht_pos : 0 < t) (ht_lt_one : t < 1) :
2837-
LebesgueMeasurable {x : EuclideanSpace' 1 | f x ≤ t} := by
2837+
LebesgueMeasurable {x : EuclideanSpace' 1 | f_lifted x ≤ t} := by
28382838
have h_outside_zero : ∀ x : EuclideanSpace' 1, EuclideanSpace'.equiv_Real x ∉ Set.Icc 0 1
2839-
f x ≤ t := fun x hx => by rw [f_zero_outside x hx]; exact le_of_lt ht_pos
2840-
have h_decomp : {x : EuclideanSpace' 1 | f x ≤ t} =
2839+
f_lifted x ≤ t := fun x hx => by rw [f_lifted_zero_outside x hx]; exact le_of_lt ht_pos
2840+
have h_decomp : {x : EuclideanSpace' 1 | f_lifted x ≤ t} =
28412841
(Real.equiv_EuclideanSpace' '' Set.Iio 0) ∪
28422842
(Real.equiv_EuclideanSpace' '' Set.Ioi 1) ∪
2843-
{x : EuclideanSpace' 1 | EuclideanSpace'.equiv_Real x ∈ Set.Icc 0 1f x ≤ t} := by
2843+
{x : EuclideanSpace' 1 | EuclideanSpace'.equiv_Real x ∈ Set.Icc 0 1f_lifted x ≤ t} := by
28442844
ext x
28452845
simp only [Set.mem_setOf_eq, Set.mem_union, Set.mem_image]
28462846
constructor
@@ -2900,7 +2900,7 @@ lemma sublevel_set_measurable (t : EReal) (ht_pos : 0 < t) (ht_lt_one : t < 1) :
29002900
continuous_toFun := hf_cont
29012901
continuous_invFun := hg_cont }
29022902
exact e.isOpenMap (Set.Ioi 1) isOpen_Ioi
2903-
· -- Monotonicity case: {x ∈ [0,1] | f x ≤ t} is a convex set, hence measurable
2903+
· -- Monotonicity case: {x ∈ [0,1] | f_lifted x ≤ t} is a convex set, hence measurable
29042904
have ht_ne_top : t ≠ ⊤ := ne_of_lt (lt_of_lt_of_le ht_lt_one le_top)
29052905
have ht_ne_bot : t ≠ ⊥ := ne_of_gt (lt_of_le_of_lt bot_le ht_pos)
29062906
let t' := t.toReal
@@ -2913,22 +2913,22 @@ lemma sublevel_set_measurable (t : EReal) (ht_pos : 0 < t) (ht_lt_one : t < 1) :
29132913
have h : (t':EReal) < 1 := by rw [← ht_eq]; exact ht_lt_one
29142914
exact EReal.coe_lt_coe_iff.mp h
29152915
let S : Set ℝ := {r ∈ Set.Icc (0:ℝ) 1 | binaryToTernary r ≤ t'}
2916-
have h_set_eq : {x : EuclideanSpace' 1 | EuclideanSpace'.equiv_Real x ∈ Set.Icc 0 1f x ≤ ↑t'} =
2916+
have h_set_eq : {x : EuclideanSpace' 1 | EuclideanSpace'.equiv_Real x ∈ Set.Icc 0 1f_lifted x ≤ ↑t'} =
29172917
Real.equiv_EuclideanSpace' '' S := by
29182918
ext x
29192919
simp only [Set.mem_setOf_eq, Set.mem_image, S]
29202920
constructor
29212921
· intro ⟨h_in, hfx⟩
29222922
use EuclideanSpace'.equiv_Real x
29232923
refine ⟨⟨h_in, ?_⟩, EuclideanSpace'.equiv_Real.symm_apply_apply x⟩
2924-
simp only [f] at hfx
2924+
simp only [f_lifted] at hfx
29252925
have h_max : max 0 (binaryToTernary (EuclideanSpace'.equiv_Real x)) ≤ t' := by
29262926
rw [EReal.coe_le_coe_iff] at hfx; exact hfx
29272927
exact le_of_max_le_right h_max
29282928
· intro ⟨r, ⟨hr_in, hr_le⟩, hrx⟩
29292929
constructor
29302930
· rw [← hrx, EuclideanSpace'.equiv_Real.apply_symm_apply]; exact hr_in
2931-
· rw [← hrx]; simp only [f, EuclideanSpace'.equiv_Real.apply_symm_apply]
2931+
· rw [← hrx]; simp only [f_lifted, EuclideanSpace'.equiv_Real.apply_symm_apply]
29322932
rw [EReal.coe_le_coe_iff]
29332933
exact max_le (le_of_lt ht'_pos) hr_le
29342934
rw [h_set_eq]
@@ -3015,30 +3015,30 @@ lemma sublevel_set_measurable (t : EReal) (ht_pos : 0 < t) (ht_lt_one : t < 1) :
30153015
apply IsNull.measurable
30163016
exact Countable.Lebesgue_measure Nat.one_pos (Set.countable_singleton a |>.image _)
30173017

3018-
lemma f_measurable : UnsignedMeasurable f := by
3018+
lemma f_lifted_measurable : UnsignedMeasurable f_lifted := by
30193019
-- Apply Lemma 1.3.9(viii): f is measurable iff ∀ t, {x | f(x) ≤ t} is measurable
3020-
have h_iff : UnsignedMeasurable f ↔ (∀ t, LebesgueMeasurable {x | f x ≤ t}) :=
3021-
(UnsignedMeasurable.TFAE f_unsigned).out 0 7
3020+
have h_iff : UnsignedMeasurable f_lifted ↔ (∀ t, LebesgueMeasurable {x | f_lifted x ≤ t}) :=
3021+
(UnsignedMeasurable.TFAE f_lifted_unsigned).out 0 7
30223022
apply h_iff.mpr
30233023
intro t
30243024
rcases lt_trichotomy t 0 with ht_neg | ht_zero | ht_pos
3025-
· have h_empty : {x | f x ≤ t} = ∅ := by
3025+
· have h_empty : {x | f_lifted x ≤ t} = ∅ := by
30263026
ext x
30273027
simp only [Set.mem_setOf_eq, Set.mem_empty_iff_false, iff_false, not_le]
3028-
exact lt_of_lt_of_le ht_neg (f_unsigned x)
3028+
exact lt_of_lt_of_le ht_neg (f_lifted_unsigned x)
30293029
rw [h_empty]; exact LebesgueMeasurable.empty
30303030
· subst ht_zero
3031-
have h_eq : {x | f x ≤ (0 : EReal)} = {x | f x = 0} := by
3031+
have h_eq : {x | f_lifted x ≤ (0 : EReal)} = {x | f_lifted x = 0} := by
30323032
ext x
30333033
simp only [Set.mem_setOf_eq]
30343034
constructor
3035-
· intro hle; exact le_antisymm hle (f_unsigned x)
3035+
· intro hle; exact le_antisymm hle (f_lifted_unsigned x)
30363036
· intro heq; rw [heq]
3037-
rw [h_eq]; exact f_zero_set_measurable
3037+
rw [h_eq]; exact f_lifted_zero_set_measurable
30383038
· rcases le_or_gt 1 t with ht_ge_one | ht_lt_one
3039-
· have h_univ : {x | f x ≤ t} = Set.univ := by
3039+
· have h_univ : {x | f_lifted x ≤ t} = Set.univ := by
30403040
ext x; simp only [Set.mem_setOf_eq, Set.mem_univ, iff_true]
3041-
exact le_trans (f_le_one x) ht_ge_one
3041+
exact le_trans (f_lifted_le_one x) ht_ge_one
30423042
rw [h_univ]; exact IsOpen.measurable isOpen_univ
30433043
· exact sublevel_set_measurable t ht_pos ht_lt_one
30443044

@@ -3112,9 +3112,12 @@ lemma exists_nonmeasurable_with_cantor_image :
31123112
end Remark_1_3_10
31133113

31143114
/-- Remark 1.3.10: The inverse image of a Lebesgue measurable set by a measurable function
3115-
need not be Lebesgue measurable. -/
3116-
example : ∃ (f: EuclideanSpace' 1 → EReal) (hf: UnsignedMeasurable f) (E: Set (EuclideanSpace' 1)) (hE: LebesgueMeasurable E), ¬ LebesgueMeasurable (f⁻¹' ((Real.toEReal ∘ EuclideanSpace'.equiv_Real) '' E)) := by
3117-
use Remark_1_3_10.f, Remark_1_3_10.f_measurable
3115+
need not be Lebesgue measurable.
3116+
Proof: Let f = binaryToTernary (maps [0,1] → Cantor set), F ⊆ [0,1] non-measurable (Vitali).
3117+
Set E = f(F) ⊆ Cantor set. Then E is null (⊆ null set) hence measurable, but f⁻¹(E) = F
3118+
is non-measurable. (Uses injectivity of f on non-dyadic rationals A ⊇ F.) -/
3119+
example : ∃ (f: EuclideanSpace' 1 → EReal) (_hf: UnsignedMeasurable f) (E: Set (EuclideanSpace' 1)) (_hE: LebesgueMeasurable E), ¬ LebesgueMeasurable (f⁻¹' ((Real.toEReal ∘ EuclideanSpace'.equiv_Real) '' E)) := by
3120+
use Remark_1_3_10.f_lifted, Remark_1_3_10.f_lifted_measurable
31183121
obtain ⟨F, A, hF_sub, hF_nonmeas, hF_image, hF_sub_A, hA_sub, hA_cocountable, hA_inj⟩ :=
31193122
Remark_1_3_10.exists_nonmeasurable_with_cantor_image
31203123
use Real.equiv_EuclideanSpace' '' (Remark_1_3_10.binaryToTernary '' F)
@@ -3125,10 +3128,88 @@ example : ∃ (f: EuclideanSpace' 1 → EReal) (hf: UnsignedMeasurable f) (E: Se
31253128
intro x hx; obtain ⟨y, hy, rfl⟩ := hx
31263129
exact ⟨y, hF_image hy, rfl⟩
31273130
case hPreimage_nonmeas =>
3128-
-- Key: binaryToTernary is injective on A, F ⊆ A, so f⁻¹(E) ∩ A = F (measurable)
3131+
-- Key: f is injective on A ⊆ ℝ, F ⊆ A, so f⁻¹(E) ∩ A' = F' where A', F' are A, F in EuclideanSpace'
31293132
intro h_meas
31303133
apply hF_nonmeas
3131-
sorry
3134+
have h_simplify : (Real.toEReal ∘ EuclideanSpace'.equiv_Real) ''
3135+
(Real.equiv_EuclideanSpace' '' (Remark_1_3_10.binaryToTernary '' F)) =
3136+
Real.toEReal '' (Remark_1_3_10.binaryToTernary '' F) := by
3137+
ext z; simp only [Set.mem_image, Function.comp_apply]
3138+
constructor
3139+
· rintro ⟨p, ⟨y, hy, rfl⟩, rfl⟩; exact ⟨y, hy, by simp⟩
3140+
· rintro ⟨y, hy, rfl⟩; exact ⟨Real.equiv_EuclideanSpace' y, ⟨y, hy, rfl⟩, by simp⟩
3141+
rw [h_simplify] at h_meas
3142+
-- A', F' := A, F viewed in EuclideanSpace' 1 (via ℝ ≃ EuclideanSpace' 1)
3143+
let A' := Real.equiv_EuclideanSpace' '' A
3144+
let F' := Real.equiv_EuclideanSpace' '' F
3145+
have h_preimage_inter : Remark_1_3_10.f_lifted ⁻¹' (Real.toEReal '' (Remark_1_3_10.binaryToTernary '' F)) ∩ A' = F' := by
3146+
ext p
3147+
simp only [Set.mem_inter_iff, Set.mem_preimage, Set.mem_image, A', F']
3148+
constructor
3149+
· rintro ⟨⟨z, ⟨w, hw, rfl⟩, hfp⟩, a, ha, rfl⟩
3150+
-- p = Real.equiv_EuclideanSpace' a, a ∈ A
3151+
-- f p = Real.toEReal z where z = binaryToTernary w, w ∈ F
3152+
-- So binaryToTernary a = z = binaryToTernary w
3153+
use a
3154+
refine ⟨?_, rfl⟩
3155+
-- Show a ∈ F using injectivity
3156+
have ha_in_Icc : a ∈ Set.Icc (0:ℝ) 1 := hA_sub ha
3157+
have hw_in_A : w ∈ A := hF_sub_A hw
3158+
have hw_in_Icc : w ∈ Set.Icc (0:ℝ) 1 := hA_sub hw_in_A
3159+
-- f p = binaryToTernary a (since a ∈ [0,1] and binaryToTernary a ≥ 0)
3160+
have hf_eq : Remark_1_3_10.f_lifted (Real.equiv_EuclideanSpace' a) =
3161+
Real.toEReal (Remark_1_3_10.binaryToTernary a) := by
3162+
simp only [Remark_1_3_10.f_lifted, EuclideanSpace'.equiv_Real.apply_symm_apply]
3163+
congr 1
3164+
exact max_eq_right (Remark_1_3_10.binaryToTernary_props.nonneg a)
3165+
rw [hf_eq] at hfp
3166+
have h_eq_values : Remark_1_3_10.binaryToTernary a = Remark_1_3_10.binaryToTernary w :=
3167+
(EReal.coe_injective hfp).symm
3168+
have ha_eq_w : a = w := hA_inj ha hw_in_A h_eq_values
3169+
rw [ha_eq_w]; exact hw
3170+
· rintro ⟨r, hr, rfl⟩
3171+
constructor
3172+
· -- f (Real.equiv_EuclideanSpace' r) ∈ Real.toEReal '' (binaryToTernary '' F)
3173+
use Remark_1_3_10.binaryToTernary r
3174+
refine ⟨⟨r, hr, rfl⟩, ?_⟩
3175+
simp only [Remark_1_3_10.f_lifted, EuclideanSpace'.equiv_Real.apply_symm_apply]
3176+
congr 1
3177+
exact (max_eq_right (Remark_1_3_10.binaryToTernary_props.nonneg r)).symm
3178+
· exact ⟨r, hF_sub_A hr, rfl⟩
3179+
-- A' is measurable: [0,1]' \ A' is countable hence null, use of_ae_eq with [0,1]'
3180+
have hA'_meas : LebesgueMeasurable A' := by
3181+
let Icc' := Real.equiv_EuclideanSpace' '' Set.Icc (0:ℝ) 1
3182+
have hIcc'_meas : LebesgueMeasurable Icc' := IsClosed.measurable <| by
3183+
have : Icc' = EuclideanSpace'.equiv_Real ⁻¹' Set.Icc 0 1 := by
3184+
ext x; simp only [Icc', Set.mem_image, Set.mem_preimage]
3185+
constructor
3186+
· rintro ⟨r, hr, rfl⟩; simp [hr]
3187+
· intro hx; exact ⟨_, hx, EuclideanSpace'.equiv_Real.symm_apply_apply x⟩
3188+
exact this ▸ IsClosed.preimage (continuous_apply _) isClosed_Icc
3189+
have h_diff_null : IsNull (Icc' \ A') := by
3190+
apply Countable.Lebesgue_measure Nat.one_pos
3191+
have : Icc' \ A' = Real.equiv_EuclideanSpace' '' (Set.Icc 0 1 \ A) := by
3192+
ext x; simp only [Set.mem_diff, Set.mem_image, Icc', A']
3193+
constructor
3194+
· rintro ⟨⟨r, hr, rfl⟩, hn⟩
3195+
exact ⟨r, ⟨hr, fun ha => hn ⟨r, ha, rfl⟩⟩, rfl⟩
3196+
· rintro ⟨r, ⟨hr, hn⟩, rfl⟩
3197+
exact ⟨⟨r, hr, rfl⟩, fun ⟨s, hs, he⟩ =>
3198+
hn (Real.equiv_EuclideanSpace'.injective he.symm ▸ hs)⟩
3199+
exact this ▸ Set.Countable.image hA_cocountable _
3200+
have h_A'_sub : A' ⊆ Icc' := by rintro _ ⟨a, ha, rfl⟩; exact ⟨a, hA_sub ha, rfl⟩
3201+
-- A' ∩ (Icc' \ A')ᶜ = Icc' ∩ (Icc' \ A')ᶜ = A' (since A' ⊆ Icc')
3202+
refine LebesgueMeasurable.of_ae_eq hIcc'_meas h_diff_null ?_
3203+
ext x; simp only [Set.mem_inter_iff, Set.mem_compl_iff, Set.mem_diff]
3204+
constructor
3205+
· intro ⟨hx, _⟩; exact ⟨h_A'_sub hx, fun ⟨_, h⟩ => h hx⟩
3206+
· intro ⟨hi, hn⟩; push_neg at hn; exact ⟨hn hi, fun ⟨_, h⟩ => h (hn hi)⟩
3207+
-- F' = f⁻¹'(...) ∩ A' is measurable
3208+
have : F' = Remark_1_3_10.f_lifted ⁻¹' (Real.toEReal '' (Remark_1_3_10.binaryToTernary '' F)) ∩ A' :=
3209+
h_preimage_inter.symm
3210+
simp only [F'] at this
3211+
rw [this]
3212+
exact LebesgueMeasurable.inter h_meas hA'_meas
31323213

31333214
/-- Definition 1.3.11 (Complex measurability)-/
31343215
def ComplexMeasurable {d:ℕ} (f: EuclideanSpace' d → ℂ) : Prop := ∃ (g: ℕ → EuclideanSpace' d → ℂ), (∀ n, ComplexSimpleFunction (g n)) ∧ (PointwiseConvergesTo g f)

0 commit comments

Comments
 (0)