Skip to content
This repository was archived by the owner on Jul 24, 2024. It is now read-only.

Commit 207cfac

Browse files
feat(measure_theory/measurable_space) add measurable Schroeder-Bernstein (#17988)
Add a version of the Schroeder-Bernstein theorem for measurable spaces, embeddings, and equivalences.
1 parent 026bed6 commit 207cfac

1 file changed

Lines changed: 67 additions & 2 deletions

File tree

src/measure_theory/measurable_space.lean

Lines changed: 67 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1248,11 +1248,18 @@ def pi_equiv_pi_subtype_prod (p : δ' → Prop) [decidable_pred p] :
12481248
measurable_to_fun := measurable_pi_equiv_pi_subtype_prod π p,
12491249
measurable_inv_fun := measurable_pi_equiv_pi_subtype_prod_symm π p }
12501250

1251+
/-- If `s` is a measurable set in a measurable space, that space is equivalent
1252+
to the sum of `s` and `sᶜ`.-/
1253+
def sum_compl {s : set α} [decidable_pred s] (hs : measurable_set s) : s ⊕ (sᶜ : set α) ≃ᵐ α :=
1254+
{ to_equiv := sum_compl s,
1255+
measurable_to_fun := by {apply measurable.sum_elim; exact measurable_subtype_coe},
1256+
measurable_inv_fun := measurable.dite measurable_inl measurable_inr hs }
1257+
12511258
end measurable_equiv
12521259

12531260
namespace measurable_embedding
12541261

1255-
variables [measurable_space α] [measurable_space β] [measurable_space γ] {f : α → β}
1262+
variables [measurable_space α] [measurable_space β] [measurable_space γ] {f : α → β} {g : β → α}
12561263

12571264
/-- A set is equivalent to its image under a function `f` as measurable spaces,
12581265
if `f` is a measurable embedding -/
@@ -1283,11 +1290,69 @@ begin
12831290
exact (measurable_embedding.subtype_coe hf₂).comp e.measurable_embedding
12841291
end
12851292

1286-
lemma of_measurable_inverse {g : β → α} (hf₁ : measurable f)
1293+
lemma of_measurable_inverse (hf₁ : measurable f)
12871294
(hf₂ : measurable_set (range f)) (hg : measurable g)
12881295
(H : left_inverse g f) : measurable_embedding f :=
12891296
of_measurable_inverse_on_range hf₁ hf₂ (hg.comp measurable_subtype_coe) H
12901297

1298+
open_locale classical
1299+
1300+
/-- The **`measurable Schröder-Bernstein Theorem**: Given measurable embeddings
1301+
`α → β` and `β → α`, we can find a measurable equivalence `α ≃ᵐ β`.-/
1302+
noncomputable
1303+
def schroeder_bernstein {f : α → β} {g : β → α}
1304+
(hf : measurable_embedding f)(hg : measurable_embedding g) : α ≃ᵐ β :=
1305+
begin
1306+
let F : set α → set α := λ A, (g '' (f '' A)ᶜ)ᶜ,
1307+
-- We follow the proof of the usual SB theorem in mathlib,
1308+
-- the crux of which is finding a fixed point of this F.
1309+
-- However, we must find this fixed point manually instead of invoking Knaster-Tarski
1310+
-- in order to make sure it is measurable.
1311+
suffices : Σ' A : set α, measurable_set A ∧ F A = A,
1312+
{ rcases this with ⟨A, Ameas, Afp⟩,
1313+
let B := f '' A,
1314+
have Bmeas : measurable_set B := hf.measurable_set_image' Ameas,
1315+
refine (measurable_equiv.sum_compl Ameas).symm.trans
1316+
(measurable_equiv.trans _ (measurable_equiv.sum_compl Bmeas)),
1317+
apply measurable_equiv.sum_congr (hf.equiv_image _),
1318+
have : Aᶜ = g '' Bᶜ,
1319+
{ apply compl_injective,
1320+
rw ← Afp,
1321+
simp, },
1322+
rw this,
1323+
exact (hg.equiv_image _).symm, },
1324+
have Fmono : ∀ {A B}, A ⊆ B → F A ⊆ F B := λ A B hAB,
1325+
compl_subset_compl.mpr $ set.image_subset _ $
1326+
compl_subset_compl.mpr $ set.image_subset _ hAB,
1327+
let X : ℕ → set α := λ n, F^[n] univ,
1328+
refine ⟨Inter X, _, _⟩,
1329+
{ apply measurable_set.Inter,
1330+
intros n,
1331+
induction n with n ih,
1332+
{ exact measurable_set.univ },
1333+
rw [function.iterate_succ', function.comp_apply],
1334+
exact (hg.measurable_set_image' (hf.measurable_set_image' ih).compl).compl, },
1335+
apply subset_antisymm,
1336+
{ apply subset_Inter,
1337+
intros n,
1338+
cases n,
1339+
{ exact subset_univ _ },
1340+
rw [function.iterate_succ', function.comp_apply],
1341+
exact Fmono (Inter_subset _ _ ), },
1342+
rintros x hx ⟨y, hy, rfl⟩,
1343+
rw mem_Inter at hx,
1344+
apply hy,
1345+
rw (inj_on_of_injective hf.injective _).image_Inter_eq,
1346+
swap, { apply_instance },
1347+
rw mem_Inter,
1348+
intro n,
1349+
specialize hx n.succ,
1350+
rw [function.iterate_succ', function.comp_apply] at hx,
1351+
by_contradiction h,
1352+
apply hx,
1353+
exact ⟨y, h, rfl⟩,
1354+
end
1355+
12911356
end measurable_embedding
12921357

12931358
namespace filter

0 commit comments

Comments
 (0)