Skip to content

Commit 0916343

Browse files
committed
refactor(MeasureTheory): streamline the Kupka reduction
1 parent 41534ae commit 0916343

1 file changed

Lines changed: 25 additions & 7 deletions

File tree

Mathlib/MeasureTheory/Function/StronglyMeasurable/InnerRegular.lean

Lines changed: 25 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,8 @@ private theorem exists_pairwiseDisjoint_iUnion_eq_aux {R α : Type*} (B : R →
150150
· change Disjoint (M r) (M t)
151151
rw [disjoint_comm, Set.disjoint_left]
152152
exact fun x hxt hxr ↦ hxr.2 (mem_iUnion.2 ⟨⟨t, htr⟩, hxt.1⟩)
153-
refine ⟨M, hMdisj, fun _ ↦ sdiff_subset, Subset.antisymm (iUnion_mono fun _ ↦ sdiff_subset) ?_⟩
153+
refine ⟨M, hMdisj, fun _ ↦ sdiff_subset,
154+
Subset.antisymm (iUnion_mono fun _ ↦ sdiff_subset) ?_⟩
154155
intro x hx
155156
obtain ⟨r, hxr⟩ := mem_iUnion.1 hx
156157
let r₀ : R := wellFounded_lt.min {r : R | x ∈ B r} ⟨r, hxr⟩
@@ -628,7 +629,8 @@ private theorem Measure.exists_nullFiber_map_of_splits_aux {i : Type*} [Measurab
628629
rw [← hxb]
629630
rw [← path_eq_pref x n]
630631
exact hxnode hx.1 n
631-
exact ⟨code, fun b ↦ bot_unique (ge_of_tendsto' (hlim b) fun n ↦ measure_mono (hfiber b n))⟩
632+
exact ⟨code, fun b ↦
633+
bot_unique (ge_of_tendsto' (hlim b) fun n ↦ measure_mono (hfiber b n))⟩
632634

633635
private def UncountableCompactUnitInterval :=
634636
{K : Set ℝ // IsCompact K ∧ K ⊆ Icc 0 1 ∧ ¬K.Countable}
@@ -794,7 +796,8 @@ private theorem exists_bernstein_unitInterval :
794796

795797
private theorem exists_measurable_eqOn_pairwiseDisjoint {i : Type*} (A : i → Set X)
796798
(hA : Pairwise (Disjoint on A)) (hAmeas : ∀ s : Set i, MeasurableSet (⋃ j ∈ s, A j))
797-
(label : i → ℝ) : ∃ g : X → ℝ, Measurable g ∧ ∀ j, Set.EqOn g (fun _ ↦ label j) (A j) := by
799+
(label : i → ℝ) :
800+
∃ g : X → ℝ, Measurable g ∧ ∀ j, Set.EqOn g (fun _ ↦ label j) (A j) := by
798801
classical
799802
let U : Set X := ⋃ j, A j
800803
let g : X → ℝ := fun x ↦ if hx : ∃ j, x ∈ A j then label (Classical.choose hx) else 0
@@ -872,7 +875,8 @@ private theorem measure_eq_zero_of_countable_image_aux (g : X → ℝ) {U K : Se
872875
rw [show K = ⋃ r : g '' K, K ∩ g ⁻¹' {(r : ℝ)} by
873876
ext x
874877
simp only [mem_iUnion, mem_inter_iff, mem_preimage, mem_singleton_iff]
875-
exact ⟨fun hx ↦ ⟨⟨g x, mem_image_of_mem g hx⟩, hx, rfl⟩, fun ⟨_, hx, _⟩ ↦ hx⟩]
878+
exact ⟨fun hx ↦ ⟨⟨g x, mem_image_of_mem g hx⟩, hx, rfl⟩,
879+
fun ⟨_, hx, _⟩ ↦ hx⟩]
876880
apply measure_iUnion_null
877881
intro r
878882
have hsub : K ∩ g ⁻¹' {(r : ℝ)} ⊆ g ⁻¹' {(r : ℝ)} ∩ U := fun _ hx ↦
@@ -904,7 +908,8 @@ private theorem Measure.measure_iUnion_eq_zero_of_pairwiseDisjoint_of_splits_aux
904908
have hbranch : Cardinal.mk (ℕ → Bool) = 𝔠 := by
905909
rw [← Cardinal.power_def, Cardinal.mk_bool, Cardinal.mk_nat, Cardinal.two_power_aleph0]
906910
have hbranchB : Cardinal.mk (ℕ → Bool) ≤ Cardinal.mk B := by rw [hbranch, hBcard]
907-
obtain ⟨e⟩ : Nonempty ((ℕ → Bool) ↪ B) := Cardinal.lift_mk_le'.1 (by simpa using hbranchB)
911+
obtain ⟨e⟩ : Nonempty ((ℕ → Bool) ↪ B) :=
912+
Cardinal.lift_mk_le'.1 (by simpa using hbranchB)
908913
let label : i → ℝ := fun j ↦ e (code j)
909914
obtain ⟨g, hg, hgA⟩ := exists_measurable_eqOn_pairwiseDisjoint A hA hAmeas label
910915
let U : Set X := ⋃ j, A j
@@ -1234,8 +1239,21 @@ private theorem measure_preimage_iUnion_null_of_discreteFamily_aux [SFinite μ]
12341239
rw [show f ⁻¹' ⋃ U : {U : b | μ (f ⁻¹' (U : Set Y)) = 0}, (U : Set Y) =
12351240
⋃ U, A U by
12361241
ext x
1237-
simp only [A, q, mem_preimage, mem_iUnion, Subtype.exists, mem_setOf_eq, exists_prop]
1238-
aesop]
1242+
constructor
1243+
· intro hx
1244+
change f x ∈ ⋃ U : {U : b | μ (f ⁻¹' (U : Set Y)) = 0}, (U : Set Y) at hx
1245+
obtain ⟨U, hxU⟩ := mem_iUnion.1 hx
1246+
apply mem_iUnion.2
1247+
refine ⟨(U : Set Y), ?_⟩
1248+
have hUq : (U : Set Y) ∈ q := ⟨U.1.2, U.2
1249+
simpa [A, hUq] using hxU
1250+
· intro hx
1251+
obtain ⟨U, hxU⟩ := mem_iUnion.1 hx
1252+
by_cases hU : U ∈ q
1253+
· change f x ∈ ⋃ U : {U : b | μ (f ⁻¹' (U : Set Y)) = 0}, (U : Set Y)
1254+
exact mem_iUnion_of_mem ⟨⟨U, hU.1⟩, hU.2⟩ (by simpa [A, hU] using hxU)
1255+
· exfalso
1256+
simp [A, hU] at hxU]
12391257
exact hnull A hA_disj hA_null hA_union
12401258

12411259
omit [PseudoMetrizableSpace Y] in

0 commit comments

Comments
 (0)