@@ -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+
12511258end measurable_equiv
12521259
12531260namespace 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
12841291end
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 :=
12891296of_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+
12911356end measurable_embedding
12921357
12931358namespace filter
0 commit comments