Skip to content

Commit 53c16d1

Browse files
committed
refactor(MeasureTheory): streamline the Kupka reduction
1 parent b2a5b0e commit 53c16d1

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
@@ -151,7 +151,8 @@ private theorem exists_pairwiseDisjoint_iUnion_eq_aux {R α : Type*} (B : R →
151151
· change Disjoint (M r) (M t)
152152
rw [disjoint_comm, Set.disjoint_left]
153153
exact fun x hxt hxr ↦ hxr.2 (mem_iUnion.2 ⟨⟨t, htr⟩, hxt.1⟩)
154-
refine ⟨M, hMdisj, fun _ ↦ sdiff_subset, Subset.antisymm (iUnion_mono fun _ ↦ sdiff_subset) ?_⟩
154+
refine ⟨M, hMdisj, fun _ ↦ sdiff_subset,
155+
Subset.antisymm (iUnion_mono fun _ ↦ sdiff_subset) ?_⟩
155156
intro x hx
156157
obtain ⟨r, hxr⟩ := mem_iUnion.1 hx
157158
let r₀ : R := wellFounded_lt.min {r : R | x ∈ B r} ⟨r, hxr⟩
@@ -629,7 +630,8 @@ private theorem Measure.exists_nullFiber_map_of_splits_aux {i : Type*} [Measurab
629630
rw [← hxb]
630631
rw [← path_eq_pref x n]
631632
exact hxnode hx.1 n
632-
exact ⟨code, fun b ↦ bot_unique (ge_of_tendsto' (hlim b) fun n ↦ measure_mono (hfiber b n))⟩
633+
exact ⟨code, fun b ↦
634+
bot_unique (ge_of_tendsto' (hlim b) fun n ↦ measure_mono (hfiber b n))⟩
633635

634636
private def UncountableCompactUnitInterval :=
635637
{K : Set ℝ // IsCompact K ∧ K ⊆ Icc 0 1 ∧ ¬K.Countable}
@@ -795,7 +797,8 @@ private theorem exists_bernstein_unitInterval :
795797

796798
private theorem exists_measurable_eqOn_pairwiseDisjoint {i : Type*} (A : i → Set X)
797799
(hA : Pairwise (Disjoint on A)) (hAmeas : ∀ s : Set i, MeasurableSet (⋃ j ∈ s, A j))
798-
(label : i → ℝ) : ∃ g : X → ℝ, Measurable g ∧ ∀ j, Set.EqOn g (fun _ ↦ label j) (A j) := by
800+
(label : i → ℝ) :
801+
∃ g : X → ℝ, Measurable g ∧ ∀ j, Set.EqOn g (fun _ ↦ label j) (A j) := by
799802
classical
800803
let U : Set X := ⋃ j, A j
801804
let g : X → ℝ := fun x ↦ if hx : ∃ j, x ∈ A j then label (Classical.choose hx) else 0
@@ -873,7 +876,8 @@ private theorem measure_eq_zero_of_countable_image_aux (g : X → ℝ) {U K : Se
873876
rw [show K = ⋃ r : g '' K, K ∩ g ⁻¹' {(r : ℝ)} by
874877
ext x
875878
simp only [mem_iUnion, mem_inter_iff, mem_preimage, mem_singleton_iff]
876-
exact ⟨fun hx ↦ ⟨⟨g x, mem_image_of_mem g hx⟩, hx, rfl⟩, fun ⟨_, hx, _⟩ ↦ hx⟩]
879+
exact ⟨fun hx ↦ ⟨⟨g x, mem_image_of_mem g hx⟩, hx, rfl⟩,
880+
fun ⟨_, hx, _⟩ ↦ hx⟩]
877881
apply measure_iUnion_null
878882
intro r
879883
have hsub : K ∩ g ⁻¹' {(r : ℝ)} ⊆ g ⁻¹' {(r : ℝ)} ∩ U := fun _ hx ↦
@@ -905,7 +909,8 @@ private theorem Measure.measure_iUnion_eq_zero_of_pairwiseDisjoint_of_splits_aux
905909
have hbranch : Cardinal.mk (ℕ → Bool) = 𝔠 := by
906910
rw [← Cardinal.power_def, Cardinal.mk_bool, Cardinal.mk_nat, Cardinal.two_power_aleph0]
907911
have hbranchB : Cardinal.mk (ℕ → Bool) ≤ Cardinal.mk B := by rw [hbranch, hBcard]
908-
obtain ⟨e⟩ : Nonempty ((ℕ → Bool) ↪ B) := Cardinal.lift_mk_le'.1 (by simpa using hbranchB)
912+
obtain ⟨e⟩ : Nonempty ((ℕ → Bool) ↪ B) :=
913+
Cardinal.lift_mk_le'.1 (by simpa using hbranchB)
909914
let label : i → ℝ := fun j ↦ e (code j)
910915
obtain ⟨g, hg, hgA⟩ := exists_measurable_eqOn_pairwiseDisjoint A hA hAmeas label
911916
let U : Set X := ⋃ j, A j
@@ -1271,8 +1276,21 @@ private theorem measure_preimage_iUnion_null_of_discreteFamily_aux [SFinite μ]
12711276
rw [show f ⁻¹' ⋃ U : {U : b | μ (f ⁻¹' (U : Set Y)) = 0}, (U : Set Y) =
12721277
⋃ U, A U by
12731278
ext x
1274-
simp only [A, q, mem_preimage, mem_iUnion, Subtype.exists, mem_setOf_eq, exists_prop]
1275-
aesop]
1279+
constructor
1280+
· intro hx
1281+
change f x ∈ ⋃ U : {U : b | μ (f ⁻¹' (U : Set Y)) = 0}, (U : Set Y) at hx
1282+
obtain ⟨U, hxU⟩ := mem_iUnion.1 hx
1283+
apply mem_iUnion.2
1284+
refine ⟨(U : Set Y), ?_⟩
1285+
have hUq : (U : Set Y) ∈ q := ⟨U.1.2, U.2
1286+
simpa [A, hUq] using hxU
1287+
· intro hx
1288+
obtain ⟨U, hxU⟩ := mem_iUnion.1 hx
1289+
by_cases hU : U ∈ q
1290+
· change f x ∈ ⋃ U : {U : b | μ (f ⁻¹' (U : Set Y)) = 0}, (U : Set Y)
1291+
exact mem_iUnion_of_mem ⟨⟨U, hU.1⟩, hU.2⟩ (by simpa [A, hU] using hxU)
1292+
· exfalso
1293+
simp [A, hU] at hxU]
12761294
exact hnull A hA_disj hA_null hA_union
12771295

12781296
omit [PseudoMetrizableSpace Y] in

0 commit comments

Comments
 (0)