# mathlibdocumentation

measure_theory.pi_system

# Induction principles for measurable sets, related to π-systems and λ-systems. #

## Main statements #

• The main theorem of this file is Dynkin's π-λ theorem, which appears here as an induction principle induction_on_inter. Suppose s is a collection of subsets of α such that the intersection of two members of s belongs to s whenever it is nonempty. Let m be the σ-algebra generated by s. In order to check that a predicate C holds on every member of m, it suffices to check that C holds on the members of s and that C is preserved by complementation and disjoint countable unions.

• The proof of this theorem relies on the notion of is_pi_system, i.e., a collection of sets which is closed under binary non-empty intersections. Note that this is a small variation around the usual notion in the literature, which often requires that a π-system is non-empty, and closed also under disjoint intersections. This variation turns out to be convenient for the formalization.

• The proof of Dynkin's π-λ theorem also requires the notion of dynkin_system, i.e., a collection of sets which contains the empty set, is closed under complementation and under countable union of pairwise disjoint sets. The disjointness condition is the only difference with σ-algebras.

• generate_pi_system g gives the minimal π-system containing g. This can be considered a Galois insertion into both measurable spaces and sets.

• generate_from_generate_pi_system_eq proves that if you start from a collection of sets g, take the generated π-system, and then the generated σ-algebra, you get the same result as the σ-algebra generated from g. This is useful because there are connections between independent sets that are π-systems and the generated independent spaces.

• mem_generate_pi_system_Union_elim and mem_generate_pi_system_Union_elim' show that any element of the π-system generated from the union of a set of π-systems can be represented as the intersection of a finite number of elements from these sets.

• pi_Union_Inter defines a new π-system from a family of π-systems π : ι → set (set α) and a set of finsets S : set (finset α). pi_Union_Inter π S is the set of sets that can be written as ⋂ x ∈ t, f x for some t ∈ S and sets f x ∈ π x. If S is union-closed, then it is a π-system. The π-systems used to prove Kolmogorov's 0-1 law will be defined using this mechanism (TODO).

## Implementation details #

• is_pi_system is a predicate, not a type. Thus, we don't explicitly define the galois insertion, nor do we define a complete lattice. In theory, we could define a complete lattice and galois insertion on the subtype corresponding to is_pi_system.
def is_pi_system {α : Type u_1} (C : set (set α)) :
Prop

A π-system is a collection of subsets of α that is closed under binary intersection of non-disjoint sets. Usually it is also required that the collection is nonempty, but we don't do that here.

Equations
theorem is_pi_system.singleton {α : Type u_1} (S : set α) :
theorem is_pi_system.insert_empty {α : Type u_1} {S : set (set α)} (h_pi : is_pi_system S) :
theorem is_pi_system.insert_univ {α : Type u_1} {S : set (set α)} (h_pi : is_pi_system S) :
theorem is_pi_system.comap {α : Type u_1} {β : Type u_2} {S : set (set β)} (h_pi : is_pi_system S) (f : α → β) :
is_pi_system {s : set α | ∃ (t : set β) (H : t S), f ⁻¹' t = s}
theorem is_pi_system_image_Iio {α : Type u_1} [linear_order α] (s : set α) :
theorem is_pi_system_Iio {α : Type u_1} [linear_order α] :
theorem is_pi_system_image_Ioi {α : Type u_1} [linear_order α] (s : set α) :
theorem is_pi_system_Ioi {α : Type u_1} [linear_order α] :
theorem is_pi_system_Ixx_mem {α : Type u_1} [linear_order α] {Ixx : α → α → set α} {p : α → α → Prop} (Hne : ∀ {a b : α}, (Ixx a b).nonemptyp a b) (Hi : ∀ {a₁ b₁ a₂ b₂ : α}, Ixx a₁ b₁ Ixx a₂ b₂ = Ixx a₂) b₂)) (s t : set α) :
is_pi_system {S : set α | ∃ (l : α) (H : l s) (u : α) (H : u t) (hlu : p l u), Ixx l u = S}
theorem is_pi_system_Ixx {α : Type u_1} {ι : Sort u_2} {ι' : Sort u_3} [linear_order α] {Ixx : α → α → set α} {p : α → α → Prop} (Hne : ∀ {a b : α}, (Ixx a b).nonemptyp a b) (Hi : ∀ {a₁ b₁ a₂ b₂ : α}, Ixx a₁ b₁ Ixx a₂ b₂ = Ixx a₂) b₂)) (f : ι → α) (g : ι' → α) :
is_pi_system {S : set α | ∃ (i : ι) (j : ι') (h : p (f i) (g j)), Ixx (f i) (g j) = S}
theorem is_pi_system_Ioo_mem {α : Type u_1} [linear_order α] (s t : set α) :
is_pi_system {S : set α | ∃ (l : α) (H : l s) (u : α) (H : u t) (h : l < u), u = S}
theorem is_pi_system_Ioo {α : Type u_1} {ι : Sort u_2} {ι' : Sort u_3} [linear_order α] (f : ι → α) (g : ι' → α) :
is_pi_system {S : set α | ∃ (l : ι) (u : ι') (h : f l < g u), set.Ioo (f l) (g u) = S}
theorem is_pi_system_Ioc_mem {α : Type u_1} [linear_order α] (s t : set α) :
is_pi_system {S : set α | ∃ (l : α) (H : l s) (u : α) (H : u t) (h : l < u), u = S}
theorem is_pi_system_Ioc {α : Type u_1} {ι : Sort u_2} {ι' : Sort u_3} [linear_order α] (f : ι → α) (g : ι' → α) :
is_pi_system {S : set α | ∃ (i : ι) (j : ι') (h : f i < g j), set.Ioc (f i) (g j) = S}
theorem is_pi_system_Ico_mem {α : Type u_1} [linear_order α] (s t : set α) :
is_pi_system {S : set α | ∃ (l : α) (H : l s) (u : α) (H : u t) (h : l < u), u = S}
theorem is_pi_system_Ico {α : Type u_1} {ι : Sort u_2} {ι' : Sort u_3} [linear_order α] (f : ι → α) (g : ι' → α) :
is_pi_system {S : set α | ∃ (i : ι) (j : ι') (h : f i < g j), set.Ico (f i) (g j) = S}
theorem is_pi_system_Icc_mem {α : Type u_1} [linear_order α] (s t : set α) :
is_pi_system {S : set α | ∃ (l : α) (H : l s) (u : α) (H : u t) (h : l u), u = S}
theorem is_pi_system_Icc {α : Type u_1} {ι : Sort u_2} {ι' : Sort u_3} [linear_order α] (f : ι → α) (g : ι' → α) :
is_pi_system {S : set α | ∃ (i : ι) (j : ι') (h : f i g j), set.Icc (f i) (g j) = S}
inductive generate_pi_system {α : Type u_1} (S : set (set α)) :
set (set α)
• base : ∀ {α : Type u_1} {S : set (set α)} {s : set α}, s S
• inter : ∀ {α : Type u_1} {S : set (set α)} {s t : set α}, (s t).nonempty (s t)

Given a collection S of subsets of α, then generate_pi_system S is the smallest π-system containing S.

theorem is_pi_system_generate_pi_system {α : Type u_1} (S : set (set α)) :
theorem subset_generate_pi_system_self {α : Type u_1} (S : set (set α)) :
theorem generate_pi_system_subset_self {α : Type u_1} {S : set (set α)} (h_S : is_pi_system S) :
theorem generate_pi_system_eq {α : Type u_1} {S : set (set α)} (h_pi : is_pi_system S) :
theorem generate_pi_system_mono {α : Type u_1} {S T : set (set α)} (hST : S T) :
theorem generate_pi_system_measurable_set {α : Type u_1} [M : measurable_space α] {S : set (set α)} (h_meas_S : ∀ (s : set α), s S) (t : set α) (h_in_pi : t ) :
theorem generate_from_measurable_set_of_generate_pi_system {α : Type u_1} {g : set (set α)} (t : set α) (ht : t ) :
theorem generate_from_generate_pi_system_eq {α : Type u_1} {g : set (set α)} :
theorem mem_generate_pi_system_Union_elim {α : Type u_1} {β : Type u_2} {g : β → set (set α)} (h_pi : ∀ (b : β), is_pi_system (g b)) (t : set α) (h_t : t generate_pi_system (⋃ (b : β), g b)) :
∃ (T : finset β) (f : β → set α), (t = ⋂ (b : β) (H : b T), f b) ∀ (b : β), b Tf b g b
theorem mem_generate_pi_system_Union_elim' {α : Type u_1} {β : Type u_2} {g : β → set (set α)} {s : set β} (h_pi : ∀ (b : β), b sis_pi_system (g b)) (t : set α) (h_t : t generate_pi_system (⋃ (b : β) (H : b s), g b)) :
∃ (T : finset β) (f : β → set α), T s (t = ⋂ (b : β) (H : b T), f b) ∀ (b : β), b Tf b g b

### π-system generated by finite intersections of sets of a π-system family #

def pi_Union_Inter {α : Type u_1} {ι : Type u_2} (π : ι → set (set α)) (S : set (finset ι)) :
set (set α)

From a set of finsets S : set (finset ι) and a family of sets of sets π : ι → set (set α), define the set of sets that can be written as ⋂ x ∈ t, f x for some t ∈ S and sets f x ∈ π x.

If S is union-closed and π is a family of π-systems, then it is a π-system. The π-systems used to prove Kolmogorov's 0-1 law are of that form.

Equations
• = {s : set α | ∃ (t : finset ι) (htS : t S) (f : ι → set α) (hf : ∀ (x : ι), x tf x π x), s = ⋂ (x : ι) (H : x t), f x}
theorem is_pi_system_pi_Union_Inter {α : Type u_1} {ι : Type u_2} (π : ι → set (set α)) (hpi : ∀ (x : ι), is_pi_system (π x)) (S : set (finset ι)) (h_sup : sup_closed S) :

If S is union-closed and π is a family of π-systems, then pi_Union_Inter π S is a π-system.

theorem pi_Union_Inter_mono_left {α : Type u_1} {ι : Type u_2} {π π' : ι → set (set α)} (h_le : ∀ (i : ι), π i π' i) (S : set (finset ι)) :
S
theorem generate_from_pi_Union_Inter_le {α : Type u_1} {ι : Type u_2} {m : measurable_space α} (π : ι → set (set α)) (h : ∀ (n : ι), ) (S : set (finset ι)) :
theorem subset_pi_Union_Inter {α : Type u_1} {ι : Type u_2} {π : ι → set (set α)} {S : set (finset ι)} (h_univ : ∀ (i : ι), set.univ π i) {i : ι} {s : finset ι} (hsS : s S) (his : i s) :
π i
theorem mem_pi_Union_Inter_of_measurable_set {α : Type u_1} {ι : Type u_2} (m : ι → ) {S : set (finset ι)} {i : ι} {t : finset ι} (htS : t S) (hit : i t) (s : set α) (hs : measurable_set s) :
s pi_Union_Inter (λ (n : ι), {s : set α | S
theorem le_generate_from_pi_Union_Inter {α : Type u_1} {ι : Type u_2} {π : ι → set (set α)} (S : set (finset ι)) (h_univ : ∀ (n : ι), set.univ π n) {x : ι} {t : finset ι} (htS : t S) (hxt : x t) :
theorem measurable_set_supr_of_mem_pi_Union_Inter {α : Type u_1} {ι : Type u_2} (m : ι → ) (S : set (finset ι)) (t : set α) (ht : t pi_Union_Inter (λ (n : ι), {s : set α | S) :
theorem generate_from_pi_Union_Inter_measurable_space {α : Type u_1} {ι : Type u_2} (m : ι → ) (S : set (finset ι)) :
measurable_space.generate_from (pi_Union_Inter (λ (n : ι), {s : set α | S) = ⨆ (i : ι) (hi : ∃ (p : finset ι) (H : p S), i p), m i

## Dynkin systems and Π-λ theorem #

structure measurable_space.dynkin_system (α : Type u_2) :
Type u_2

A Dynkin system is a collection of subsets of a type α that contains the empty set, is closed under complementation and under countable union of pairwise disjoint sets. The disjointness condition is the only difference with σ-algebras.

The main purpose of Dynkin systems is to provide a powerful induction rule for σ-algebras generated by a collection of sets which is stable under intersection.

A Dynkin system is also known as a "λ-system" or a "d-system".

Instances for measurable_space.dynkin_system
@[ext]
theorem measurable_space.dynkin_system.ext {α : Type u_1} {d₁ d₂ : measurable_space.dynkin_system α} :
(∀ (s : set α), d₁.has s d₂.has s)d₁ = d₂
theorem measurable_space.dynkin_system.has_compl_iff {α : Type u_1} {a : set α} :
d.has a d.has a
theorem measurable_space.dynkin_system.has_univ {α : Type u_1}  :
theorem measurable_space.dynkin_system.has_Union {α : Type u_1} {β : Type u_2} [countable β] {f : β → set α} (hd : pairwise (disjoint on f)) (h : ∀ (i : β), d.has (f i)) :
d.has (⋃ (i : β), f i)
theorem measurable_space.dynkin_system.has_union {α : Type u_1} {s₁ s₂ : set α} (h₁ : d.has s₁) (h₂ : d.has s₂) (h : s₁ s₂ ) :
d.has (s₁ s₂)
theorem measurable_space.dynkin_system.has_diff {α : Type u_1} {s₁ s₂ : set α} (h₁ : d.has s₁) (h₂ : d.has s₂) (h : s₂ s₁) :
d.has (s₁ \ s₂)
@[protected, instance]
def measurable_space.dynkin_system.has_le {α : Type u_1} :
Equations
@[protected, instance]
Equations

Every measurable space (σ-algebra) forms a Dynkin system

Equations
inductive measurable_space.dynkin_system.generate_has {α : Type u_1} (s : set (set α)) :
set α → Prop
• basic : ∀ {α : Type u_1} {s : set (set α)} (t : set α),
• empty : ∀ {α : Type u_1} {s : set (set α)},
• compl : ∀ {α : Type u_1} {s : set (set α)} {a : set α},
• Union : ∀ {α : Type u_1} {s : set (set α)} {f : set α}, pairwise (disjoint on f)(∀ (i : ), (⋃ (i : ), f i)

The least Dynkin system containing a collection of basic sets. This inductive type gives the underlying collection of sets.

theorem measurable_space.dynkin_system.generate_has_compl {α : Type u_1} {C : set (set α)} {s : set α} :
def measurable_space.dynkin_system.generate {α : Type u_1} (s : set (set α)) :

The least Dynkin system containing a collection of basic sets.

Equations
theorem measurable_space.dynkin_system.generate_has_def {α : Type u_1} {C : set (set α)} :
@[protected, instance]
Equations
def measurable_space.dynkin_system.to_measurable_space {α : Type u_1} (h_inter : ∀ (s₁ s₂ : set α), d.has s₁d.has s₂d.has (s₁ s₂)) :

If a Dynkin system is closed under binary intersection, then it forms a σ-algebra.

Equations
theorem measurable_space.dynkin_system.of_measurable_space_to_measurable_space {α : Type u_1} (h_inter : ∀ (s₁ s₂ : set α), d.has s₁d.has s₂d.has (s₁ s₂)) :
def measurable_space.dynkin_system.restrict_on {α : Type u_1} {s : set α} (h : d.has s) :

If s is in a Dynkin system d, we can form the new Dynkin system {s ∩ t | t ∈ d}.

Equations
theorem measurable_space.dynkin_system.generate_le {α : Type u_1} {s : set (set α)} (h : ∀ (t : set α), t sd.has t) :
theorem measurable_space.dynkin_system.generate_has_subset_generate_measurable {α : Type u_1} {C : set (set α)} {s : set α} (hs : s) :
theorem measurable_space.dynkin_system.generate_inter {α : Type u_1} {s : set (set α)} (hs : is_pi_system s) {t₁ t₂ : set α} (ht₁ : t₁) (ht₂ : t₂) :
(t₁ t₂)
theorem measurable_space.dynkin_system.generate_from_eq {α : Type u_1} {s : set (set α)} (hs : is_pi_system s) :

Dynkin's π-λ theorem: Given a collection of sets closed under binary intersections, then the Dynkin system it generates is equal to the σ-algebra it generates. This result is known as the π-λ theorem. A collection of sets closed under binary intersection is called a π-system (often requiring additionnally that is is non-empty, but we drop this condition in the formalization).

theorem measurable_space.induction_on_inter {α : Type u_1} {C : set α → Prop} {s : set (set α)} [m : measurable_space α] (h_eq : m = ) (h_inter : is_pi_system s) (h_empty : C ) (h_basic : ∀ (t : set α), t sC t) (h_compl : ∀ (t : set α), C tC t) (h_union : ∀ (f : set α), pairwise (disjoint on f)(∀ (i : ), measurable_set (f i))(∀ (i : ), C (f i))C (⋃ (i : ), f i)) ⦃t : set α⦄ :
C t