Measure Theory and Integration

2.2. Measurable Sets🔗

Definition.

We define inductively the notion of a subset A \subseteq \mathbb{R} being (Borel) measurable as follows:

  1. For every a \in \mathbb{R}, the half-line [a,\infty) is measurable.

  2. The empty set \emptyset is measurable.

  3. If A is measurable, then its complement A^c is measurable.

  4. If A_0, A_1, \dots are measurable, then \bigcup_{n \in \mathbb{N}} A_n is measurable.

Lean code
inductive MeasurableSet : Set Prop | ici' : a : , MeasurableSet (Ici a) | empty' : MeasurableSet | compl' : A, MeasurableSet A MeasurableSet A | iUnion' : A : Set , ( n, MeasurableSet (A n)) MeasurableSet ( i, A i)
Lemma.

The empty set and the whole space \mathbb{R} are measurable.

Lean code
@[simp] theorem MeasurableSet.empty : MeasurableSet ( : Set ) := MeasurableSet.empty'
theorem MeasurableSet.univ : MeasurableSet (Set.univ : Set ) := MeasurableSet Set.univ All goals completed! 🐙
Lemma.

Countable unions and intersections of measurable sets are measurable.

Lean code
theorem MeasurableSet.iUnion (A : Set ) (hA : n, MeasurableSet (A n)) : MeasurableSet ( i, A i) := MeasurableSet.iUnion' A hA
theorem MeasurableSet.iInter {A : Set } (hA : n, MeasurableSet (A n)) : MeasurableSet ( n, A n) := A: Set hA: (n : ), MeasurableSet (A n)MeasurableSet (⋂ n, A n) have hEq : ( n, A n) = ( n, (A n)) := A: Set hA: (n : ), MeasurableSet (A n)MeasurableSet (⋂ n, A n) A: Set hA: (n : ), MeasurableSet (A n)x:x n, A n x (⋃ n, (A n)) All goals completed! 🐙 A: Set hA: (n : ), MeasurableSet (A n)hEq: n, A n = (⋃ n, (A n)) := ext fun x => of_eq_true (Eq.trans (congr (congrArg Iff mem_iInter._simp_1) (Eq.trans (congrFun' (congrArg Membership.mem (Eq.trans (compl_iUnion fun i => (A i)) (congrArg Set.iInter (funext fun i => compl_compl (A i))))) x) mem_iInter._simp_1)) (iff_self (∀ (i : ), x A i)))MeasurableSet (⋃ n, (A n)) All goals completed! 🐙
Lemma.

Unions, complements, and intersections of measurable sets are measurable.

Lean code
theorem MeasurableSet.union {A₁ A₂ : Set } (h₁ : MeasurableSet A₁) (h₂ : MeasurableSet A₂) : MeasurableSet (A₁ A₂) := A₁:Set A₂:Set h₁:MeasurableSet A₁h₂:MeasurableSet A₂MeasurableSet (A₁ A₂) A₁:Set A₂:Set h₁:MeasurableSet A₁h₂:MeasurableSet A₂MeasurableSet (⋃ b, bif b then A₁ else A₂) All goals completed! 🐙
theorem MeasurableSet.compl {A : Set } (hA : MeasurableSet A) : MeasurableSet A := MeasurableSet.compl' A hA
theorem MeasurableSet.inter {A₁ A₂ : Set } (h₁ : MeasurableSet A₁) (h₂ : MeasurableSet A₂) : MeasurableSet (A₁ A₂) := A₁:Set A₂:Set h₁:MeasurableSet A₁h₂:MeasurableSet A₂MeasurableSet (A₁ A₂) A₁:Set A₂:Set h₁:MeasurableSet A₁h₂:MeasurableSet A₂MeasurableSet (A₁ A₂) All goals completed! 🐙
Lemma.

The intervals [a,\infty), (-\infty,a), (a,\infty), (-\infty,a], (a,b], [a,b), [a,b], (a,b) and the singleton \{a\} are measurable.

Lean code
theorem measurableSet_Ici (a : ) : MeasurableSet (Set.Ici a) := a:MeasurableSet (Ici a) All goals completed! 🐙
theorem measurableSet_Iio (a : ) : MeasurableSet (Set.Iio a) := a:MeasurableSet (Iio a) a:MeasurableSet (Ici a) a:MeasurableSet (Ici a) All goals completed! 🐙
theorem measurableSet_Ioi (a : ) : MeasurableSet (Set.Ioi a) := a:MeasurableSet (Ioi a) a:A:Set haA:A Ioi ahAc:A.CountablehAU: i A, Ioi i = i Ioi a, Ioi iMeasurableSet (Ioi a) have : Set.Ioi a = b A, Set.Ici b := a:MeasurableSet (Ioi a) refine Subset.antisymm ?_ <| iUnion₂_subset fun b hb a:A:Set haA:A Ioi ahAc:A.CountablehAU: i A, Ioi i = i Ioi a, Ioi ib:hb:b AIci b Ioi a All goals completed! 🐙 a:A:Set haA:A Ioi ahAc:A.CountablehAU: i A, Ioi i = i Ioi a, Ioi iIoi a i A, Ioi i a:A:Set haA:A Ioi ahAc:A.CountablehAU: i A, Ioi i = i Ioi a, Ioi i (x : ), a < x i, a < i i < x intro b a:A:Set haA:A Ioi ahAc:A.CountablehAU: i A, Ioi i = i Ioi a, Ioi ib:hab:a < b i, a < i i < b All goals completed! 🐙 a:A:Set haA:A Ioi ahAc:A.CountablehAU: i A, Ioi i = i Ioi a, Ioi ithis:Ioi a = b A, Ici b := Subset.antisymm (Subset.trans (Eq.mpr (id (Eq.trans (congrArg (Subset (Ioi a)) (Eq.trans hAU (congrArg iUnion (funext fun i => iUnion_congr_Prop (Iff.of_eq measurableSet_Ioi._simp_1) fun x => Eq.refl (Ioi i))))) (forall_congr fun x => implies_congr measurableSet_Ioi._simp_1 (Eq.trans measurableSet_Ioi._simp_2 (congrArg Exists (funext fun i => Eq.trans measurableSet_Ioi._simp_2 (Eq.trans (propext (exists_prop_congr (fun h => Iff.of_eq measurableSet_Ioi._simp_1) (Iff.of_eq (Eq.refl (a < i))))) measurableSet_Ioi._simp_3))))))) fun b hab => exists_between hab) (iUnion₂_mono fun x x_1 => Ioi_subset_Ici_self)) (iUnion₂_subset fun b hb => measurableSet_Ioi._proof_1 a A haA b hb)MeasurableSet (⋃ b A, Ici b) a:A:Set haA:A Ioi ahAc:A.CountablehAU: i A, Ioi i = i Ioi a, Ioi ithis:Ioi a = b A, Ici b := Subset.antisymm (Subset.trans (Eq.mpr (id (Eq.trans (congrArg (Subset (Ioi a)) (Eq.trans hAU (congrArg iUnion (funext fun i => iUnion_congr_Prop (Iff.of_eq measurableSet_Ioi._simp_1) fun x => Eq.refl (Ioi i))))) (forall_congr fun x => implies_congr measurableSet_Ioi._simp_1 (Eq.trans measurableSet_Ioi._simp_2 (congrArg Exists (funext fun i => Eq.trans measurableSet_Ioi._simp_2 (Eq.trans (propext (exists_prop_congr (fun h => Iff.of_eq measurableSet_Ioi._simp_1) (Iff.of_eq (Eq.refl (a < i))))) measurableSet_Ioi._simp_3))))))) fun b hab => exists_between hab) (iUnion₂_mono fun x x_1 => Ioi_subset_Ici_self)) (iUnion₂_subset fun b hb => measurableSet_Ioi._proof_1 a A haA b hb) b A, MeasurableSet (Ici b) intro a a✝:A:Set haA:A Ioi ahAc:A.CountablehAU: i A, Ioi i = i Ioi a, Ioi ithis:Ioi a = b A, Ici b := Subset.antisymm (Subset.trans (Eq.mpr (id (Eq.trans (congrArg (Subset (Ioi a)) (Eq.trans hAU (congrArg iUnion (funext fun i => iUnion_congr_Prop (Iff.of_eq measurableSet_Ioi._simp_1) fun x => Eq.refl (Ioi i))))) (forall_congr fun x => implies_congr measurableSet_Ioi._simp_1 (Eq.trans measurableSet_Ioi._simp_2 (congrArg Exists (funext fun i => Eq.trans measurableSet_Ioi._simp_2 (Eq.trans (propext (exists_prop_congr (fun h => Iff.of_eq measurableSet_Ioi._simp_1) (Iff.of_eq (Eq.refl (a < i))))) measurableSet_Ioi._simp_3))))))) fun b hab => exists_between hab) (iUnion₂_mono fun x x_1 => Ioi_subset_Ici_self)) (iUnion₂_subset fun b hb => measurableSet_Ioi._proof_1 a A haA b hb)a:ha:a AMeasurableSet (Ici a) All goals completed! 🐙
theorem measurableSet_Iic (a : ) : MeasurableSet (Set.Iic a) := a:MeasurableSet (Iic a) a:MeasurableSet (Ioi a) a:MeasurableSet (Ioi a) All goals completed! 🐙
theorem measurableSet_Ioc (a b : ) : MeasurableSet (Set.Ioc a b) := a:b:MeasurableSet (Ioc a b) have : Set.Ioc a b = Set.Ioi a Set.Iic b := a:b:MeasurableSet (Ioc a b) All goals completed! 🐙 a:b:this:Ioc a b = Ioi a Iic b := measurableSet_Ioc._proof_1 a bMeasurableSet (Ioi a Iic b) All goals completed! 🐙
theorem measurableSet_Ico (a b : ) : MeasurableSet (Set.Ico a b) := a:b:MeasurableSet (Ico a b) have : Set.Ico a b = Set.Ici a Set.Iio b := a:b:MeasurableSet (Ico a b) All goals completed! 🐙 a:b:this:Ico a b = Ici a Iio b := measurableSet_Ico._proof_1 a bMeasurableSet (Ici a Iio b) All goals completed! 🐙
theorem measurableSet_Icc (a b : ) : MeasurableSet (Set.Icc a b) := a:b:MeasurableSet (Icc a b) have : Set.Icc a b = Set.Iic b Set.Ici a := a:b:MeasurableSet (Icc a b) All goals completed! 🐙 a:b:this:Icc a b = Iic b Ici a := measurableSet_Icc._proof_1 a bMeasurableSet (Iic b Ici a) All goals completed! 🐙
theorem measurableSet_Ioo (a b : ) : MeasurableSet (Set.Ioo a b) := a:b:MeasurableSet (Ioo a b) have : Set.Ioo a b = Set.Ioi a Set.Iio b := a:b:MeasurableSet (Ioo a b) All goals completed! 🐙 a:b:this:Ioo a b = Ioi a Iio b := measurableSet_Ioo._proof_1 a bMeasurableSet (Ioi a Iio b) All goals completed! 🐙
theorem measurableSet_singleton (a : ) : MeasurableSet ({a} : Set ) := a:MeasurableSet {a} have : ({a} : Set ) = Set.Iic a Set.Ici a := a:MeasurableSet {a} All goals completed! 🐙 a:this:{a} = Iic a Ici a := measurableSet_singleton._proof_1 aMeasurableSet (Iic a Ici a) All goals completed! 🐙