measure_theory.pi_system
⟷
Mathlib.MeasureTheory.PiSystem
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl, Martin Zinkevich, Rémy Degenne
-/
import Logic.Encodable.Lattice
-import MeasureTheory.MeasurableSpaceDef
+import MeasureTheory.MeasurableSpace.Defs
#align_import measure_theory.pi_system from "leanprover-community/mathlib"@"34ee86e6a59d911a8e4f89b68793ee7577ae79c7"
@@ -63,7 +63,7 @@ open MeasurableSpace Set
open scoped Classical MeasureTheory
-/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (s t «expr ∈ » C) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:642:2: warning: expanding binder collection (s t «expr ∈ » C) -/
#print IsPiSystem /-
/-- 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
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -124,8 +124,8 @@ theorem IsPiSystem.comap {α β} {S : Set (Set β)} (h_pi : IsPiSystem S) (f :
rw [← Set.preimage_inter] at hst ⊢
refine' ⟨s ∩ t, h_pi s hs_mem t ht_mem _, rfl⟩
by_contra
- rw [Set.not_nonempty_iff_eq_empty] at h
- rw [h] at hst
+ rw [Set.not_nonempty_iff_eq_empty] at h
+ rw [h] at hst
simpa using hst
#align is_pi_system.comap IsPiSystem.comap
-/
@@ -370,7 +370,7 @@ theorem mem_generatePiSystem_iUnion_elim {α β} {g : β → Set (Set α)} (h_pi
exact Set.inter_subset_inter (Set.biInter_subset_of_mem hbs) (Set.biInter_subset_of_mem hbt)
· exact h_s b hbs
· exact h_t' b hbt
- · rw [Finset.mem_union] at h_b
+ · rw [Finset.mem_union] at h_b
apply False.elim (h_b.elim hbs hbt)
#align mem_generate_pi_system_Union_elim mem_generatePiSystem_iUnion_elim
-/
@@ -404,7 +404,7 @@ theorem mem_generatePiSystem_iUnion_elim' {α β} {g : β → Set (Set α)} {s :
apply id
· intro b h_b
simp_rw [Finset.mem_image, exists_prop, Subtype.exists, exists_and_right, exists_eq_right] at
- h_b
+ h_b
cases h_b
have h_b_alt : b = (Subtype.mk b h_b_w).val := rfl
rw [h_b_alt, subtype.val_injective.extend_apply]
@@ -437,7 +437,7 @@ theorem piiUnionInter_singleton (π : ι → Set (Set α)) (i : ι) :
simp only [piiUnionInter, exists_prop, mem_union]
refine' ⟨_, fun h => _⟩
· rintro ⟨t, hti, f, hfπ, rfl⟩
- simp only [subset_singleton_iff, Finset.mem_coe] at hti
+ simp only [subset_singleton_iff, Finset.mem_coe] at hti
by_cases hi : i ∈ t
· have ht_eq_i : t = {i} := by ext1 x; rw [Finset.mem_singleton];
exact ⟨fun h => hti x h, fun h => h.symm ▸ hi⟩
@@ -451,7 +451,7 @@ theorem piiUnionInter_singleton (π : ι → Set (Set α)) (i : ι) :
· cases' h with hs hs
· refine' ⟨{i}, _, fun _ => s, ⟨fun x hx => _, _⟩⟩
· rw [Finset.coe_singleton]
- · rw [Finset.mem_singleton] at hx
+ · rw [Finset.mem_singleton] at hx
rwa [hx]
· simp only [Finset.mem_singleton, Inter_Inter_eq_left]
· refine' ⟨∅, _⟩
@@ -489,7 +489,7 @@ theorem generateFrom_piiUnionInter_singleton_left (s : ι → Set α) (S : Set
exact ⟨m, hI hm, (hf m hm).symm⟩
· rintro _ ⟨k, hk, rfl⟩
refine' ⟨{k}, fun m hm => _, s, fun i hi => _, _⟩
- · rw [Finset.mem_coe, Finset.mem_singleton] at hm
+ · rw [Finset.mem_coe, Finset.mem_singleton] at hm
rwa [hm]
· exact Set.mem_singleton _
· simp only [Finset.mem_singleton, Set.iInter_iInter_eq_left]
@@ -518,16 +518,16 @@ theorem isPiSystem_piiUnionInter (π : ι → Set (Set α)) (hpi : ∀ x, IsPiSy
exacts [⟨h.1 i h_1, h.2 i h_2⟩, ⟨h.1 i h_1, Set.mem_univ _⟩, ⟨Set.mem_univ _, h.2 i h_2⟩,
⟨Set.mem_univ _, Set.mem_univ _⟩]
· specialize h i (Or.inl hi1)
- rw [if_pos hi1] at h
+ rw [if_pos hi1] at h
exact h.1
· specialize h i (Or.inr hi2)
- rw [if_pos hi2] at h
+ rw [if_pos hi2] at h
exact h.2
refine' ⟨fun n hn => _, h_inter_eq⟩
simp_rw [g]
split_ifs with hn1 hn2
· refine' hpi n (f1 n) (hf1m n hn1) (f2 n) (hf2m n hn2) (Set.nonempty_iff_ne_empty.2 fun h => _)
- rw [h_inter_eq] at h_nonempty
+ rw [h_inter_eq] at h_nonempty
suffices h_empty : (⋂ i ∈ p1 ∪ p2, g i) = ∅
exact (set.not_nonempty_iff_eq_empty.mpr h_empty) h_nonempty
refine' le_antisymm (Set.iInter_subset_of_subset n _) (Set.empty_subset _)
@@ -569,7 +569,7 @@ theorem generateFrom_piiUnionInter_le {m : MeasurableSpace α} (π : ι → Set
theorem subset_piiUnionInter {π : ι → Set (Set α)} {S : Set ι} {i : ι} (his : i ∈ S) :
π i ⊆ piiUnionInter π S :=
by
- have h_ss : {i} ⊆ S := by intro j hj; rw [mem_singleton_iff] at hj ; rwa [hj]
+ have h_ss : {i} ⊆ S := by intro j hj; rw [mem_singleton_iff] at hj; rwa [hj]
refine' subset.trans _ (piiUnionInter_mono_right h_ss)
rw [piiUnionInter_singleton]
exact subset_union_left _ _
@@ -871,7 +871,7 @@ theorem induction_on_inter {C : Set α → Prop} {s : Set (Set α)} [m : Measura
have eq : MeasurableSet = DynkinSystem.GenerateHas s := by
rw [h_eq, dynkin_system.generate_from_eq h_inter]; rfl
fun t ht =>
- have : DynkinSystem.GenerateHas s t := by rwa [Eq] at ht
+ have : DynkinSystem.GenerateHas s t := by rwa [Eq] at ht
this.recOn h_basic h_empty (fun t ht => h_compl t <| by rw [Eq]; exact ht) fun f hf ht =>
h_union f hf fun i => by rw [Eq]; exact ht _
#align measurable_space.induction_on_inter MeasurableSpace.induction_on_inter
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,8 +3,8 @@ Copyright (c) 2021 Martin Zinkevich. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl, Martin Zinkevich, Rémy Degenne
-/
-import Mathbin.Logic.Encodable.Lattice
-import Mathbin.MeasureTheory.MeasurableSpaceDef
+import Logic.Encodable.Lattice
+import MeasureTheory.MeasurableSpaceDef
#align_import measure_theory.pi_system from "leanprover-community/mathlib"@"34ee86e6a59d911a8e4f89b68793ee7577ae79c7"
@@ -63,7 +63,7 @@ open MeasurableSpace Set
open scoped Classical MeasureTheory
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (s t «expr ∈ » C) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:641:2: warning: expanding binder collection (s t «expr ∈ » C) -/
#print IsPiSystem /-
/-- 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
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,15 +2,12 @@
Copyright (c) 2021 Martin Zinkevich. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl, Martin Zinkevich, Rémy Degenne
-
-! This file was ported from Lean 3 source module measure_theory.pi_system
-! leanprover-community/mathlib commit 34ee86e6a59d911a8e4f89b68793ee7577ae79c7
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Logic.Encodable.Lattice
import Mathbin.MeasureTheory.MeasurableSpaceDef
+#align_import measure_theory.pi_system from "leanprover-community/mathlib"@"34ee86e6a59d911a8e4f89b68793ee7577ae79c7"
+
/-!
# Induction principles for measurable sets, related to π-systems and λ-systems.
@@ -66,7 +63,7 @@ open MeasurableSpace Set
open scoped Classical MeasureTheory
-/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (s t «expr ∈ » C) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (s t «expr ∈ » C) -/
#print IsPiSystem /-
/-- 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
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -119,6 +119,7 @@ theorem IsPiSystem.insert_univ {α} {S : Set (Set α)} (h_pi : IsPiSystem S) :
#align is_pi_system.insert_univ IsPiSystem.insert_univ
-/
+#print IsPiSystem.comap /-
theorem IsPiSystem.comap {α β} {S : Set (Set β)} (h_pi : IsPiSystem S) (f : α → β) :
IsPiSystem {s : Set α | ∃ t ∈ S, f ⁻¹' t = s} :=
by
@@ -130,7 +131,9 @@ theorem IsPiSystem.comap {α β} {S : Set (Set β)} (h_pi : IsPiSystem S) (f :
rw [h] at hst
simpa using hst
#align is_pi_system.comap IsPiSystem.comap
+-/
+#print isPiSystem_iUnion_of_directed_le /-
theorem isPiSystem_iUnion_of_directed_le {α ι} (p : ι → Set (Set α)) (hp_pi : ∀ n, IsPiSystem (p n))
(hp_directed : Directed (· ≤ ·) p) : IsPiSystem (⋃ n, p n) :=
by
@@ -141,11 +144,14 @@ theorem isPiSystem_iUnion_of_directed_le {α ι} (p : ι → Set (Set α)) (hp_p
obtain ⟨k, hpnk, hpmk⟩ : ∃ k, p n ≤ p k ∧ p m ≤ p k := hp_directed n m
exact ⟨k, hp_pi k t1 (hpnk ht1) t2 (hpmk ht2) h⟩
#align is_pi_system_Union_of_directed_le isPiSystem_iUnion_of_directed_le
+-/
+#print isPiSystem_iUnion_of_monotone /-
theorem isPiSystem_iUnion_of_monotone {α ι} [SemilatticeSup ι] (p : ι → Set (Set α))
(hp_pi : ∀ n, IsPiSystem (p n)) (hp_mono : Monotone p) : IsPiSystem (⋃ n, p n) :=
isPiSystem_iUnion_of_directed_le p hp_pi (Monotone.directed_le hp_mono)
#align is_pi_system_Union_of_monotone isPiSystem_iUnion_of_monotone
+-/
section Order
@@ -177,6 +183,7 @@ theorem isPiSystem_Ioi : IsPiSystem (range Ioi : Set (Set α)) :=
#align is_pi_system_Ioi isPiSystem_Ioi
-/
+#print isPiSystem_Ixx_mem /-
theorem isPiSystem_Ixx_mem {Ixx : α → α → Set α} {p : α → α → Prop}
(Hne : ∀ {a b}, (Ixx a b).Nonempty → p a b)
(Hi : ∀ {a₁ b₁ a₂ b₂}, Ixx a₁ b₁ ∩ Ixx a₂ b₂ = Ixx (max a₁ a₂) (min b₁ b₂)) (s t : Set α) :
@@ -186,53 +193,72 @@ theorem isPiSystem_Ixx_mem {Ixx : α → α → Set α} {p : α → α → Prop}
simp only [Hi, ← sup_eq_max, ← inf_eq_min]
exact fun H => ⟨l₁ ⊔ l₂, sup_ind l₁ l₂ hls₁ hls₂, u₁ ⊓ u₂, inf_ind u₁ u₂ hut₁ hut₂, Hne H, rfl⟩
#align is_pi_system_Ixx_mem isPiSystem_Ixx_mem
+-/
+#print isPiSystem_Ixx /-
theorem isPiSystem_Ixx {Ixx : α → α → Set α} {p : α → α → Prop}
(Hne : ∀ {a b}, (Ixx a b).Nonempty → p a b)
(Hi : ∀ {a₁ b₁ a₂ b₂}, Ixx a₁ b₁ ∩ Ixx a₂ b₂ = Ixx (max a₁ a₂) (min b₁ b₂)) (f : ι → α)
(g : ι' → α) : @IsPiSystem α {S | ∃ (i j : _) (h : p (f i) (g j)), Ixx (f i) (g j) = S} := by
simpa only [exists_range_iff] using isPiSystem_Ixx_mem (@Hne) (@Hi) (range f) (range g)
#align is_pi_system_Ixx isPiSystem_Ixx
+-/
+#print isPiSystem_Ioo_mem /-
theorem isPiSystem_Ioo_mem (s t : Set α) :
IsPiSystem {S | ∃ l ∈ s, ∃ u ∈ t, ∃ h : l < u, Ioo l u = S} :=
isPiSystem_Ixx_mem (fun a b ⟨x, hax, hxb⟩ => hax.trans hxb) (fun _ _ _ _ => Ioo_inter_Ioo) s t
#align is_pi_system_Ioo_mem isPiSystem_Ioo_mem
+-/
+#print isPiSystem_Ioo /-
theorem isPiSystem_Ioo (f : ι → α) (g : ι' → α) :
@IsPiSystem α {S | ∃ (l u : _) (h : f l < g u), Ioo (f l) (g u) = S} :=
isPiSystem_Ixx (fun a b ⟨x, hax, hxb⟩ => hax.trans hxb) (fun _ _ _ _ => Ioo_inter_Ioo) f g
#align is_pi_system_Ioo isPiSystem_Ioo
+-/
+#print isPiSystem_Ioc_mem /-
theorem isPiSystem_Ioc_mem (s t : Set α) :
IsPiSystem {S | ∃ l ∈ s, ∃ u ∈ t, ∃ h : l < u, Ioc l u = S} :=
isPiSystem_Ixx_mem (fun a b ⟨x, hax, hxb⟩ => hax.trans_le hxb) (fun _ _ _ _ => Ioc_inter_Ioc) s t
#align is_pi_system_Ioc_mem isPiSystem_Ioc_mem
+-/
+#print isPiSystem_Ioc /-
theorem isPiSystem_Ioc (f : ι → α) (g : ι' → α) :
@IsPiSystem α {S | ∃ (i j : _) (h : f i < g j), Ioc (f i) (g j) = S} :=
isPiSystem_Ixx (fun a b ⟨x, hax, hxb⟩ => hax.trans_le hxb) (fun _ _ _ _ => Ioc_inter_Ioc) f g
#align is_pi_system_Ioc isPiSystem_Ioc
+-/
+#print isPiSystem_Ico_mem /-
theorem isPiSystem_Ico_mem (s t : Set α) :
IsPiSystem {S | ∃ l ∈ s, ∃ u ∈ t, ∃ h : l < u, Ico l u = S} :=
isPiSystem_Ixx_mem (fun a b ⟨x, hax, hxb⟩ => hax.trans_lt hxb) (fun _ _ _ _ => Ico_inter_Ico) s t
#align is_pi_system_Ico_mem isPiSystem_Ico_mem
+-/
+#print isPiSystem_Ico /-
theorem isPiSystem_Ico (f : ι → α) (g : ι' → α) :
@IsPiSystem α {S | ∃ (i j : _) (h : f i < g j), Ico (f i) (g j) = S} :=
isPiSystem_Ixx (fun a b ⟨x, hax, hxb⟩ => hax.trans_lt hxb) (fun _ _ _ _ => Ico_inter_Ico) f g
#align is_pi_system_Ico isPiSystem_Ico
+-/
+#print isPiSystem_Icc_mem /-
theorem isPiSystem_Icc_mem (s t : Set α) :
IsPiSystem {S | ∃ l ∈ s, ∃ u ∈ t, ∃ h : l ≤ u, Icc l u = S} :=
isPiSystem_Ixx_mem (fun a b => nonempty_Icc.1) (fun _ _ _ _ => Icc_inter_Icc) s t
#align is_pi_system_Icc_mem isPiSystem_Icc_mem
+-/
+#print isPiSystem_Icc /-
theorem isPiSystem_Icc (f : ι → α) (g : ι' → α) :
@IsPiSystem α {S | ∃ (i j : _) (h : f i ≤ g j), Icc (f i) (g j) = S} :=
isPiSystem_Ixx (fun a b => nonempty_Icc.1) (fun _ _ _ _ => Icc_inter_Icc) f g
#align is_pi_system_Icc isPiSystem_Icc
+-/
end Order
@@ -315,6 +341,7 @@ theorem generateFrom_generatePiSystem_eq {α} {g : Set (Set α)} :
#align generate_from_generate_pi_system_eq generateFrom_generatePiSystem_eq
-/
+#print mem_generatePiSystem_iUnion_elim /-
/- Every element of the π-system generated by the union of a family of π-systems
is a finite intersection of elements from the π-systems.
For an indexed union version, see `mem_generate_pi_system_Union_elim'`. -/
@@ -349,7 +376,9 @@ theorem mem_generatePiSystem_iUnion_elim {α β} {g : β → Set (Set α)} (h_pi
· rw [Finset.mem_union] at h_b
apply False.elim (h_b.elim hbs hbt)
#align mem_generate_pi_system_Union_elim mem_generatePiSystem_iUnion_elim
+-/
+#print mem_generatePiSystem_iUnion_elim' /-
/- Every element of the π-system generated by an indexed union of a family of π-systems
is a finite intersection of elements from the π-systems.
For a total union version, see `mem_generate_pi_system_Union_elim`. -/
@@ -385,6 +414,7 @@ theorem mem_generatePiSystem_iUnion_elim' {α β} {g : β → Set (Set α)} {s :
apply h_t'
apply h_b_h
#align mem_generate_pi_system_Union_elim' mem_generatePiSystem_iUnion_elim'
+-/
section UnionInter
@@ -403,6 +433,7 @@ def piiUnionInter (π : ι → Set (Set α)) (S : Set ι) : Set (Set α) :=
#align pi_Union_Inter piiUnionInter
-/
+#print piiUnionInter_singleton /-
theorem piiUnionInter_singleton (π : ι → Set (Set α)) (i : ι) :
piiUnionInter π {i} = π i ∪ {univ} := by
ext1 s
@@ -431,7 +462,9 @@ theorem piiUnionInter_singleton (π : ι → Set (Set α)) (i : ι) :
imp_true_iff, Finset.not_mem_empty, Inter_false, Inter_univ, true_and_iff,
exists_const] using hs
#align pi_Union_Inter_singleton piiUnionInter_singleton
+-/
+#print piiUnionInter_singleton_left /-
theorem piiUnionInter_singleton_left (s : ι → Set α) (S : Set ι) :
piiUnionInter (fun i => ({s i} : Set (Set α))) S =
{s' : Set α | ∃ (t : Finset ι) (htS : ↑t ⊆ S), s' = ⋂ i ∈ t, s i} :=
@@ -447,7 +480,9 @@ theorem piiUnionInter_singleton_left (s : ι → Set α) (S : Set ι) :
⟨fun h hit => by rw [← hft_eq i hit]; exact h hit, fun h hit => by rw [hft_eq i hit];
exact h hit⟩
#align pi_Union_Inter_singleton_left piiUnionInter_singleton_left
+-/
+#print generateFrom_piiUnionInter_singleton_left /-
theorem generateFrom_piiUnionInter_singleton_left (s : ι → Set α) (S : Set ι) :
generateFrom (piiUnionInter (fun k => {s k}) S) = generateFrom {t | ∃ k ∈ S, s k = t} :=
by
@@ -462,7 +497,9 @@ theorem generateFrom_piiUnionInter_singleton_left (s : ι → Set α) (S : Set
· exact Set.mem_singleton _
· simp only [Finset.mem_singleton, Set.iInter_iInter_eq_left]
#align generate_from_pi_Union_Inter_singleton_left generateFrom_piiUnionInter_singleton_left
+-/
+#print isPiSystem_piiUnionInter /-
/-- If `π` is a family of π-systems, then `pi_Union_Inter π S` is a π-system. -/
theorem isPiSystem_piiUnionInter (π : ι → Set (Set α)) (hpi : ∀ x, IsPiSystem (π x)) (S : Set ι) :
IsPiSystem (piiUnionInter π S) :=
@@ -504,17 +541,23 @@ theorem isPiSystem_piiUnionInter (π : ι → Set (Set α)) (hpi : ∀ x, IsPiSy
· simp [hf2m n h]
· exact absurd hn (by simp [hn1, h])
#align is_pi_system_pi_Union_Inter isPiSystem_piiUnionInter
+-/
+#print piiUnionInter_mono_left /-
theorem piiUnionInter_mono_left {π π' : ι → Set (Set α)} (h_le : ∀ i, π i ⊆ π' i) (S : Set ι) :
piiUnionInter π S ⊆ piiUnionInter π' S := fun s ⟨t, ht_mem, ft, hft_mem_pi, h_eq⟩ =>
⟨t, ht_mem, ft, fun x hxt => h_le x (hft_mem_pi x hxt), h_eq⟩
#align pi_Union_Inter_mono_left piiUnionInter_mono_left
+-/
+#print piiUnionInter_mono_right /-
theorem piiUnionInter_mono_right {π : ι → Set (Set α)} {S T : Set ι} (hST : S ⊆ T) :
piiUnionInter π S ⊆ piiUnionInter π T := fun s ⟨t, ht_mem, ft, hft_mem_pi, h_eq⟩ =>
⟨t, ht_mem.trans hST, ft, hft_mem_pi, h_eq⟩
#align pi_Union_Inter_mono_right piiUnionInter_mono_right
+-/
+#print generateFrom_piiUnionInter_le /-
theorem generateFrom_piiUnionInter_le {m : MeasurableSpace α} (π : ι → Set (Set α))
(h : ∀ n, generateFrom (π n) ≤ m) (S : Set ι) : generateFrom (piiUnionInter π S) ≤ m :=
by
@@ -523,7 +566,9 @@ theorem generateFrom_piiUnionInter_le {m : MeasurableSpace α} (π : ι → Set
refine' Finset.measurableSet_biInter _ fun x hx_mem => (h x) _ _
exact measurable_set_generate_from (hft_mem_pi x hx_mem)
#align generate_from_pi_Union_Inter_le generateFrom_piiUnionInter_le
+-/
+#print subset_piiUnionInter /-
theorem subset_piiUnionInter {π : ι → Set (Set α)} {S : Set ι} {i : ι} (his : i ∈ S) :
π i ⊆ piiUnionInter π S :=
by
@@ -532,18 +577,24 @@ theorem subset_piiUnionInter {π : ι → Set (Set α)} {S : Set ι} {i : ι} (h
rw [piiUnionInter_singleton]
exact subset_union_left _ _
#align subset_pi_Union_Inter subset_piiUnionInter
+-/
+#print mem_piiUnionInter_of_measurableSet /-
theorem mem_piiUnionInter_of_measurableSet (m : ι → MeasurableSpace α) {S : Set ι} {i : ι}
(hiS : i ∈ S) (s : Set α) (hs : measurable_set[m i] s) :
s ∈ piiUnionInter (fun n => {s | measurable_set[m n] s}) S :=
subset_piiUnionInter hiS hs
#align mem_pi_Union_Inter_of_measurable_set mem_piiUnionInter_of_measurableSet
+-/
+#print le_generateFrom_piiUnionInter /-
theorem le_generateFrom_piiUnionInter {π : ι → Set (Set α)} (S : Set ι) {x : ι} (hxS : x ∈ S) :
generateFrom (π x) ≤ generateFrom (piiUnionInter π S) :=
generateFrom_mono (subset_piiUnionInter hxS)
#align le_generate_from_pi_Union_Inter le_generateFrom_piiUnionInter
+-/
+#print measurableSet_iSup_of_mem_piiUnionInter /-
theorem measurableSet_iSup_of_mem_piiUnionInter (m : ι → MeasurableSpace α) (S : Set ι) (t : Set α)
(ht : t ∈ piiUnionInter (fun n => {s | measurable_set[m n] s}) S) :
measurable_set[⨆ i ∈ S, m i] t :=
@@ -554,7 +605,9 @@ theorem measurableSet_iSup_of_mem_piiUnionInter (m : ι → MeasurableSpace α)
have hi' : i ∈ S := hpt hi
exact le_iSup₂ i hi'
#align measurable_set_supr_of_mem_pi_Union_Inter measurableSet_iSup_of_mem_piiUnionInter
+-/
+#print generateFrom_piiUnionInter_measurableSet /-
theorem generateFrom_piiUnionInter_measurableSet (m : ι → MeasurableSpace α) (S : Set ι) :
generateFrom (piiUnionInter (fun n => {s | measurable_set[m n] s}) S) = ⨆ i ∈ S, m i :=
by
@@ -565,6 +618,7 @@ theorem generateFrom_piiUnionInter_measurableSet (m : ι → MeasurableSpace α)
rw [← @generate_from_measurable_set α (m i)]
exact generate_from_mono (mem_piiUnionInter_of_measurableSet m hi)
#align generate_from_pi_Union_Inter_measurable_set generateFrom_piiUnionInter_measurableSet
+-/
end UnionInter
@@ -607,15 +661,18 @@ theorem ext : ∀ {d₁ d₂ : DynkinSystem α}, (∀ s : Set α, d₁.Has s ↔
variable (d : DynkinSystem α)
+#print MeasurableSpace.DynkinSystem.has_compl_iff /-
theorem has_compl_iff {a} : d.Has (aᶜ) ↔ d.Has a :=
⟨fun h => by simpa using d.has_compl h, fun h => d.HasCompl h⟩
#align measurable_space.dynkin_system.has_compl_iff MeasurableSpace.DynkinSystem.has_compl_iff
+-/
#print MeasurableSpace.DynkinSystem.has_univ /-
theorem has_univ : d.Has univ := by simpa using d.has_compl d.has_empty
#align measurable_space.dynkin_system.has_univ MeasurableSpace.DynkinSystem.has_univ
-/
+#print MeasurableSpace.DynkinSystem.has_iUnion /-
theorem has_iUnion {β} [Countable β] {f : β → Set α} (hd : Pairwise (Disjoint on f))
(h : ∀ i, d.Has (f i)) : d.Has (⋃ i, f i) := by cases nonempty_encodable β;
rw [← Encodable.iUnion_decode₂];
@@ -623,18 +680,23 @@ theorem has_iUnion {β} [Countable β] {f : β → Set α} (hd : Pairwise (Disjo
d.has_Union_nat (Encodable.iUnion_decode₂_disjoint_on hd) fun n =>
Encodable.iUnion_decode₂_cases d.has_empty h
#align measurable_space.dynkin_system.has_Union MeasurableSpace.DynkinSystem.has_iUnion
+-/
+#print MeasurableSpace.DynkinSystem.has_union /-
theorem has_union {s₁ s₂ : Set α} (h₁ : d.Has s₁) (h₂ : d.Has s₂) (h : Disjoint s₁ s₂) :
d.Has (s₁ ∪ s₂) := by rw [union_eq_Union];
exact d.has_Union (pairwise_disjoint_on_bool.2 h) (Bool.forall_bool.2 ⟨h₂, h₁⟩)
#align measurable_space.dynkin_system.has_union MeasurableSpace.DynkinSystem.has_union
+-/
+#print MeasurableSpace.DynkinSystem.has_diff /-
theorem has_diff {s₁ s₂ : Set α} (h₁ : d.Has s₁) (h₂ : d.Has s₂) (h : s₂ ⊆ s₁) : d.Has (s₁ \ s₂) :=
by
apply d.has_compl_iff.1
simp [diff_eq, compl_inter]
exact d.has_union (d.has_compl h₁) h₂ (disjoint_compl_left.mono_right h)
#align measurable_space.dynkin_system.has_diff MeasurableSpace.DynkinSystem.has_diff
+-/
instance : LE (DynkinSystem α) where le m₁ m₂ := m₁.Has ≤ m₂.Has
@@ -682,9 +744,11 @@ inductive GenerateHas (s : Set (Set α)) : Set α → Prop
#align measurable_space.dynkin_system.generate_has MeasurableSpace.DynkinSystem.GenerateHas
-/
+#print MeasurableSpace.DynkinSystem.generateHas_compl /-
theorem generateHas_compl {C : Set (Set α)} {s : Set α} : GenerateHas C (sᶜ) ↔ GenerateHas C s := by
refine' ⟨_, generate_has.compl⟩; intro h; convert generate_has.compl h; simp
#align measurable_space.dynkin_system.generate_has_compl MeasurableSpace.DynkinSystem.generateHas_compl
+-/
#print MeasurableSpace.DynkinSystem.generate /-
/-- The least Dynkin system containing a collection of basic sets. -/
@@ -706,6 +770,7 @@ theorem generateHas_def {C : Set (Set α)} : (generate C).Has = GenerateHas C :=
instance : Inhabited (DynkinSystem α) :=
⟨generate univ⟩
+#print MeasurableSpace.DynkinSystem.toMeasurableSpace /-
/-- If a Dynkin system is closed under binary intersection, then it forms a `σ`-algebra. -/
def toMeasurableSpace (h_inter : ∀ s₁ s₂, d.Has s₁ → d.Has s₂ → d.Has (s₁ ∩ s₂))
where
@@ -718,12 +783,15 @@ def toMeasurableSpace (h_inter : ∀ s₁ s₂, d.Has s₁ → d.Has s₂ → d.
d.has_Union (disjoint_disjointed _) fun n =>
disjointedRec (fun t i h => h_inter _ _ h <| d.has_compl <| hf i) (hf n)
#align measurable_space.dynkin_system.to_measurable_space MeasurableSpace.DynkinSystem.toMeasurableSpace
+-/
+#print MeasurableSpace.DynkinSystem.ofMeasurableSpace_toMeasurableSpace /-
theorem ofMeasurableSpace_toMeasurableSpace
(h_inter : ∀ s₁ s₂, d.Has s₁ → d.Has s₂ → d.Has (s₁ ∩ s₂)) :
ofMeasurableSpace (d.toMeasurableSpace h_inter) = d :=
ext fun s => Iff.rfl
#align measurable_space.dynkin_system.of_measurable_space_to_measurable_space MeasurableSpace.DynkinSystem.ofMeasurableSpace_toMeasurableSpace
+-/
#print MeasurableSpace.DynkinSystem.restrictOn /-
/-- If `s` is in a Dynkin system `d`, we can form the new Dynkin system `{s ∩ t | t ∈ d}`. -/
@@ -758,6 +826,7 @@ theorem generate_has_subset_generate_measurable {C : Set (Set α)} {s : Set α}
#align measurable_space.dynkin_system.generate_has_subset_generate_measurable MeasurableSpace.DynkinSystem.generate_has_subset_generate_measurable
-/
+#print MeasurableSpace.DynkinSystem.generate_inter /-
theorem generate_inter {s : Set (Set α)} (hs : IsPiSystem s) {t₁ t₂ : Set α}
(ht₁ : (generate s).Has t₁) (ht₂ : (generate s).Has t₂) : (generate s).Has (t₁ ∩ t₂) :=
have : generate s ≤ (generate s).restrictOn ht₂ :=
@@ -772,6 +841,7 @@ theorem generate_inter {s : Set (Set α)} (hs : IsPiSystem s) {t₁ t₂ : Set
show (generate s).Has (s₁ ∩ t₂) by rwa [inter_comm]
this _ ht₁
#align measurable_space.dynkin_system.generate_inter MeasurableSpace.DynkinSystem.generate_inter
+-/
#print MeasurableSpace.DynkinSystem.generateFrom_eq /-
/-- **Dynkin's π-λ theorem**:
@@ -793,6 +863,7 @@ theorem generateFrom_eq {s : Set (Set α)} (hs : IsPiSystem s) :
end DynkinSystem
+#print MeasurableSpace.induction_on_inter /-
theorem induction_on_inter {C : Set α → Prop} {s : Set (Set α)} [m : MeasurableSpace α]
(h_eq : m = generateFrom s) (h_inter : IsPiSystem s) (h_empty : C ∅) (h_basic : ∀ t ∈ s, C t)
(h_compl : ∀ t, MeasurableSet t → C t → C (tᶜ))
@@ -807,6 +878,7 @@ theorem induction_on_inter {C : Set α → Prop} {s : Set (Set α)} [m : Measura
this.recOn h_basic h_empty (fun t ht => h_compl t <| by rw [Eq]; exact ht) fun f hf ht =>
h_union f hf fun i => by rw [Eq]; exact ht _
#align measurable_space.induction_on_inter MeasurableSpace.induction_on_inter
+-/
end MeasurableSpace
mathlib commit https://github.com/leanprover-community/mathlib/commit/31c24aa72e7b3e5ed97a8412470e904f82b81004
@@ -66,7 +66,7 @@ open MeasurableSpace Set
open scoped Classical MeasureTheory
-/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (s t «expr ∈ » C) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:638:2: warning: expanding binder collection (s t «expr ∈ » C) -/
#print IsPiSystem /-
/-- 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
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -80,7 +80,7 @@ namespace MeasurableSpace
#print MeasurableSpace.isPiSystem_measurableSet /-
theorem isPiSystem_measurableSet {α : Type _} [MeasurableSpace α] :
- IsPiSystem { s : Set α | MeasurableSet s } := fun s hs t ht _ => hs.inter ht
+ IsPiSystem {s : Set α | MeasurableSet s} := fun s hs t ht _ => hs.inter ht
#align measurable_space.is_pi_system_measurable_set MeasurableSpace.isPiSystem_measurableSet
-/
@@ -120,7 +120,7 @@ theorem IsPiSystem.insert_univ {α} {S : Set (Set α)} (h_pi : IsPiSystem S) :
-/
theorem IsPiSystem.comap {α β} {S : Set (Set β)} (h_pi : IsPiSystem S) (f : α → β) :
- IsPiSystem { s : Set α | ∃ t ∈ S, f ⁻¹' t = s } :=
+ IsPiSystem {s : Set α | ∃ t ∈ S, f ⁻¹' t = s} :=
by
rintro _ ⟨s, hs_mem, rfl⟩ _ ⟨t, ht_mem, rfl⟩ hst
rw [← Set.preimage_inter] at hst ⊢
@@ -180,7 +180,7 @@ theorem isPiSystem_Ioi : IsPiSystem (range Ioi : Set (Set α)) :=
theorem isPiSystem_Ixx_mem {Ixx : α → α → Set α} {p : α → α → Prop}
(Hne : ∀ {a b}, (Ixx a b).Nonempty → p a b)
(Hi : ∀ {a₁ b₁ a₂ b₂}, Ixx a₁ b₁ ∩ Ixx a₂ b₂ = Ixx (max a₁ a₂) (min b₁ b₂)) (s t : Set α) :
- IsPiSystem { S | ∃ l ∈ s, ∃ u ∈ t, ∃ hlu : p l u, Ixx l u = S } :=
+ IsPiSystem {S | ∃ l ∈ s, ∃ u ∈ t, ∃ hlu : p l u, Ixx l u = S} :=
by
rintro _ ⟨l₁, hls₁, u₁, hut₁, hlu₁, rfl⟩ _ ⟨l₂, hls₂, u₂, hut₂, hlu₂, rfl⟩
simp only [Hi, ← sup_eq_max, ← inf_eq_min]
@@ -190,47 +190,47 @@ theorem isPiSystem_Ixx_mem {Ixx : α → α → Set α} {p : α → α → Prop}
theorem isPiSystem_Ixx {Ixx : α → α → Set α} {p : α → α → Prop}
(Hne : ∀ {a b}, (Ixx a b).Nonempty → p a b)
(Hi : ∀ {a₁ b₁ a₂ b₂}, Ixx a₁ b₁ ∩ Ixx a₂ b₂ = Ixx (max a₁ a₂) (min b₁ b₂)) (f : ι → α)
- (g : ι' → α) : @IsPiSystem α { S | ∃ (i j : _) (h : p (f i) (g j)), Ixx (f i) (g j) = S } := by
+ (g : ι' → α) : @IsPiSystem α {S | ∃ (i j : _) (h : p (f i) (g j)), Ixx (f i) (g j) = S} := by
simpa only [exists_range_iff] using isPiSystem_Ixx_mem (@Hne) (@Hi) (range f) (range g)
#align is_pi_system_Ixx isPiSystem_Ixx
theorem isPiSystem_Ioo_mem (s t : Set α) :
- IsPiSystem { S | ∃ l ∈ s, ∃ u ∈ t, ∃ h : l < u, Ioo l u = S } :=
+ IsPiSystem {S | ∃ l ∈ s, ∃ u ∈ t, ∃ h : l < u, Ioo l u = S} :=
isPiSystem_Ixx_mem (fun a b ⟨x, hax, hxb⟩ => hax.trans hxb) (fun _ _ _ _ => Ioo_inter_Ioo) s t
#align is_pi_system_Ioo_mem isPiSystem_Ioo_mem
theorem isPiSystem_Ioo (f : ι → α) (g : ι' → α) :
- @IsPiSystem α { S | ∃ (l u : _) (h : f l < g u), Ioo (f l) (g u) = S } :=
+ @IsPiSystem α {S | ∃ (l u : _) (h : f l < g u), Ioo (f l) (g u) = S} :=
isPiSystem_Ixx (fun a b ⟨x, hax, hxb⟩ => hax.trans hxb) (fun _ _ _ _ => Ioo_inter_Ioo) f g
#align is_pi_system_Ioo isPiSystem_Ioo
theorem isPiSystem_Ioc_mem (s t : Set α) :
- IsPiSystem { S | ∃ l ∈ s, ∃ u ∈ t, ∃ h : l < u, Ioc l u = S } :=
+ IsPiSystem {S | ∃ l ∈ s, ∃ u ∈ t, ∃ h : l < u, Ioc l u = S} :=
isPiSystem_Ixx_mem (fun a b ⟨x, hax, hxb⟩ => hax.trans_le hxb) (fun _ _ _ _ => Ioc_inter_Ioc) s t
#align is_pi_system_Ioc_mem isPiSystem_Ioc_mem
theorem isPiSystem_Ioc (f : ι → α) (g : ι' → α) :
- @IsPiSystem α { S | ∃ (i j : _) (h : f i < g j), Ioc (f i) (g j) = S } :=
+ @IsPiSystem α {S | ∃ (i j : _) (h : f i < g j), Ioc (f i) (g j) = S} :=
isPiSystem_Ixx (fun a b ⟨x, hax, hxb⟩ => hax.trans_le hxb) (fun _ _ _ _ => Ioc_inter_Ioc) f g
#align is_pi_system_Ioc isPiSystem_Ioc
theorem isPiSystem_Ico_mem (s t : Set α) :
- IsPiSystem { S | ∃ l ∈ s, ∃ u ∈ t, ∃ h : l < u, Ico l u = S } :=
+ IsPiSystem {S | ∃ l ∈ s, ∃ u ∈ t, ∃ h : l < u, Ico l u = S} :=
isPiSystem_Ixx_mem (fun a b ⟨x, hax, hxb⟩ => hax.trans_lt hxb) (fun _ _ _ _ => Ico_inter_Ico) s t
#align is_pi_system_Ico_mem isPiSystem_Ico_mem
theorem isPiSystem_Ico (f : ι → α) (g : ι' → α) :
- @IsPiSystem α { S | ∃ (i j : _) (h : f i < g j), Ico (f i) (g j) = S } :=
+ @IsPiSystem α {S | ∃ (i j : _) (h : f i < g j), Ico (f i) (g j) = S} :=
isPiSystem_Ixx (fun a b ⟨x, hax, hxb⟩ => hax.trans_lt hxb) (fun _ _ _ _ => Ico_inter_Ico) f g
#align is_pi_system_Ico isPiSystem_Ico
theorem isPiSystem_Icc_mem (s t : Set α) :
- IsPiSystem { S | ∃ l ∈ s, ∃ u ∈ t, ∃ h : l ≤ u, Icc l u = S } :=
+ IsPiSystem {S | ∃ l ∈ s, ∃ u ∈ t, ∃ h : l ≤ u, Icc l u = S} :=
isPiSystem_Ixx_mem (fun a b => nonempty_Icc.1) (fun _ _ _ _ => Icc_inter_Icc) s t
#align is_pi_system_Icc_mem isPiSystem_Icc_mem
theorem isPiSystem_Icc (f : ι → α) (g : ι' → α) :
- @IsPiSystem α { S | ∃ (i j : _) (h : f i ≤ g j), Icc (f i) (g j) = S } :=
+ @IsPiSystem α {S | ∃ (i j : _) (h : f i ≤ g j), Icc (f i) (g j) = S} :=
isPiSystem_Ixx (fun a b => nonempty_Icc.1) (fun _ _ _ _ => Icc_inter_Icc) f g
#align is_pi_system_Icc isPiSystem_Icc
@@ -398,9 +398,8 @@ variable {α ι : Type _}
define the set of sets that can be written as `⋂ x ∈ t, f x` for some finset `t ⊆ S` and sets
`f x ∈ π x`. If `π` is a family of π-systems, then it is a π-system. -/
def piiUnionInter (π : ι → Set (Set α)) (S : Set ι) : Set (Set α) :=
- { s : Set α |
- ∃ (t : Finset ι) (htS : ↑t ⊆ S) (f : ι → Set α) (hf : ∀ x, x ∈ t → f x ∈ π x),
- s = ⋂ x ∈ t, f x }
+ {s : Set α |
+ ∃ (t : Finset ι) (htS : ↑t ⊆ S) (f : ι → Set α) (hf : ∀ x, x ∈ t → f x ∈ π x), s = ⋂ x ∈ t, f x}
#align pi_Union_Inter piiUnionInter
-/
@@ -435,7 +434,7 @@ theorem piiUnionInter_singleton (π : ι → Set (Set α)) (i : ι) :
theorem piiUnionInter_singleton_left (s : ι → Set α) (S : Set ι) :
piiUnionInter (fun i => ({s i} : Set (Set α))) S =
- { s' : Set α | ∃ (t : Finset ι) (htS : ↑t ⊆ S), s' = ⋂ i ∈ t, s i } :=
+ {s' : Set α | ∃ (t : Finset ι) (htS : ↑t ⊆ S), s' = ⋂ i ∈ t, s i} :=
by
ext1 s'
simp_rw [piiUnionInter, Set.mem_singleton_iff, exists_prop, Set.mem_setOf_eq]
@@ -450,7 +449,7 @@ theorem piiUnionInter_singleton_left (s : ι → Set α) (S : Set ι) :
#align pi_Union_Inter_singleton_left piiUnionInter_singleton_left
theorem generateFrom_piiUnionInter_singleton_left (s : ι → Set α) (S : Set ι) :
- generateFrom (piiUnionInter (fun k => {s k}) S) = generateFrom { t | ∃ k ∈ S, s k = t } :=
+ generateFrom (piiUnionInter (fun k => {s k}) S) = generateFrom {t | ∃ k ∈ S, s k = t} :=
by
refine' le_antisymm (generate_from_le _) (generate_from_mono _)
· rintro _ ⟨I, hI, f, hf, rfl⟩
@@ -536,7 +535,7 @@ theorem subset_piiUnionInter {π : ι → Set (Set α)} {S : Set ι} {i : ι} (h
theorem mem_piiUnionInter_of_measurableSet (m : ι → MeasurableSpace α) {S : Set ι} {i : ι}
(hiS : i ∈ S) (s : Set α) (hs : measurable_set[m i] s) :
- s ∈ piiUnionInter (fun n => { s | measurable_set[m n] s }) S :=
+ s ∈ piiUnionInter (fun n => {s | measurable_set[m n] s}) S :=
subset_piiUnionInter hiS hs
#align mem_pi_Union_Inter_of_measurable_set mem_piiUnionInter_of_measurableSet
@@ -546,7 +545,7 @@ theorem le_generateFrom_piiUnionInter {π : ι → Set (Set α)} (S : Set ι) {x
#align le_generate_from_pi_Union_Inter le_generateFrom_piiUnionInter
theorem measurableSet_iSup_of_mem_piiUnionInter (m : ι → MeasurableSpace α) (S : Set ι) (t : Set α)
- (ht : t ∈ piiUnionInter (fun n => { s | measurable_set[m n] s }) S) :
+ (ht : t ∈ piiUnionInter (fun n => {s | measurable_set[m n] s}) S) :
measurable_set[⨆ i ∈ S, m i] t :=
by
rcases ht with ⟨pt, hpt, ft, ht_m, rfl⟩
@@ -557,7 +556,7 @@ theorem measurableSet_iSup_of_mem_piiUnionInter (m : ι → MeasurableSpace α)
#align measurable_set_supr_of_mem_pi_Union_Inter measurableSet_iSup_of_mem_piiUnionInter
theorem generateFrom_piiUnionInter_measurableSet (m : ι → MeasurableSpace α) (S : Set ι) :
- generateFrom (piiUnionInter (fun n => { s | measurable_set[m n] s }) S) = ⨆ i ∈ S, m i :=
+ generateFrom (piiUnionInter (fun n => {s | measurable_set[m n] s}) S) = ⨆ i ∈ S, m i :=
by
refine' le_antisymm _ _
· rw [← @generate_from_measurable_set α (⨆ i ∈ S, m i)]
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -123,11 +123,11 @@ theorem IsPiSystem.comap {α β} {S : Set (Set β)} (h_pi : IsPiSystem S) (f :
IsPiSystem { s : Set α | ∃ t ∈ S, f ⁻¹' t = s } :=
by
rintro _ ⟨s, hs_mem, rfl⟩ _ ⟨t, ht_mem, rfl⟩ hst
- rw [← Set.preimage_inter] at hst⊢
+ rw [← Set.preimage_inter] at hst ⊢
refine' ⟨s ∩ t, h_pi s hs_mem t ht_mem _, rfl⟩
by_contra
- rw [Set.not_nonempty_iff_eq_empty] at h
- rw [h] at hst
+ rw [Set.not_nonempty_iff_eq_empty] at h
+ rw [h] at hst
simpa using hst
#align is_pi_system.comap IsPiSystem.comap
@@ -135,7 +135,7 @@ theorem isPiSystem_iUnion_of_directed_le {α ι} (p : ι → Set (Set α)) (hp_p
(hp_directed : Directed (· ≤ ·) p) : IsPiSystem (⋃ n, p n) :=
by
intro t1 ht1 t2 ht2 h
- rw [Set.mem_iUnion] at ht1 ht2⊢
+ rw [Set.mem_iUnion] at ht1 ht2 ⊢
cases' ht1 with n ht1
cases' ht2 with m ht2
obtain ⟨k, hpnk, hpmk⟩ : ∃ k, p n ≤ p k ∧ p m ≤ p k := hp_directed n m
@@ -190,7 +190,7 @@ theorem isPiSystem_Ixx_mem {Ixx : α → α → Set α} {p : α → α → Prop}
theorem isPiSystem_Ixx {Ixx : α → α → Set α} {p : α → α → Prop}
(Hne : ∀ {a b}, (Ixx a b).Nonempty → p a b)
(Hi : ∀ {a₁ b₁ a₂ b₂}, Ixx a₁ b₁ ∩ Ixx a₂ b₂ = Ixx (max a₁ a₂) (min b₁ b₂)) (f : ι → α)
- (g : ι' → α) : @IsPiSystem α { S | ∃ (i j : _)(h : p (f i) (g j)), Ixx (f i) (g j) = S } := by
+ (g : ι' → α) : @IsPiSystem α { S | ∃ (i j : _) (h : p (f i) (g j)), Ixx (f i) (g j) = S } := by
simpa only [exists_range_iff] using isPiSystem_Ixx_mem (@Hne) (@Hi) (range f) (range g)
#align is_pi_system_Ixx isPiSystem_Ixx
@@ -200,7 +200,7 @@ theorem isPiSystem_Ioo_mem (s t : Set α) :
#align is_pi_system_Ioo_mem isPiSystem_Ioo_mem
theorem isPiSystem_Ioo (f : ι → α) (g : ι' → α) :
- @IsPiSystem α { S | ∃ (l u : _)(h : f l < g u), Ioo (f l) (g u) = S } :=
+ @IsPiSystem α { S | ∃ (l u : _) (h : f l < g u), Ioo (f l) (g u) = S } :=
isPiSystem_Ixx (fun a b ⟨x, hax, hxb⟩ => hax.trans hxb) (fun _ _ _ _ => Ioo_inter_Ioo) f g
#align is_pi_system_Ioo isPiSystem_Ioo
@@ -210,7 +210,7 @@ theorem isPiSystem_Ioc_mem (s t : Set α) :
#align is_pi_system_Ioc_mem isPiSystem_Ioc_mem
theorem isPiSystem_Ioc (f : ι → α) (g : ι' → α) :
- @IsPiSystem α { S | ∃ (i j : _)(h : f i < g j), Ioc (f i) (g j) = S } :=
+ @IsPiSystem α { S | ∃ (i j : _) (h : f i < g j), Ioc (f i) (g j) = S } :=
isPiSystem_Ixx (fun a b ⟨x, hax, hxb⟩ => hax.trans_le hxb) (fun _ _ _ _ => Ioc_inter_Ioc) f g
#align is_pi_system_Ioc isPiSystem_Ioc
@@ -220,7 +220,7 @@ theorem isPiSystem_Ico_mem (s t : Set α) :
#align is_pi_system_Ico_mem isPiSystem_Ico_mem
theorem isPiSystem_Ico (f : ι → α) (g : ι' → α) :
- @IsPiSystem α { S | ∃ (i j : _)(h : f i < g j), Ico (f i) (g j) = S } :=
+ @IsPiSystem α { S | ∃ (i j : _) (h : f i < g j), Ico (f i) (g j) = S } :=
isPiSystem_Ixx (fun a b ⟨x, hax, hxb⟩ => hax.trans_lt hxb) (fun _ _ _ _ => Ico_inter_Ico) f g
#align is_pi_system_Ico isPiSystem_Ico
@@ -230,7 +230,7 @@ theorem isPiSystem_Icc_mem (s t : Set α) :
#align is_pi_system_Icc_mem isPiSystem_Icc_mem
theorem isPiSystem_Icc (f : ι → α) (g : ι' → α) :
- @IsPiSystem α { S | ∃ (i j : _)(h : f i ≤ g j), Icc (f i) (g j) = S } :=
+ @IsPiSystem α { S | ∃ (i j : _) (h : f i ≤ g j), Icc (f i) (g j) = S } :=
isPiSystem_Ixx (fun a b => nonempty_Icc.1) (fun _ _ _ _ => Icc_inter_Icc) f g
#align is_pi_system_Icc isPiSystem_Icc
@@ -320,7 +320,7 @@ is a finite intersection of elements from the π-systems.
For an indexed union version, see `mem_generate_pi_system_Union_elim'`. -/
theorem mem_generatePiSystem_iUnion_elim {α β} {g : β → Set (Set α)} (h_pi : ∀ b, IsPiSystem (g b))
(t : Set α) (h_t : t ∈ generatePiSystem (⋃ b, g b)) :
- ∃ (T : Finset β)(f : β → Set α), (t = ⋂ b ∈ T, f b) ∧ ∀ b ∈ T, f b ∈ g b :=
+ ∃ (T : Finset β) (f : β → Set α), (t = ⋂ b ∈ T, f b) ∧ ∀ b ∈ T, f b ∈ g b :=
by
induction' h_t with s h_s s t' h_gen_s h_gen_t' h_nonempty h_s h_t'
· rcases h_s with ⟨t', ⟨⟨b, rfl⟩, h_s_in_t'⟩⟩
@@ -338,7 +338,7 @@ theorem mem_generatePiSystem_iUnion_elim {α β} {g : β → Set (Set α)} (h_pi
constructor <;> intro h1 b <;> by_cases hbs : b ∈ T_s <;> by_cases hbt : b ∈ T_t' <;>
specialize h1 b <;>
simp only [hbs, hbt, if_true, if_false, true_imp_iff, and_self_iff, false_imp_iff,
- and_true_iff, true_and_iff] at h1⊢
+ and_true_iff, true_and_iff] at h1 ⊢
all_goals exact h1
intro b h_b
split_ifs with hbs hbt hbt
@@ -346,7 +346,7 @@ theorem mem_generatePiSystem_iUnion_elim {α β} {g : β → Set (Set α)} (h_pi
exact Set.inter_subset_inter (Set.biInter_subset_of_mem hbs) (Set.biInter_subset_of_mem hbt)
· exact h_s b hbs
· exact h_t' b hbt
- · rw [Finset.mem_union] at h_b
+ · rw [Finset.mem_union] at h_b
apply False.elim (h_b.elim hbs hbt)
#align mem_generate_pi_system_Union_elim mem_generatePiSystem_iUnion_elim
@@ -355,7 +355,7 @@ is a finite intersection of elements from the π-systems.
For a total union version, see `mem_generate_pi_system_Union_elim`. -/
theorem mem_generatePiSystem_iUnion_elim' {α β} {g : β → Set (Set α)} {s : Set β}
(h_pi : ∀ b ∈ s, IsPiSystem (g b)) (t : Set α) (h_t : t ∈ generatePiSystem (⋃ b ∈ s, g b)) :
- ∃ (T : Finset β)(f : β → Set α), ↑T ⊆ s ∧ (t = ⋂ b ∈ T, f b) ∧ ∀ b ∈ T, f b ∈ g b :=
+ ∃ (T : Finset β) (f : β → Set α), ↑T ⊆ s ∧ (t = ⋂ b ∈ T, f b) ∧ ∀ b ∈ T, f b ∈ g b :=
by
have : t ∈ generatePiSystem (⋃ b : Subtype s, (g ∘ Subtype.val) b) :=
by
@@ -378,7 +378,7 @@ theorem mem_generatePiSystem_iUnion_elim' {α β} {g : β → Set (Set α)} {s :
apply id
· intro b h_b
simp_rw [Finset.mem_image, exists_prop, Subtype.exists, exists_and_right, exists_eq_right] at
- h_b
+ h_b
cases h_b
have h_b_alt : b = (Subtype.mk b h_b_w).val := rfl
rw [h_b_alt, subtype.val_injective.extend_apply]
@@ -399,7 +399,8 @@ define the set of sets that can be written as `⋂ x ∈ t, f x` for some finset
`f x ∈ π x`. If `π` is a family of π-systems, then it is a π-system. -/
def piiUnionInter (π : ι → Set (Set α)) (S : Set ι) : Set (Set α) :=
{ s : Set α |
- ∃ (t : Finset ι)(htS : ↑t ⊆ S)(f : ι → Set α)(hf : ∀ x, x ∈ t → f x ∈ π x), s = ⋂ x ∈ t, f x }
+ ∃ (t : Finset ι) (htS : ↑t ⊆ S) (f : ι → Set α) (hf : ∀ x, x ∈ t → f x ∈ π x),
+ s = ⋂ x ∈ t, f x }
#align pi_Union_Inter piiUnionInter
-/
@@ -409,7 +410,7 @@ theorem piiUnionInter_singleton (π : ι → Set (Set α)) (i : ι) :
simp only [piiUnionInter, exists_prop, mem_union]
refine' ⟨_, fun h => _⟩
· rintro ⟨t, hti, f, hfπ, rfl⟩
- simp only [subset_singleton_iff, Finset.mem_coe] at hti
+ simp only [subset_singleton_iff, Finset.mem_coe] at hti
by_cases hi : i ∈ t
· have ht_eq_i : t = {i} := by ext1 x; rw [Finset.mem_singleton];
exact ⟨fun h => hti x h, fun h => h.symm ▸ hi⟩
@@ -423,7 +424,7 @@ theorem piiUnionInter_singleton (π : ι → Set (Set α)) (i : ι) :
· cases' h with hs hs
· refine' ⟨{i}, _, fun _ => s, ⟨fun x hx => _, _⟩⟩
· rw [Finset.coe_singleton]
- · rw [Finset.mem_singleton] at hx
+ · rw [Finset.mem_singleton] at hx
rwa [hx]
· simp only [Finset.mem_singleton, Inter_Inter_eq_left]
· refine' ⟨∅, _⟩
@@ -434,7 +435,7 @@ theorem piiUnionInter_singleton (π : ι → Set (Set α)) (i : ι) :
theorem piiUnionInter_singleton_left (s : ι → Set α) (S : Set ι) :
piiUnionInter (fun i => ({s i} : Set (Set α))) S =
- { s' : Set α | ∃ (t : Finset ι)(htS : ↑t ⊆ S), s' = ⋂ i ∈ t, s i } :=
+ { s' : Set α | ∃ (t : Finset ι) (htS : ↑t ⊆ S), s' = ⋂ i ∈ t, s i } :=
by
ext1 s'
simp_rw [piiUnionInter, Set.mem_singleton_iff, exists_prop, Set.mem_setOf_eq]
@@ -457,7 +458,7 @@ theorem generateFrom_piiUnionInter_singleton_left (s : ι → Set α) (S : Set
exact ⟨m, hI hm, (hf m hm).symm⟩
· rintro _ ⟨k, hk, rfl⟩
refine' ⟨{k}, fun m hm => _, s, fun i hi => _, _⟩
- · rw [Finset.mem_coe, Finset.mem_singleton] at hm
+ · rw [Finset.mem_coe, Finset.mem_singleton] at hm
rwa [hm]
· exact Set.mem_singleton _
· simp only [Finset.mem_singleton, Set.iInter_iInter_eq_left]
@@ -481,19 +482,19 @@ theorem isPiSystem_piiUnionInter (π : ι → Set (Set α)) (hpi : ∀ x, IsPiSy
simp only [inf_eq_inter, mem_inter_iff, mem_Inter, Finset.mem_union]
refine' ⟨fun h i hi_mem_union => _, fun h => ⟨fun i hi1 => _, fun i hi2 => _⟩⟩
· split_ifs
- exacts[⟨h.1 i h_1, h.2 i h_2⟩, ⟨h.1 i h_1, Set.mem_univ _⟩, ⟨Set.mem_univ _, h.2 i h_2⟩,
+ exacts [⟨h.1 i h_1, h.2 i h_2⟩, ⟨h.1 i h_1, Set.mem_univ _⟩, ⟨Set.mem_univ _, h.2 i h_2⟩,
⟨Set.mem_univ _, Set.mem_univ _⟩]
· specialize h i (Or.inl hi1)
- rw [if_pos hi1] at h
+ rw [if_pos hi1] at h
exact h.1
· specialize h i (Or.inr hi2)
- rw [if_pos hi2] at h
+ rw [if_pos hi2] at h
exact h.2
refine' ⟨fun n hn => _, h_inter_eq⟩
simp_rw [g]
split_ifs with hn1 hn2
· refine' hpi n (f1 n) (hf1m n hn1) (f2 n) (hf2m n hn2) (Set.nonempty_iff_ne_empty.2 fun h => _)
- rw [h_inter_eq] at h_nonempty
+ rw [h_inter_eq] at h_nonempty
suffices h_empty : (⋂ i ∈ p1 ∪ p2, g i) = ∅
exact (set.not_nonempty_iff_eq_empty.mpr h_empty) h_nonempty
refine' le_antisymm (Set.iInter_subset_of_subset n _) (Set.empty_subset _)
@@ -527,7 +528,7 @@ theorem generateFrom_piiUnionInter_le {m : MeasurableSpace α} (π : ι → Set
theorem subset_piiUnionInter {π : ι → Set (Set α)} {S : Set ι} {i : ι} (his : i ∈ S) :
π i ⊆ piiUnionInter π S :=
by
- have h_ss : {i} ⊆ S := by intro j hj; rw [mem_singleton_iff] at hj; rwa [hj]
+ have h_ss : {i} ⊆ S := by intro j hj; rw [mem_singleton_iff] at hj ; rwa [hj]
refine' subset.trans _ (piiUnionInter_mono_right h_ss)
rw [piiUnionInter_singleton]
exact subset_union_left _ _
@@ -803,7 +804,7 @@ theorem induction_on_inter {C : Set α → Prop} {s : Set (Set α)} [m : Measura
have eq : MeasurableSet = DynkinSystem.GenerateHas s := by
rw [h_eq, dynkin_system.generate_from_eq h_inter]; rfl
fun t ht =>
- have : DynkinSystem.GenerateHas s t := by rwa [Eq] at ht
+ have : DynkinSystem.GenerateHas s t := by rwa [Eq] at ht
this.recOn h_basic h_empty (fun t ht => h_compl t <| by rw [Eq]; exact ht) fun f hf ht =>
h_union f hf fun i => by rw [Eq]; exact ht _
#align measurable_space.induction_on_inter MeasurableSpace.induction_on_inter
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -64,7 +64,7 @@ import Mathbin.MeasureTheory.MeasurableSpaceDef
open MeasurableSpace Set
-open Classical MeasureTheory
+open scoped Classical MeasureTheory
/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (s t «expr ∈ » C) -/
#print IsPiSystem /-
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -119,12 +119,6 @@ theorem IsPiSystem.insert_univ {α} {S : Set (Set α)} (h_pi : IsPiSystem S) :
#align is_pi_system.insert_univ IsPiSystem.insert_univ
-/
-/- warning: is_pi_system.comap -> IsPiSystem.comap is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {S : Set.{u2} (Set.{u2} β)}, (IsPiSystem.{u2} β S) -> (forall (f : α -> β), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (s : Set.{u1} α) => Exists.{succ u2} (Set.{u2} β) (fun (t : Set.{u2} β) => Exists.{0} (Membership.Mem.{u2, u2} (Set.{u2} β) (Set.{u2} (Set.{u2} β)) (Set.hasMem.{u2} (Set.{u2} β)) t S) (fun (H : Membership.Mem.{u2, u2} (Set.{u2} β) (Set.{u2} (Set.{u2} β)) (Set.hasMem.{u2} (Set.{u2} β)) t S) => Eq.{succ u1} (Set.{u1} α) (Set.preimage.{u1, u2} α β f t) s)))))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {S : Set.{u1} (Set.{u1} β)}, (IsPiSystem.{u1} β S) -> (forall (f : α -> β), IsPiSystem.{u2} α (setOf.{u2} (Set.{u2} α) (fun (s : Set.{u2} α) => Exists.{succ u1} (Set.{u1} β) (fun (t : Set.{u1} β) => And (Membership.mem.{u1, u1} (Set.{u1} β) (Set.{u1} (Set.{u1} β)) (Set.instMembershipSet.{u1} (Set.{u1} β)) t S) (Eq.{succ u2} (Set.{u2} α) (Set.preimage.{u2, u1} α β f t) s)))))
-Case conversion may be inaccurate. Consider using '#align is_pi_system.comap IsPiSystem.comapₓ'. -/
theorem IsPiSystem.comap {α β} {S : Set (Set β)} (h_pi : IsPiSystem S) (f : α → β) :
IsPiSystem { s : Set α | ∃ t ∈ S, f ⁻¹' t = s } :=
by
@@ -137,12 +131,6 @@ theorem IsPiSystem.comap {α β} {S : Set (Set β)} (h_pi : IsPiSystem S) (f :
simpa using hst
#align is_pi_system.comap IsPiSystem.comap
-/- warning: is_pi_system_Union_of_directed_le -> isPiSystem_iUnion_of_directed_le is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} (p : ι -> (Set.{u1} (Set.{u1} α))), (forall (n : ι), IsPiSystem.{u1} α (p n)) -> (Directed.{u1, u2} (Set.{u1} (Set.{u1} α)) ι (LE.le.{u1} (Set.{u1} (Set.{u1} α)) (Set.hasLe.{u1} (Set.{u1} α))) p) -> (IsPiSystem.{u1} α (Set.iUnion.{u1, u2} (Set.{u1} α) ι (fun (n : ι) => p n)))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} (p : ι -> (Set.{u2} (Set.{u2} α))), (forall (n : ι), IsPiSystem.{u2} α (p n)) -> (Directed.{u2, u1} (Set.{u2} (Set.{u2} α)) ι (fun (x._@.Mathlib.MeasureTheory.PiSystem._hyg.544 : Set.{u2} (Set.{u2} α)) (x._@.Mathlib.MeasureTheory.PiSystem._hyg.546 : Set.{u2} (Set.{u2} α)) => LE.le.{u2} (Set.{u2} (Set.{u2} α)) (Set.instLESet.{u2} (Set.{u2} α)) x._@.Mathlib.MeasureTheory.PiSystem._hyg.544 x._@.Mathlib.MeasureTheory.PiSystem._hyg.546) p) -> (IsPiSystem.{u2} α (Set.iUnion.{u2, u1} (Set.{u2} α) ι (fun (n : ι) => p n)))
-Case conversion may be inaccurate. Consider using '#align is_pi_system_Union_of_directed_le isPiSystem_iUnion_of_directed_leₓ'. -/
theorem isPiSystem_iUnion_of_directed_le {α ι} (p : ι → Set (Set α)) (hp_pi : ∀ n, IsPiSystem (p n))
(hp_directed : Directed (· ≤ ·) p) : IsPiSystem (⋃ n, p n) :=
by
@@ -154,12 +142,6 @@ theorem isPiSystem_iUnion_of_directed_le {α ι} (p : ι → Set (Set α)) (hp_p
exact ⟨k, hp_pi k t1 (hpnk ht1) t2 (hpmk ht2) h⟩
#align is_pi_system_Union_of_directed_le isPiSystem_iUnion_of_directed_le
-/- warning: is_pi_system_Union_of_monotone -> isPiSystem_iUnion_of_monotone is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : SemilatticeSup.{u2} ι] (p : ι -> (Set.{u1} (Set.{u1} α))), (forall (n : ι), IsPiSystem.{u1} α (p n)) -> (Monotone.{u2, u1} ι (Set.{u1} (Set.{u1} α)) (PartialOrder.toPreorder.{u2} ι (SemilatticeSup.toPartialOrder.{u2} ι _inst_1)) (PartialOrder.toPreorder.{u1} (Set.{u1} (Set.{u1} α)) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} (Set.{u1} α)) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} (Set.{u1} α)) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} (Set.{u1} α)) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} (Set.{u1} α)) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} (Set.{u1} α)) (Set.completeBooleanAlgebra.{u1} (Set.{u1} α)))))))) p) -> (IsPiSystem.{u1} α (Set.iUnion.{u1, succ u2} (Set.{u1} α) ι (fun (n : ι) => p n)))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Type.{u1}} [_inst_1 : SemilatticeSup.{u1} ι] (p : ι -> (Set.{u2} (Set.{u2} α))), (forall (n : ι), IsPiSystem.{u2} α (p n)) -> (Monotone.{u1, u2} ι (Set.{u2} (Set.{u2} α)) (PartialOrder.toPreorder.{u1} ι (SemilatticeSup.toPartialOrder.{u1} ι _inst_1)) (PartialOrder.toPreorder.{u2} (Set.{u2} (Set.{u2} α)) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} (Set.{u2} α)) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} (Set.{u2} α)) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} (Set.{u2} α)) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} (Set.{u2} α)) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} (Set.{u2} α)) (Set.instCompleteBooleanAlgebraSet.{u2} (Set.{u2} α)))))))) p) -> (IsPiSystem.{u2} α (Set.iUnion.{u2, succ u1} (Set.{u2} α) ι (fun (n : ι) => p n)))
-Case conversion may be inaccurate. Consider using '#align is_pi_system_Union_of_monotone isPiSystem_iUnion_of_monotoneₓ'. -/
theorem isPiSystem_iUnion_of_monotone {α ι} [SemilatticeSup ι] (p : ι → Set (Set α))
(hp_pi : ∀ n, IsPiSystem (p n)) (hp_mono : Monotone p) : IsPiSystem (⋃ n, p n) :=
isPiSystem_iUnion_of_directed_le p hp_pi (Monotone.directed_le hp_mono)
@@ -195,12 +177,6 @@ theorem isPiSystem_Ioi : IsPiSystem (range Ioi : Set (Set α)) :=
#align is_pi_system_Ioi isPiSystem_Ioi
-/
-/- warning: is_pi_system_Ixx_mem -> isPiSystem_Ixx_mem is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : LinearOrder.{u1} α] {Ixx : α -> α -> (Set.{u1} α)} {p : α -> α -> Prop}, (forall {a : α} {b : α}, (Set.Nonempty.{u1} α (Ixx a b)) -> (p a b)) -> (forall {a₁ : α} {b₁ : α} {a₂ : α} {b₂ : α}, Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (Ixx a₁ b₁) (Ixx a₂ b₂)) (Ixx (LinearOrder.max.{u1} α _inst_1 a₁ a₂) (LinearOrder.min.{u1} α _inst_1 b₁ b₂))) -> (forall (s : Set.{u1} α) (t : Set.{u1} α), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (S : Set.{u1} α) => Exists.{succ u1} α (fun (l : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) l s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) l s) => Exists.{succ u1} α (fun (u : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) u t) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) u t) => Exists.{0} (p l u) (fun (hlu : p l u) => Eq.{succ u1} (Set.{u1} α) (Ixx l u) S))))))))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : LinearOrder.{u1} α] {Ixx : α -> α -> (Set.{u1} α)} {p : α -> α -> Prop}, (forall {a : α} {b : α}, (Set.Nonempty.{u1} α (Ixx a b)) -> (p a b)) -> (forall {a₁ : α} {b₁ : α} {a₂ : α} {b₂ : α}, Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) (Ixx a₁ b₁) (Ixx a₂ b₂)) (Ixx (Max.max.{u1} α (LinearOrder.toMax.{u1} α _inst_1) a₁ a₂) (Min.min.{u1} α (LinearOrder.toMin.{u1} α _inst_1) b₁ b₂))) -> (forall (s : Set.{u1} α) (t : Set.{u1} α), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (S : Set.{u1} α) => Exists.{succ u1} α (fun (l : α) => And (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) l s) (Exists.{succ u1} α (fun (u : α) => And (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) u t) (And (p l u) (Eq.{succ u1} (Set.{u1} α) (Ixx l u) S))))))))
-Case conversion may be inaccurate. Consider using '#align is_pi_system_Ixx_mem isPiSystem_Ixx_memₓ'. -/
theorem isPiSystem_Ixx_mem {Ixx : α → α → Set α} {p : α → α → Prop}
(Hne : ∀ {a b}, (Ixx a b).Nonempty → p a b)
(Hi : ∀ {a₁ b₁ a₂ b₂}, Ixx a₁ b₁ ∩ Ixx a₂ b₂ = Ixx (max a₁ a₂) (min b₁ b₂)) (s t : Set α) :
@@ -211,12 +187,6 @@ theorem isPiSystem_Ixx_mem {Ixx : α → α → Set α} {p : α → α → Prop}
exact fun H => ⟨l₁ ⊔ l₂, sup_ind l₁ l₂ hls₁ hls₂, u₁ ⊓ u₂, inf_ind u₁ u₂ hut₁ hut₂, Hne H, rfl⟩
#align is_pi_system_Ixx_mem isPiSystem_Ixx_mem
-/- warning: is_pi_system_Ixx -> isPiSystem_Ixx is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} [_inst_1 : LinearOrder.{u1} α] {Ixx : α -> α -> (Set.{u1} α)} {p : α -> α -> Prop}, (forall {a : α} {b : α}, (Set.Nonempty.{u1} α (Ixx a b)) -> (p a b)) -> (forall {a₁ : α} {b₁ : α} {a₂ : α} {b₂ : α}, Eq.{succ u1} (Set.{u1} α) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) (Ixx a₁ b₁) (Ixx a₂ b₂)) (Ixx (LinearOrder.max.{u1} α _inst_1 a₁ a₂) (LinearOrder.min.{u1} α _inst_1 b₁ b₂))) -> (forall (f : ι -> α) (g : ι' -> α), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (S : Set.{u1} α) => Exists.{u2} ι (fun (i : ι) => Exists.{u3} ι' (fun (j : ι') => Exists.{0} (p (f i) (g j)) (fun (h : p (f i) (g j)) => Eq.{succ u1} (Set.{u1} α) (Ixx (f i) (g j)) S))))))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {ι' : Sort.{u1}} [_inst_1 : LinearOrder.{u3} α] {Ixx : α -> α -> (Set.{u3} α)} {p : α -> α -> Prop}, (forall {a : α} {b : α}, (Set.Nonempty.{u3} α (Ixx a b)) -> (p a b)) -> (forall {a₁ : α} {b₁ : α} {a₂ : α} {b₂ : α}, Eq.{succ u3} (Set.{u3} α) (Inter.inter.{u3} (Set.{u3} α) (Set.instInterSet.{u3} α) (Ixx a₁ b₁) (Ixx a₂ b₂)) (Ixx (Max.max.{u3} α (LinearOrder.toMax.{u3} α _inst_1) a₁ a₂) (Min.min.{u3} α (LinearOrder.toMin.{u3} α _inst_1) b₁ b₂))) -> (forall (f : ι -> α) (g : ι' -> α), IsPiSystem.{u3} α (setOf.{u3} (Set.{u3} α) (fun (S : Set.{u3} α) => Exists.{u2} ι (fun (i : ι) => Exists.{u1} ι' (fun (j : ι') => And (p (f i) (g j)) (Eq.{succ u3} (Set.{u3} α) (Ixx (f i) (g j)) S))))))
-Case conversion may be inaccurate. Consider using '#align is_pi_system_Ixx isPiSystem_Ixxₓ'. -/
theorem isPiSystem_Ixx {Ixx : α → α → Set α} {p : α → α → Prop}
(Hne : ∀ {a b}, (Ixx a b).Nonempty → p a b)
(Hi : ∀ {a₁ b₁ a₂ b₂}, Ixx a₁ b₁ ∩ Ixx a₂ b₂ = Ixx (max a₁ a₂) (min b₁ b₂)) (f : ι → α)
@@ -224,89 +194,41 @@ theorem isPiSystem_Ixx {Ixx : α → α → Set α} {p : α → α → Prop}
simpa only [exists_range_iff] using isPiSystem_Ixx_mem (@Hne) (@Hi) (range f) (range g)
#align is_pi_system_Ixx isPiSystem_Ixx
-/- warning: is_pi_system_Ioo_mem -> isPiSystem_Ioo_mem is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : LinearOrder.{u1} α] (s : Set.{u1} α) (t : Set.{u1} α), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (S : Set.{u1} α) => Exists.{succ u1} α (fun (l : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) l s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) l s) => Exists.{succ u1} α (fun (u : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) u t) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) u t) => Exists.{0} (LT.lt.{u1} α (Preorder.toHasLt.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) l u) (fun (h : LT.lt.{u1} α (Preorder.toHasLt.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) l u) => Eq.{succ u1} (Set.{u1} α) (Set.Ioo.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1)))) l u) S)))))))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : LinearOrder.{u1} α] (s : Set.{u1} α) (t : Set.{u1} α), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (S : Set.{u1} α) => Exists.{succ u1} α (fun (l : α) => And (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) l s) (Exists.{succ u1} α (fun (u : α) => And (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) u t) (And (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α (instDistribLattice.{u1} α _inst_1)))))) l u) (Eq.{succ u1} (Set.{u1} α) (Set.Ioo.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α (instDistribLattice.{u1} α _inst_1))))) l u) S)))))))
-Case conversion may be inaccurate. Consider using '#align is_pi_system_Ioo_mem isPiSystem_Ioo_memₓ'. -/
theorem isPiSystem_Ioo_mem (s t : Set α) :
IsPiSystem { S | ∃ l ∈ s, ∃ u ∈ t, ∃ h : l < u, Ioo l u = S } :=
isPiSystem_Ixx_mem (fun a b ⟨x, hax, hxb⟩ => hax.trans hxb) (fun _ _ _ _ => Ioo_inter_Ioo) s t
#align is_pi_system_Ioo_mem isPiSystem_Ioo_mem
-/- warning: is_pi_system_Ioo -> isPiSystem_Ioo is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} [_inst_1 : LinearOrder.{u1} α] (f : ι -> α) (g : ι' -> α), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (S : Set.{u1} α) => Exists.{u2} ι (fun (l : ι) => Exists.{u3} ι' (fun (u : ι') => Exists.{0} (LT.lt.{u1} α (Preorder.toHasLt.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) (f l) (g u)) (fun (h : LT.lt.{u1} α (Preorder.toHasLt.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) (f l) (g u)) => Eq.{succ u1} (Set.{u1} α) (Set.Ioo.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1)))) (f l) (g u)) S)))))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {ι' : Sort.{u1}} [_inst_1 : LinearOrder.{u3} α] (f : ι -> α) (g : ι' -> α), IsPiSystem.{u3} α (setOf.{u3} (Set.{u3} α) (fun (S : Set.{u3} α) => Exists.{u2} ι (fun (l : ι) => Exists.{u1} ι' (fun (u : ι') => And (LT.lt.{u3} α (Preorder.toLT.{u3} α (PartialOrder.toPreorder.{u3} α (SemilatticeInf.toPartialOrder.{u3} α (Lattice.toSemilatticeInf.{u3} α (DistribLattice.toLattice.{u3} α (instDistribLattice.{u3} α _inst_1)))))) (f l) (g u)) (Eq.{succ u3} (Set.{u3} α) (Set.Ioo.{u3} α (PartialOrder.toPreorder.{u3} α (SemilatticeInf.toPartialOrder.{u3} α (Lattice.toSemilatticeInf.{u3} α (DistribLattice.toLattice.{u3} α (instDistribLattice.{u3} α _inst_1))))) (f l) (g u)) S)))))
-Case conversion may be inaccurate. Consider using '#align is_pi_system_Ioo isPiSystem_Iooₓ'. -/
theorem isPiSystem_Ioo (f : ι → α) (g : ι' → α) :
@IsPiSystem α { S | ∃ (l u : _)(h : f l < g u), Ioo (f l) (g u) = S } :=
isPiSystem_Ixx (fun a b ⟨x, hax, hxb⟩ => hax.trans hxb) (fun _ _ _ _ => Ioo_inter_Ioo) f g
#align is_pi_system_Ioo isPiSystem_Ioo
-/- warning: is_pi_system_Ioc_mem -> isPiSystem_Ioc_mem is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : LinearOrder.{u1} α] (s : Set.{u1} α) (t : Set.{u1} α), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (S : Set.{u1} α) => Exists.{succ u1} α (fun (l : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) l s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) l s) => Exists.{succ u1} α (fun (u : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) u t) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) u t) => Exists.{0} (LT.lt.{u1} α (Preorder.toHasLt.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) l u) (fun (h : LT.lt.{u1} α (Preorder.toHasLt.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) l u) => Eq.{succ u1} (Set.{u1} α) (Set.Ioc.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1)))) l u) S)))))))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : LinearOrder.{u1} α] (s : Set.{u1} α) (t : Set.{u1} α), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (S : Set.{u1} α) => Exists.{succ u1} α (fun (l : α) => And (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) l s) (Exists.{succ u1} α (fun (u : α) => And (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) u t) (And (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α (instDistribLattice.{u1} α _inst_1)))))) l u) (Eq.{succ u1} (Set.{u1} α) (Set.Ioc.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α (instDistribLattice.{u1} α _inst_1))))) l u) S)))))))
-Case conversion may be inaccurate. Consider using '#align is_pi_system_Ioc_mem isPiSystem_Ioc_memₓ'. -/
theorem isPiSystem_Ioc_mem (s t : Set α) :
IsPiSystem { S | ∃ l ∈ s, ∃ u ∈ t, ∃ h : l < u, Ioc l u = S } :=
isPiSystem_Ixx_mem (fun a b ⟨x, hax, hxb⟩ => hax.trans_le hxb) (fun _ _ _ _ => Ioc_inter_Ioc) s t
#align is_pi_system_Ioc_mem isPiSystem_Ioc_mem
-/- warning: is_pi_system_Ioc -> isPiSystem_Ioc is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} [_inst_1 : LinearOrder.{u1} α] (f : ι -> α) (g : ι' -> α), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (S : Set.{u1} α) => Exists.{u2} ι (fun (i : ι) => Exists.{u3} ι' (fun (j : ι') => Exists.{0} (LT.lt.{u1} α (Preorder.toHasLt.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) (f i) (g j)) (fun (h : LT.lt.{u1} α (Preorder.toHasLt.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) (f i) (g j)) => Eq.{succ u1} (Set.{u1} α) (Set.Ioc.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1)))) (f i) (g j)) S)))))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {ι' : Sort.{u1}} [_inst_1 : LinearOrder.{u3} α] (f : ι -> α) (g : ι' -> α), IsPiSystem.{u3} α (setOf.{u3} (Set.{u3} α) (fun (S : Set.{u3} α) => Exists.{u2} ι (fun (i : ι) => Exists.{u1} ι' (fun (j : ι') => And (LT.lt.{u3} α (Preorder.toLT.{u3} α (PartialOrder.toPreorder.{u3} α (SemilatticeInf.toPartialOrder.{u3} α (Lattice.toSemilatticeInf.{u3} α (DistribLattice.toLattice.{u3} α (instDistribLattice.{u3} α _inst_1)))))) (f i) (g j)) (Eq.{succ u3} (Set.{u3} α) (Set.Ioc.{u3} α (PartialOrder.toPreorder.{u3} α (SemilatticeInf.toPartialOrder.{u3} α (Lattice.toSemilatticeInf.{u3} α (DistribLattice.toLattice.{u3} α (instDistribLattice.{u3} α _inst_1))))) (f i) (g j)) S)))))
-Case conversion may be inaccurate. Consider using '#align is_pi_system_Ioc isPiSystem_Iocₓ'. -/
theorem isPiSystem_Ioc (f : ι → α) (g : ι' → α) :
@IsPiSystem α { S | ∃ (i j : _)(h : f i < g j), Ioc (f i) (g j) = S } :=
isPiSystem_Ixx (fun a b ⟨x, hax, hxb⟩ => hax.trans_le hxb) (fun _ _ _ _ => Ioc_inter_Ioc) f g
#align is_pi_system_Ioc isPiSystem_Ioc
-/- warning: is_pi_system_Ico_mem -> isPiSystem_Ico_mem is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : LinearOrder.{u1} α] (s : Set.{u1} α) (t : Set.{u1} α), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (S : Set.{u1} α) => Exists.{succ u1} α (fun (l : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) l s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) l s) => Exists.{succ u1} α (fun (u : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) u t) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) u t) => Exists.{0} (LT.lt.{u1} α (Preorder.toHasLt.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) l u) (fun (h : LT.lt.{u1} α (Preorder.toHasLt.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) l u) => Eq.{succ u1} (Set.{u1} α) (Set.Ico.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1)))) l u) S)))))))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : LinearOrder.{u1} α] (s : Set.{u1} α) (t : Set.{u1} α), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (S : Set.{u1} α) => Exists.{succ u1} α (fun (l : α) => And (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) l s) (Exists.{succ u1} α (fun (u : α) => And (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) u t) (And (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α (instDistribLattice.{u1} α _inst_1)))))) l u) (Eq.{succ u1} (Set.{u1} α) (Set.Ico.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α (instDistribLattice.{u1} α _inst_1))))) l u) S)))))))
-Case conversion may be inaccurate. Consider using '#align is_pi_system_Ico_mem isPiSystem_Ico_memₓ'. -/
theorem isPiSystem_Ico_mem (s t : Set α) :
IsPiSystem { S | ∃ l ∈ s, ∃ u ∈ t, ∃ h : l < u, Ico l u = S } :=
isPiSystem_Ixx_mem (fun a b ⟨x, hax, hxb⟩ => hax.trans_lt hxb) (fun _ _ _ _ => Ico_inter_Ico) s t
#align is_pi_system_Ico_mem isPiSystem_Ico_mem
-/- warning: is_pi_system_Ico -> isPiSystem_Ico is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} [_inst_1 : LinearOrder.{u1} α] (f : ι -> α) (g : ι' -> α), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (S : Set.{u1} α) => Exists.{u2} ι (fun (i : ι) => Exists.{u3} ι' (fun (j : ι') => Exists.{0} (LT.lt.{u1} α (Preorder.toHasLt.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) (f i) (g j)) (fun (h : LT.lt.{u1} α (Preorder.toHasLt.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) (f i) (g j)) => Eq.{succ u1} (Set.{u1} α) (Set.Ico.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1)))) (f i) (g j)) S)))))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {ι' : Sort.{u1}} [_inst_1 : LinearOrder.{u3} α] (f : ι -> α) (g : ι' -> α), IsPiSystem.{u3} α (setOf.{u3} (Set.{u3} α) (fun (S : Set.{u3} α) => Exists.{u2} ι (fun (i : ι) => Exists.{u1} ι' (fun (j : ι') => And (LT.lt.{u3} α (Preorder.toLT.{u3} α (PartialOrder.toPreorder.{u3} α (SemilatticeInf.toPartialOrder.{u3} α (Lattice.toSemilatticeInf.{u3} α (DistribLattice.toLattice.{u3} α (instDistribLattice.{u3} α _inst_1)))))) (f i) (g j)) (Eq.{succ u3} (Set.{u3} α) (Set.Ico.{u3} α (PartialOrder.toPreorder.{u3} α (SemilatticeInf.toPartialOrder.{u3} α (Lattice.toSemilatticeInf.{u3} α (DistribLattice.toLattice.{u3} α (instDistribLattice.{u3} α _inst_1))))) (f i) (g j)) S)))))
-Case conversion may be inaccurate. Consider using '#align is_pi_system_Ico isPiSystem_Icoₓ'. -/
theorem isPiSystem_Ico (f : ι → α) (g : ι' → α) :
@IsPiSystem α { S | ∃ (i j : _)(h : f i < g j), Ico (f i) (g j) = S } :=
isPiSystem_Ixx (fun a b ⟨x, hax, hxb⟩ => hax.trans_lt hxb) (fun _ _ _ _ => Ico_inter_Ico) f g
#align is_pi_system_Ico isPiSystem_Ico
-/- warning: is_pi_system_Icc_mem -> isPiSystem_Icc_mem is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : LinearOrder.{u1} α] (s : Set.{u1} α) (t : Set.{u1} α), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (S : Set.{u1} α) => Exists.{succ u1} α (fun (l : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) l s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) l s) => Exists.{succ u1} α (fun (u : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) u t) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) u t) => Exists.{0} (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) l u) (fun (h : LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) l u) => Eq.{succ u1} (Set.{u1} α) (Set.Icc.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1)))) l u) S)))))))
-but is expected to have type
- forall {α : Type.{u1}} [_inst_1 : LinearOrder.{u1} α] (s : Set.{u1} α) (t : Set.{u1} α), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (S : Set.{u1} α) => Exists.{succ u1} α (fun (l : α) => And (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) l s) (Exists.{succ u1} α (fun (u : α) => And (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) u t) (And (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α (instDistribLattice.{u1} α _inst_1)))))) l u) (Eq.{succ u1} (Set.{u1} α) (Set.Icc.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α (instDistribLattice.{u1} α _inst_1))))) l u) S)))))))
-Case conversion may be inaccurate. Consider using '#align is_pi_system_Icc_mem isPiSystem_Icc_memₓ'. -/
theorem isPiSystem_Icc_mem (s t : Set α) :
IsPiSystem { S | ∃ l ∈ s, ∃ u ∈ t, ∃ h : l ≤ u, Icc l u = S } :=
isPiSystem_Ixx_mem (fun a b => nonempty_Icc.1) (fun _ _ _ _ => Icc_inter_Icc) s t
#align is_pi_system_Icc_mem isPiSystem_Icc_mem
-/- warning: is_pi_system_Icc -> isPiSystem_Icc is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} [_inst_1 : LinearOrder.{u1} α] (f : ι -> α) (g : ι' -> α), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (S : Set.{u1} α) => Exists.{u2} ι (fun (i : ι) => Exists.{u3} ι' (fun (j : ι') => Exists.{0} (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) (f i) (g j)) (fun (h : LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) (f i) (g j)) => Eq.{succ u1} (Set.{u1} α) (Set.Icc.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1)))) (f i) (g j)) S)))))
-but is expected to have type
- forall {α : Type.{u3}} {ι : Sort.{u2}} {ι' : Sort.{u1}} [_inst_1 : LinearOrder.{u3} α] (f : ι -> α) (g : ι' -> α), IsPiSystem.{u3} α (setOf.{u3} (Set.{u3} α) (fun (S : Set.{u3} α) => Exists.{u2} ι (fun (i : ι) => Exists.{u1} ι' (fun (j : ι') => And (LE.le.{u3} α (Preorder.toLE.{u3} α (PartialOrder.toPreorder.{u3} α (SemilatticeInf.toPartialOrder.{u3} α (Lattice.toSemilatticeInf.{u3} α (DistribLattice.toLattice.{u3} α (instDistribLattice.{u3} α _inst_1)))))) (f i) (g j)) (Eq.{succ u3} (Set.{u3} α) (Set.Icc.{u3} α (PartialOrder.toPreorder.{u3} α (SemilatticeInf.toPartialOrder.{u3} α (Lattice.toSemilatticeInf.{u3} α (DistribLattice.toLattice.{u3} α (instDistribLattice.{u3} α _inst_1))))) (f i) (g j)) S)))))
-Case conversion may be inaccurate. Consider using '#align is_pi_system_Icc isPiSystem_Iccₓ'. -/
theorem isPiSystem_Icc (f : ι → α) (g : ι' → α) :
@IsPiSystem α { S | ∃ (i j : _)(h : f i ≤ g j), Icc (f i) (g j) = S } :=
isPiSystem_Ixx (fun a b => nonempty_Icc.1) (fun _ _ _ _ => Icc_inter_Icc) f g
@@ -393,12 +315,6 @@ theorem generateFrom_generatePiSystem_eq {α} {g : Set (Set α)} :
#align generate_from_generate_pi_system_eq generateFrom_generatePiSystem_eq
-/
-/- warning: mem_generate_pi_system_Union_elim -> mem_generatePiSystem_iUnion_elim is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {g : β -> (Set.{u1} (Set.{u1} α))}, (forall (b : β), IsPiSystem.{u1} α (g b)) -> (forall (t : Set.{u1} α), (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) t (generatePiSystem.{u1} α (Set.iUnion.{u1, succ u2} (Set.{u1} α) β (fun (b : β) => g b)))) -> (Exists.{succ u2} (Finset.{u2} β) (fun (T : Finset.{u2} β) => Exists.{max (succ u2) (succ u1)} (β -> (Set.{u1} α)) (fun (f : β -> (Set.{u1} α)) => And (Eq.{succ u1} (Set.{u1} α) t (Set.iInter.{u1, succ u2} α β (fun (b : β) => Set.iInter.{u1, 0} α (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) b T) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) b T) => f b)))) (forall (b : β), (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) b T) -> (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) (f b) (g b)))))))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {g : β -> (Set.{u2} (Set.{u2} α))}, (forall (b : β), IsPiSystem.{u2} α (g b)) -> (forall (t : Set.{u2} α), (Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) t (generatePiSystem.{u2} α (Set.iUnion.{u2, succ u1} (Set.{u2} α) β (fun (b : β) => g b)))) -> (Exists.{succ u1} (Finset.{u1} β) (fun (T : Finset.{u1} β) => Exists.{max (succ u2) (succ u1)} (β -> (Set.{u2} α)) (fun (f : β -> (Set.{u2} α)) => And (Eq.{succ u2} (Set.{u2} α) t (Set.iInter.{u2, succ u1} α β (fun (b : β) => Set.iInter.{u2, 0} α (Membership.mem.{u1, u1} β (Finset.{u1} β) (Finset.instMembershipFinset.{u1} β) b T) (fun (H : Membership.mem.{u1, u1} β (Finset.{u1} β) (Finset.instMembershipFinset.{u1} β) b T) => f b)))) (forall (b : β), (Membership.mem.{u1, u1} β (Finset.{u1} β) (Finset.instMembershipFinset.{u1} β) b T) -> (Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) (f b) (g b)))))))
-Case conversion may be inaccurate. Consider using '#align mem_generate_pi_system_Union_elim mem_generatePiSystem_iUnion_elimₓ'. -/
/- Every element of the π-system generated by the union of a family of π-systems
is a finite intersection of elements from the π-systems.
For an indexed union version, see `mem_generate_pi_system_Union_elim'`. -/
@@ -434,12 +350,6 @@ theorem mem_generatePiSystem_iUnion_elim {α β} {g : β → Set (Set α)} (h_pi
apply False.elim (h_b.elim hbs hbt)
#align mem_generate_pi_system_Union_elim mem_generatePiSystem_iUnion_elim
-/- warning: mem_generate_pi_system_Union_elim' -> mem_generatePiSystem_iUnion_elim' is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {g : β -> (Set.{u1} (Set.{u1} α))} {s : Set.{u2} β}, (forall (b : β), (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) b s) -> (IsPiSystem.{u1} α (g b))) -> (forall (t : Set.{u1} α), (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) t (generatePiSystem.{u1} α (Set.iUnion.{u1, succ u2} (Set.{u1} α) β (fun (b : β) => Set.iUnion.{u1, 0} (Set.{u1} α) (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) b s) (fun (H : Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) b s) => g b))))) -> (Exists.{succ u2} (Finset.{u2} β) (fun (T : Finset.{u2} β) => Exists.{max (succ u2) (succ u1)} (β -> (Set.{u1} α)) (fun (f : β -> (Set.{u1} α)) => And (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) T) s) (And (Eq.{succ u1} (Set.{u1} α) t (Set.iInter.{u1, succ u2} α β (fun (b : β) => Set.iInter.{u1, 0} α (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) b T) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) b T) => f b)))) (forall (b : β), (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) b T) -> (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) (f b) (g b))))))))
-but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {g : β -> (Set.{u2} (Set.{u2} α))} {s : Set.{u1} β}, (forall (b : β), (Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) b s) -> (IsPiSystem.{u2} α (g b))) -> (forall (t : Set.{u2} α), (Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) t (generatePiSystem.{u2} α (Set.iUnion.{u2, succ u1} (Set.{u2} α) β (fun (b : β) => Set.iUnion.{u2, 0} (Set.{u2} α) (Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) b s) (fun (H : Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) b s) => g b))))) -> (Exists.{succ u1} (Finset.{u1} β) (fun (T : Finset.{u1} β) => Exists.{max (succ u2) (succ u1)} (β -> (Set.{u2} α)) (fun (f : β -> (Set.{u2} α)) => And (HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (Finset.toSet.{u1} β T) s) (And (Eq.{succ u2} (Set.{u2} α) t (Set.iInter.{u2, succ u1} α β (fun (b : β) => Set.iInter.{u2, 0} α (Membership.mem.{u1, u1} β (Finset.{u1} β) (Finset.instMembershipFinset.{u1} β) b T) (fun (H : Membership.mem.{u1, u1} β (Finset.{u1} β) (Finset.instMembershipFinset.{u1} β) b T) => f b)))) (forall (b : β), (Membership.mem.{u1, u1} β (Finset.{u1} β) (Finset.instMembershipFinset.{u1} β) b T) -> (Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) (f b) (g b))))))))
-Case conversion may be inaccurate. Consider using '#align mem_generate_pi_system_Union_elim' mem_generatePiSystem_iUnion_elim'ₓ'. -/
/- Every element of the π-system generated by an indexed union of a family of π-systems
is a finite intersection of elements from the π-systems.
For a total union version, see `mem_generate_pi_system_Union_elim`. -/
@@ -493,12 +403,6 @@ def piiUnionInter (π : ι → Set (Set α)) (S : Set ι) : Set (Set α) :=
#align pi_Union_Inter piiUnionInter
-/
-/- warning: pi_Union_Inter_singleton -> piiUnionInter_singleton is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} (π : ι -> (Set.{u1} (Set.{u1} α))) (i : ι), Eq.{succ u1} (Set.{u1} (Set.{u1} α)) (piiUnionInter.{u1, u2} α ι π (Singleton.singleton.{u2, u2} ι (Set.{u2} ι) (Set.hasSingleton.{u2} ι) i)) (Union.union.{u1} (Set.{u1} (Set.{u1} α)) (Set.hasUnion.{u1} (Set.{u1} α)) (π i) (Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasSingleton.{u1} (Set.{u1} α)) (Set.univ.{u1} α)))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Type.{u1}} (π : ι -> (Set.{u2} (Set.{u2} α))) (i : ι), Eq.{succ u2} (Set.{u2} (Set.{u2} α)) (piiUnionInter.{u2, u1} α ι π (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i)) (Union.union.{u2} (Set.{u2} (Set.{u2} α)) (Set.instUnionSet.{u2} (Set.{u2} α)) (π i) (Singleton.singleton.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instSingletonSet.{u2} (Set.{u2} α)) (Set.univ.{u2} α)))
-Case conversion may be inaccurate. Consider using '#align pi_Union_Inter_singleton piiUnionInter_singletonₓ'. -/
theorem piiUnionInter_singleton (π : ι → Set (Set α)) (i : ι) :
piiUnionInter π {i} = π i ∪ {univ} := by
ext1 s
@@ -528,12 +432,6 @@ theorem piiUnionInter_singleton (π : ι → Set (Set α)) (i : ι) :
exists_const] using hs
#align pi_Union_Inter_singleton piiUnionInter_singleton
-/- warning: pi_Union_Inter_singleton_left -> piiUnionInter_singleton_left is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} (s : ι -> (Set.{u1} α)) (S : Set.{u2} ι), Eq.{succ u1} (Set.{u1} (Set.{u1} α)) (piiUnionInter.{u1, u2} α ι (fun (i : ι) => Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasSingleton.{u1} (Set.{u1} α)) (s i)) S) (setOf.{u1} (Set.{u1} α) (fun (s' : Set.{u1} α) => Exists.{succ u2} (Finset.{u2} ι) (fun (t : Finset.{u2} ι) => Exists.{0} (HasSubset.Subset.{u2} (Set.{u2} ι) (Set.hasSubset.{u2} ι) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} ι) (Set.{u2} ι) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} ι) (Set.{u2} ι) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} ι) (Set.{u2} ι) (Finset.Set.hasCoeT.{u2} ι))) t) S) (fun (htS : HasSubset.Subset.{u2} (Set.{u2} ι) (Set.hasSubset.{u2} ι) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} ι) (Set.{u2} ι) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} ι) (Set.{u2} ι) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} ι) (Set.{u2} ι) (Finset.Set.hasCoeT.{u2} ι))) t) S) => Eq.{succ u1} (Set.{u1} α) s' (Set.iInter.{u1, succ u2} α ι (fun (i : ι) => Set.iInter.{u1, 0} α (Membership.Mem.{u2, u2} ι (Finset.{u2} ι) (Finset.hasMem.{u2} ι) i t) (fun (H : Membership.Mem.{u2, u2} ι (Finset.{u2} ι) (Finset.hasMem.{u2} ι) i t) => s i)))))))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Type.{u1}} (s : ι -> (Set.{u2} α)) (S : Set.{u1} ι), Eq.{succ u2} (Set.{u2} (Set.{u2} α)) (piiUnionInter.{u2, u1} α ι (fun (i : ι) => Singleton.singleton.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instSingletonSet.{u2} (Set.{u2} α)) (s i)) S) (setOf.{u2} (Set.{u2} α) (fun (s' : Set.{u2} α) => Exists.{succ u1} (Finset.{u1} ι) (fun (t : Finset.{u1} ι) => Exists.{0} (HasSubset.Subset.{u1} (Set.{u1} ι) (Set.instHasSubsetSet.{u1} ι) (Finset.toSet.{u1} ι t) S) (fun (htS : HasSubset.Subset.{u1} (Set.{u1} ι) (Set.instHasSubsetSet.{u1} ι) (Finset.toSet.{u1} ι t) S) => Eq.{succ u2} (Set.{u2} α) s' (Set.iInter.{u2, succ u1} α ι (fun (i : ι) => Set.iInter.{u2, 0} α (Membership.mem.{u1, u1} ι (Finset.{u1} ι) (Finset.instMembershipFinset.{u1} ι) i t) (fun (H : Membership.mem.{u1, u1} ι (Finset.{u1} ι) (Finset.instMembershipFinset.{u1} ι) i t) => s i)))))))
-Case conversion may be inaccurate. Consider using '#align pi_Union_Inter_singleton_left piiUnionInter_singleton_leftₓ'. -/
theorem piiUnionInter_singleton_left (s : ι → Set α) (S : Set ι) :
piiUnionInter (fun i => ({s i} : Set (Set α))) S =
{ s' : Set α | ∃ (t : Finset ι)(htS : ↑t ⊆ S), s' = ⋂ i ∈ t, s i } :=
@@ -550,12 +448,6 @@ theorem piiUnionInter_singleton_left (s : ι → Set α) (S : Set ι) :
exact h hit⟩
#align pi_Union_Inter_singleton_left piiUnionInter_singleton_left
-/- warning: generate_from_pi_Union_Inter_singleton_left -> generateFrom_piiUnionInter_singleton_left is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} (s : ι -> (Set.{u1} α)) (S : Set.{u2} ι), Eq.{succ u1} (MeasurableSpace.{u1} α) (MeasurableSpace.generateFrom.{u1} α (piiUnionInter.{u1, u2} α ι (fun (k : ι) => Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasSingleton.{u1} (Set.{u1} α)) (s k)) S)) (MeasurableSpace.generateFrom.{u1} α (setOf.{u1} (Set.{u1} α) (fun (t : Set.{u1} α) => Exists.{succ u2} ι (fun (k : ι) => Exists.{0} (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) k S) (fun (H : Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) k S) => Eq.{succ u1} (Set.{u1} α) (s k) t)))))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Type.{u1}} (s : ι -> (Set.{u2} α)) (S : Set.{u1} ι), Eq.{succ u2} (MeasurableSpace.{u2} α) (MeasurableSpace.generateFrom.{u2} α (piiUnionInter.{u2, u1} α ι (fun (k : ι) => Singleton.singleton.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instSingletonSet.{u2} (Set.{u2} α)) (s k)) S)) (MeasurableSpace.generateFrom.{u2} α (setOf.{u2} (Set.{u2} α) (fun (t : Set.{u2} α) => Exists.{succ u1} ι (fun (k : ι) => And (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) k S) (Eq.{succ u2} (Set.{u2} α) (s k) t)))))
-Case conversion may be inaccurate. Consider using '#align generate_from_pi_Union_Inter_singleton_left generateFrom_piiUnionInter_singleton_leftₓ'. -/
theorem generateFrom_piiUnionInter_singleton_left (s : ι → Set α) (S : Set ι) :
generateFrom (piiUnionInter (fun k => {s k}) S) = generateFrom { t | ∃ k ∈ S, s k = t } :=
by
@@ -571,12 +463,6 @@ theorem generateFrom_piiUnionInter_singleton_left (s : ι → Set α) (S : Set
· simp only [Finset.mem_singleton, Set.iInter_iInter_eq_left]
#align generate_from_pi_Union_Inter_singleton_left generateFrom_piiUnionInter_singleton_left
-/- warning: is_pi_system_pi_Union_Inter -> isPiSystem_piiUnionInter is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} (π : ι -> (Set.{u1} (Set.{u1} α))), (forall (x : ι), IsPiSystem.{u1} α (π x)) -> (forall (S : Set.{u2} ι), IsPiSystem.{u1} α (piiUnionInter.{u1, u2} α ι π S))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Type.{u1}} (π : ι -> (Set.{u2} (Set.{u2} α))), (forall (x : ι), IsPiSystem.{u2} α (π x)) -> (forall (S : Set.{u1} ι), IsPiSystem.{u2} α (piiUnionInter.{u2, u1} α ι π S))
-Case conversion may be inaccurate. Consider using '#align is_pi_system_pi_Union_Inter isPiSystem_piiUnionInterₓ'. -/
/-- If `π` is a family of π-systems, then `pi_Union_Inter π S` is a π-system. -/
theorem isPiSystem_piiUnionInter (π : ι → Set (Set α)) (hpi : ∀ x, IsPiSystem (π x)) (S : Set ι) :
IsPiSystem (piiUnionInter π S) :=
@@ -619,34 +505,16 @@ theorem isPiSystem_piiUnionInter (π : ι → Set (Set α)) (hpi : ∀ x, IsPiSy
· exact absurd hn (by simp [hn1, h])
#align is_pi_system_pi_Union_Inter isPiSystem_piiUnionInter
-/- warning: pi_Union_Inter_mono_left -> piiUnionInter_mono_left is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} {π : ι -> (Set.{u1} (Set.{u1} α))} {π' : ι -> (Set.{u1} (Set.{u1} α))}, (forall (i : ι), HasSubset.Subset.{u1} (Set.{u1} (Set.{u1} α)) (Set.hasSubset.{u1} (Set.{u1} α)) (π i) (π' i)) -> (forall (S : Set.{u2} ι), HasSubset.Subset.{u1} (Set.{u1} (Set.{u1} α)) (Set.hasSubset.{u1} (Set.{u1} α)) (piiUnionInter.{u1, u2} α ι π S) (piiUnionInter.{u1, u2} α ι π' S))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Type.{u1}} {π : ι -> (Set.{u2} (Set.{u2} α))} {π' : ι -> (Set.{u2} (Set.{u2} α))}, (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} (Set.{u2} α)) (Set.instHasSubsetSet.{u2} (Set.{u2} α)) (π i) (π' i)) -> (forall (S : Set.{u1} ι), HasSubset.Subset.{u2} (Set.{u2} (Set.{u2} α)) (Set.instHasSubsetSet.{u2} (Set.{u2} α)) (piiUnionInter.{u2, u1} α ι π S) (piiUnionInter.{u2, u1} α ι π' S))
-Case conversion may be inaccurate. Consider using '#align pi_Union_Inter_mono_left piiUnionInter_mono_leftₓ'. -/
theorem piiUnionInter_mono_left {π π' : ι → Set (Set α)} (h_le : ∀ i, π i ⊆ π' i) (S : Set ι) :
piiUnionInter π S ⊆ piiUnionInter π' S := fun s ⟨t, ht_mem, ft, hft_mem_pi, h_eq⟩ =>
⟨t, ht_mem, ft, fun x hxt => h_le x (hft_mem_pi x hxt), h_eq⟩
#align pi_Union_Inter_mono_left piiUnionInter_mono_left
-/- warning: pi_Union_Inter_mono_right -> piiUnionInter_mono_right is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} {π : ι -> (Set.{u1} (Set.{u1} α))} {S : Set.{u2} ι} {T : Set.{u2} ι}, (HasSubset.Subset.{u2} (Set.{u2} ι) (Set.hasSubset.{u2} ι) S T) -> (HasSubset.Subset.{u1} (Set.{u1} (Set.{u1} α)) (Set.hasSubset.{u1} (Set.{u1} α)) (piiUnionInter.{u1, u2} α ι π S) (piiUnionInter.{u1, u2} α ι π T))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Type.{u1}} {π : ι -> (Set.{u2} (Set.{u2} α))} {S : Set.{u1} ι} {T : Set.{u1} ι}, (HasSubset.Subset.{u1} (Set.{u1} ι) (Set.instHasSubsetSet.{u1} ι) S T) -> (HasSubset.Subset.{u2} (Set.{u2} (Set.{u2} α)) (Set.instHasSubsetSet.{u2} (Set.{u2} α)) (piiUnionInter.{u2, u1} α ι π S) (piiUnionInter.{u2, u1} α ι π T))
-Case conversion may be inaccurate. Consider using '#align pi_Union_Inter_mono_right piiUnionInter_mono_rightₓ'. -/
theorem piiUnionInter_mono_right {π : ι → Set (Set α)} {S T : Set ι} (hST : S ⊆ T) :
piiUnionInter π S ⊆ piiUnionInter π T := fun s ⟨t, ht_mem, ft, hft_mem_pi, h_eq⟩ =>
⟨t, ht_mem.trans hST, ft, hft_mem_pi, h_eq⟩
#align pi_Union_Inter_mono_right piiUnionInter_mono_right
-/- warning: generate_from_pi_Union_Inter_le -> generateFrom_piiUnionInter_le is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} {m : MeasurableSpace.{u1} α} (π : ι -> (Set.{u1} (Set.{u1} α))), (forall (n : ι), LE.le.{u1} (MeasurableSpace.{u1} α) (MeasurableSpace.hasLe.{u1} α) (MeasurableSpace.generateFrom.{u1} α (π n)) m) -> (forall (S : Set.{u2} ι), LE.le.{u1} (MeasurableSpace.{u1} α) (MeasurableSpace.hasLe.{u1} α) (MeasurableSpace.generateFrom.{u1} α (piiUnionInter.{u1, u2} α ι π S)) m)
-but is expected to have type
- forall {α : Type.{u2}} {ι : Type.{u1}} {m : MeasurableSpace.{u2} α} (π : ι -> (Set.{u2} (Set.{u2} α))), (forall (n : ι), LE.le.{u2} (MeasurableSpace.{u2} α) (MeasurableSpace.instLEMeasurableSpace.{u2} α) (MeasurableSpace.generateFrom.{u2} α (π n)) m) -> (forall (S : Set.{u1} ι), LE.le.{u2} (MeasurableSpace.{u2} α) (MeasurableSpace.instLEMeasurableSpace.{u2} α) (MeasurableSpace.generateFrom.{u2} α (piiUnionInter.{u2, u1} α ι π S)) m)
-Case conversion may be inaccurate. Consider using '#align generate_from_pi_Union_Inter_le generateFrom_piiUnionInter_leₓ'. -/
theorem generateFrom_piiUnionInter_le {m : MeasurableSpace α} (π : ι → Set (Set α))
(h : ∀ n, generateFrom (π n) ≤ m) (S : Set ι) : generateFrom (piiUnionInter π S) ≤ m :=
by
@@ -656,12 +524,6 @@ theorem generateFrom_piiUnionInter_le {m : MeasurableSpace α} (π : ι → Set
exact measurable_set_generate_from (hft_mem_pi x hx_mem)
#align generate_from_pi_Union_Inter_le generateFrom_piiUnionInter_le
-/- warning: subset_pi_Union_Inter -> subset_piiUnionInter is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} {π : ι -> (Set.{u1} (Set.{u1} α))} {S : Set.{u2} ι} {i : ι}, (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i S) -> (HasSubset.Subset.{u1} (Set.{u1} (Set.{u1} α)) (Set.hasSubset.{u1} (Set.{u1} α)) (π i) (piiUnionInter.{u1, u2} α ι π S))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Type.{u1}} {π : ι -> (Set.{u2} (Set.{u2} α))} {S : Set.{u1} ι} {i : ι}, (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i S) -> (HasSubset.Subset.{u2} (Set.{u2} (Set.{u2} α)) (Set.instHasSubsetSet.{u2} (Set.{u2} α)) (π i) (piiUnionInter.{u2, u1} α ι π S))
-Case conversion may be inaccurate. Consider using '#align subset_pi_Union_Inter subset_piiUnionInterₓ'. -/
theorem subset_piiUnionInter {π : ι → Set (Set α)} {S : Set ι} {i : ι} (his : i ∈ S) :
π i ⊆ piiUnionInter π S :=
by
@@ -671,35 +533,17 @@ theorem subset_piiUnionInter {π : ι → Set (Set α)} {S : Set ι} {i : ι} (h
exact subset_union_left _ _
#align subset_pi_Union_Inter subset_piiUnionInter
-/- warning: mem_pi_Union_Inter_of_measurable_set -> mem_piiUnionInter_of_measurableSet is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} (m : ι -> (MeasurableSpace.{u1} α)) {S : Set.{u2} ι} {i : ι}, (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i S) -> (forall (s : Set.{u1} α), (MeasurableSet.{u1} α (m i) s) -> (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) s (piiUnionInter.{u1, u2} α ι (fun (n : ι) => setOf.{u1} (Set.{u1} α) (fun (s : Set.{u1} α) => MeasurableSet.{u1} α (m n) s)) S)))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Type.{u1}} (m : ι -> (MeasurableSpace.{u2} α)) {S : Set.{u1} ι} {i : ι}, (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i S) -> (forall (s : Set.{u2} α), (MeasurableSet.{u2} α (m i) s) -> (Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) s (piiUnionInter.{u2, u1} α ι (fun (n : ι) => setOf.{u2} (Set.{u2} α) (fun (s : Set.{u2} α) => MeasurableSet.{u2} α (m n) s)) S)))
-Case conversion may be inaccurate. Consider using '#align mem_pi_Union_Inter_of_measurable_set mem_piiUnionInter_of_measurableSetₓ'. -/
theorem mem_piiUnionInter_of_measurableSet (m : ι → MeasurableSpace α) {S : Set ι} {i : ι}
(hiS : i ∈ S) (s : Set α) (hs : measurable_set[m i] s) :
s ∈ piiUnionInter (fun n => { s | measurable_set[m n] s }) S :=
subset_piiUnionInter hiS hs
#align mem_pi_Union_Inter_of_measurable_set mem_piiUnionInter_of_measurableSet
-/- warning: le_generate_from_pi_Union_Inter -> le_generateFrom_piiUnionInter is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} {π : ι -> (Set.{u1} (Set.{u1} α))} (S : Set.{u2} ι) {x : ι}, (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) x S) -> (LE.le.{u1} (MeasurableSpace.{u1} α) (MeasurableSpace.hasLe.{u1} α) (MeasurableSpace.generateFrom.{u1} α (π x)) (MeasurableSpace.generateFrom.{u1} α (piiUnionInter.{u1, u2} α ι π S)))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Type.{u1}} {π : ι -> (Set.{u2} (Set.{u2} α))} (S : Set.{u1} ι) {x : ι}, (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) x S) -> (LE.le.{u2} (MeasurableSpace.{u2} α) (MeasurableSpace.instLEMeasurableSpace.{u2} α) (MeasurableSpace.generateFrom.{u2} α (π x)) (MeasurableSpace.generateFrom.{u2} α (piiUnionInter.{u2, u1} α ι π S)))
-Case conversion may be inaccurate. Consider using '#align le_generate_from_pi_Union_Inter le_generateFrom_piiUnionInterₓ'. -/
theorem le_generateFrom_piiUnionInter {π : ι → Set (Set α)} (S : Set ι) {x : ι} (hxS : x ∈ S) :
generateFrom (π x) ≤ generateFrom (piiUnionInter π S) :=
generateFrom_mono (subset_piiUnionInter hxS)
#align le_generate_from_pi_Union_Inter le_generateFrom_piiUnionInter
-/- warning: measurable_set_supr_of_mem_pi_Union_Inter -> measurableSet_iSup_of_mem_piiUnionInter is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} (m : ι -> (MeasurableSpace.{u1} α)) (S : Set.{u2} ι) (t : Set.{u1} α), (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) t (piiUnionInter.{u1, u2} α ι (fun (n : ι) => setOf.{u1} (Set.{u1} α) (fun (s : Set.{u1} α) => MeasurableSet.{u1} α (m n) s)) S)) -> (MeasurableSet.{u1} α (iSup.{u1, succ u2} (MeasurableSpace.{u1} α) (ConditionallyCompleteLattice.toHasSup.{u1} (MeasurableSpace.{u1} α) (CompleteLattice.toConditionallyCompleteLattice.{u1} (MeasurableSpace.{u1} α) (MeasurableSpace.completeLattice.{u1} α))) ι (fun (i : ι) => iSup.{u1, 0} (MeasurableSpace.{u1} α) (ConditionallyCompleteLattice.toHasSup.{u1} (MeasurableSpace.{u1} α) (CompleteLattice.toConditionallyCompleteLattice.{u1} (MeasurableSpace.{u1} α) (MeasurableSpace.completeLattice.{u1} α))) (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i S) (fun (H : Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i S) => m i))) t)
-but is expected to have type
- forall {α : Type.{u2}} {ι : Type.{u1}} (m : ι -> (MeasurableSpace.{u2} α)) (S : Set.{u1} ι) (t : Set.{u2} α), (Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) t (piiUnionInter.{u2, u1} α ι (fun (n : ι) => setOf.{u2} (Set.{u2} α) (fun (s : Set.{u2} α) => MeasurableSet.{u2} α (m n) s)) S)) -> (MeasurableSet.{u2} α (iSup.{u2, succ u1} (MeasurableSpace.{u2} α) (ConditionallyCompleteLattice.toSupSet.{u2} (MeasurableSpace.{u2} α) (CompleteLattice.toConditionallyCompleteLattice.{u2} (MeasurableSpace.{u2} α) (MeasurableSpace.instCompleteLatticeMeasurableSpace.{u2} α))) ι (fun (i : ι) => iSup.{u2, 0} (MeasurableSpace.{u2} α) (ConditionallyCompleteLattice.toSupSet.{u2} (MeasurableSpace.{u2} α) (CompleteLattice.toConditionallyCompleteLattice.{u2} (MeasurableSpace.{u2} α) (MeasurableSpace.instCompleteLatticeMeasurableSpace.{u2} α))) (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i S) (fun (H : Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i S) => m i))) t)
-Case conversion may be inaccurate. Consider using '#align measurable_set_supr_of_mem_pi_Union_Inter measurableSet_iSup_of_mem_piiUnionInterₓ'. -/
theorem measurableSet_iSup_of_mem_piiUnionInter (m : ι → MeasurableSpace α) (S : Set ι) (t : Set α)
(ht : t ∈ piiUnionInter (fun n => { s | measurable_set[m n] s }) S) :
measurable_set[⨆ i ∈ S, m i] t :=
@@ -711,12 +555,6 @@ theorem measurableSet_iSup_of_mem_piiUnionInter (m : ι → MeasurableSpace α)
exact le_iSup₂ i hi'
#align measurable_set_supr_of_mem_pi_Union_Inter measurableSet_iSup_of_mem_piiUnionInter
-/- warning: generate_from_pi_Union_Inter_measurable_set -> generateFrom_piiUnionInter_measurableSet is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} (m : ι -> (MeasurableSpace.{u1} α)) (S : Set.{u2} ι), Eq.{succ u1} (MeasurableSpace.{u1} α) (MeasurableSpace.generateFrom.{u1} α (piiUnionInter.{u1, u2} α ι (fun (n : ι) => setOf.{u1} (Set.{u1} α) (fun (s : Set.{u1} α) => MeasurableSet.{u1} α (m n) s)) S)) (iSup.{u1, succ u2} (MeasurableSpace.{u1} α) (ConditionallyCompleteLattice.toHasSup.{u1} (MeasurableSpace.{u1} α) (CompleteLattice.toConditionallyCompleteLattice.{u1} (MeasurableSpace.{u1} α) (MeasurableSpace.completeLattice.{u1} α))) ι (fun (i : ι) => iSup.{u1, 0} (MeasurableSpace.{u1} α) (ConditionallyCompleteLattice.toHasSup.{u1} (MeasurableSpace.{u1} α) (CompleteLattice.toConditionallyCompleteLattice.{u1} (MeasurableSpace.{u1} α) (MeasurableSpace.completeLattice.{u1} α))) (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i S) (fun (H : Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i S) => m i)))
-but is expected to have type
- forall {α : Type.{u2}} {ι : Type.{u1}} (m : ι -> (MeasurableSpace.{u2} α)) (S : Set.{u1} ι), Eq.{succ u2} (MeasurableSpace.{u2} α) (MeasurableSpace.generateFrom.{u2} α (piiUnionInter.{u2, u1} α ι (fun (n : ι) => setOf.{u2} (Set.{u2} α) (fun (s : Set.{u2} α) => MeasurableSet.{u2} α (m n) s)) S)) (iSup.{u2, succ u1} (MeasurableSpace.{u2} α) (ConditionallyCompleteLattice.toSupSet.{u2} (MeasurableSpace.{u2} α) (CompleteLattice.toConditionallyCompleteLattice.{u2} (MeasurableSpace.{u2} α) (MeasurableSpace.instCompleteLatticeMeasurableSpace.{u2} α))) ι (fun (i : ι) => iSup.{u2, 0} (MeasurableSpace.{u2} α) (ConditionallyCompleteLattice.toSupSet.{u2} (MeasurableSpace.{u2} α) (CompleteLattice.toConditionallyCompleteLattice.{u2} (MeasurableSpace.{u2} α) (MeasurableSpace.instCompleteLatticeMeasurableSpace.{u2} α))) (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i S) (fun (H : Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i S) => m i)))
-Case conversion may be inaccurate. Consider using '#align generate_from_pi_Union_Inter_measurable_set generateFrom_piiUnionInter_measurableSetₓ'. -/
theorem generateFrom_piiUnionInter_measurableSet (m : ι → MeasurableSpace α) (S : Set ι) :
generateFrom (piiUnionInter (fun n => { s | measurable_set[m n] s }) S) = ⨆ i ∈ S, m i :=
by
@@ -769,12 +607,6 @@ theorem ext : ∀ {d₁ d₂ : DynkinSystem α}, (∀ s : Set α, d₁.Has s ↔
variable (d : DynkinSystem α)
-/- warning: measurable_space.dynkin_system.has_compl_iff -> MeasurableSpace.DynkinSystem.has_compl_iff is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} (d : MeasurableSpace.DynkinSystem.{u1} α) {a : Set.{u1} α}, Iff (MeasurableSpace.DynkinSystem.Has.{u1} α d (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) a)) (MeasurableSpace.DynkinSystem.Has.{u1} α d a)
-but is expected to have type
- forall {α : Type.{u1}} (d : MeasurableSpace.DynkinSystem.{u1} α) {a : Set.{u1} α}, Iff (MeasurableSpace.DynkinSystem.Has.{u1} α d (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α)) a)) (MeasurableSpace.DynkinSystem.Has.{u1} α d a)
-Case conversion may be inaccurate. Consider using '#align measurable_space.dynkin_system.has_compl_iff MeasurableSpace.DynkinSystem.has_compl_iffₓ'. -/
theorem has_compl_iff {a} : d.Has (aᶜ) ↔ d.Has a :=
⟨fun h => by simpa using d.has_compl h, fun h => d.HasCompl h⟩
#align measurable_space.dynkin_system.has_compl_iff MeasurableSpace.DynkinSystem.has_compl_iff
@@ -784,12 +616,6 @@ theorem has_univ : d.Has univ := by simpa using d.has_compl d.has_empty
#align measurable_space.dynkin_system.has_univ MeasurableSpace.DynkinSystem.has_univ
-/
-/- warning: measurable_space.dynkin_system.has_Union -> MeasurableSpace.DynkinSystem.has_iUnion is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} (d : MeasurableSpace.DynkinSystem.{u1} α) {β : Type.{u2}} [_inst_1 : Countable.{succ u2} β] {f : β -> (Set.{u1} α)}, (Pairwise.{u2} β (Function.onFun.{succ u2, succ u1, 1} β (Set.{u1} α) Prop (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)))) f)) -> (forall (i : β), MeasurableSpace.DynkinSystem.Has.{u1} α d (f i)) -> (MeasurableSpace.DynkinSystem.Has.{u1} α d (Set.iUnion.{u1, succ u2} α β (fun (i : β) => f i)))
-but is expected to have type
- forall {α : Type.{u1}} (d : MeasurableSpace.DynkinSystem.{u1} α) {β : Type.{u2}} [_inst_1 : Countable.{succ u2} β] {f : β -> (Set.{u1} α)}, (Pairwise.{u2} β (Function.onFun.{succ u2, succ u1, 1} β (Set.{u1} α) Prop (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) f)) -> (forall (i : β), MeasurableSpace.DynkinSystem.Has.{u1} α d (f i)) -> (MeasurableSpace.DynkinSystem.Has.{u1} α d (Set.iUnion.{u1, succ u2} α β (fun (i : β) => f i)))
-Case conversion may be inaccurate. Consider using '#align measurable_space.dynkin_system.has_Union MeasurableSpace.DynkinSystem.has_iUnionₓ'. -/
theorem has_iUnion {β} [Countable β] {f : β → Set α} (hd : Pairwise (Disjoint on f))
(h : ∀ i, d.Has (f i)) : d.Has (⋃ i, f i) := by cases nonempty_encodable β;
rw [← Encodable.iUnion_decode₂];
@@ -798,23 +624,11 @@ theorem has_iUnion {β} [Countable β] {f : β → Set α} (hd : Pairwise (Disjo
Encodable.iUnion_decode₂_cases d.has_empty h
#align measurable_space.dynkin_system.has_Union MeasurableSpace.DynkinSystem.has_iUnion
-/- warning: measurable_space.dynkin_system.has_union -> MeasurableSpace.DynkinSystem.has_union is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} (d : MeasurableSpace.DynkinSystem.{u1} α) {s₁ : Set.{u1} α} {s₂ : Set.{u1} α}, (MeasurableSpace.DynkinSystem.Has.{u1} α d s₁) -> (MeasurableSpace.DynkinSystem.Has.{u1} α d s₂) -> (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α))) s₁ s₂) -> (MeasurableSpace.DynkinSystem.Has.{u1} α d (Union.union.{u1} (Set.{u1} α) (Set.hasUnion.{u1} α) s₁ s₂))
-but is expected to have type
- forall {α : Type.{u1}} (d : MeasurableSpace.DynkinSystem.{u1} α) {s₁ : Set.{u1} α} {s₂ : Set.{u1} α}, (MeasurableSpace.DynkinSystem.Has.{u1} α d s₁) -> (MeasurableSpace.DynkinSystem.Has.{u1} α d s₂) -> (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) s₁ s₂) -> (MeasurableSpace.DynkinSystem.Has.{u1} α d (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) s₁ s₂))
-Case conversion may be inaccurate. Consider using '#align measurable_space.dynkin_system.has_union MeasurableSpace.DynkinSystem.has_unionₓ'. -/
theorem has_union {s₁ s₂ : Set α} (h₁ : d.Has s₁) (h₂ : d.Has s₂) (h : Disjoint s₁ s₂) :
d.Has (s₁ ∪ s₂) := by rw [union_eq_Union];
exact d.has_Union (pairwise_disjoint_on_bool.2 h) (Bool.forall_bool.2 ⟨h₂, h₁⟩)
#align measurable_space.dynkin_system.has_union MeasurableSpace.DynkinSystem.has_union
-/- warning: measurable_space.dynkin_system.has_diff -> MeasurableSpace.DynkinSystem.has_diff is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} (d : MeasurableSpace.DynkinSystem.{u1} α) {s₁ : Set.{u1} α} {s₂ : Set.{u1} α}, (MeasurableSpace.DynkinSystem.Has.{u1} α d s₁) -> (MeasurableSpace.DynkinSystem.Has.{u1} α d s₂) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.hasSubset.{u1} α) s₂ s₁) -> (MeasurableSpace.DynkinSystem.Has.{u1} α d (SDiff.sdiff.{u1} (Set.{u1} α) (BooleanAlgebra.toHasSdiff.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) s₁ s₂))
-but is expected to have type
- forall {α : Type.{u1}} (d : MeasurableSpace.DynkinSystem.{u1} α) {s₁ : Set.{u1} α} {s₂ : Set.{u1} α}, (MeasurableSpace.DynkinSystem.Has.{u1} α d s₁) -> (MeasurableSpace.DynkinSystem.Has.{u1} α d s₂) -> (HasSubset.Subset.{u1} (Set.{u1} α) (Set.instHasSubsetSet.{u1} α) s₂ s₁) -> (MeasurableSpace.DynkinSystem.Has.{u1} α d (SDiff.sdiff.{u1} (Set.{u1} α) (Set.instSDiffSet.{u1} α) s₁ s₂))
-Case conversion may be inaccurate. Consider using '#align measurable_space.dynkin_system.has_diff MeasurableSpace.DynkinSystem.has_diffₓ'. -/
theorem has_diff {s₁ s₂ : Set α} (h₁ : d.Has s₁) (h₂ : d.Has s₂) (h : s₂ ⊆ s₁) : d.Has (s₁ \ s₂) :=
by
apply d.has_compl_iff.1
@@ -868,12 +682,6 @@ inductive GenerateHas (s : Set (Set α)) : Set α → Prop
#align measurable_space.dynkin_system.generate_has MeasurableSpace.DynkinSystem.GenerateHas
-/
-/- warning: measurable_space.dynkin_system.generate_has_compl -> MeasurableSpace.DynkinSystem.generateHas_compl is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {C : Set.{u1} (Set.{u1} α)} {s : Set.{u1} α}, Iff (MeasurableSpace.DynkinSystem.GenerateHas.{u1} α C (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) s)) (MeasurableSpace.DynkinSystem.GenerateHas.{u1} α C s)
-but is expected to have type
- forall {α : Type.{u1}} {C : Set.{u1} (Set.{u1} α)} {s : Set.{u1} α}, Iff (MeasurableSpace.DynkinSystem.GenerateHas.{u1} α C (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α)) s)) (MeasurableSpace.DynkinSystem.GenerateHas.{u1} α C s)
-Case conversion may be inaccurate. Consider using '#align measurable_space.dynkin_system.generate_has_compl MeasurableSpace.DynkinSystem.generateHas_complₓ'. -/
theorem generateHas_compl {C : Set (Set α)} {s : Set α} : GenerateHas C (sᶜ) ↔ GenerateHas C s := by
refine' ⟨_, generate_has.compl⟩; intro h; convert generate_has.compl h; simp
#align measurable_space.dynkin_system.generate_has_compl MeasurableSpace.DynkinSystem.generateHas_compl
@@ -898,12 +706,6 @@ theorem generateHas_def {C : Set (Set α)} : (generate C).Has = GenerateHas C :=
instance : Inhabited (DynkinSystem α) :=
⟨generate univ⟩
-/- warning: measurable_space.dynkin_system.to_measurable_space -> MeasurableSpace.DynkinSystem.toMeasurableSpace is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} (d : MeasurableSpace.DynkinSystem.{u1} α), (forall (s₁ : Set.{u1} α) (s₂ : Set.{u1} α), (MeasurableSpace.DynkinSystem.Has.{u1} α d s₁) -> (MeasurableSpace.DynkinSystem.Has.{u1} α d s₂) -> (MeasurableSpace.DynkinSystem.Has.{u1} α d (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s₁ s₂))) -> (MeasurableSpace.{u1} α)
-but is expected to have type
- forall {α : Type.{u1}} (d : MeasurableSpace.DynkinSystem.{u1} α), (forall (s₁ : Set.{u1} α) (s₂ : Set.{u1} α), (MeasurableSpace.DynkinSystem.Has.{u1} α d s₁) -> (MeasurableSpace.DynkinSystem.Has.{u1} α d s₂) -> (MeasurableSpace.DynkinSystem.Has.{u1} α d (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s₁ s₂))) -> (MeasurableSpace.{u1} α)
-Case conversion may be inaccurate. Consider using '#align measurable_space.dynkin_system.to_measurable_space MeasurableSpace.DynkinSystem.toMeasurableSpaceₓ'. -/
/-- If a Dynkin system is closed under binary intersection, then it forms a `σ`-algebra. -/
def toMeasurableSpace (h_inter : ∀ s₁ s₂, d.Has s₁ → d.Has s₂ → d.Has (s₁ ∩ s₂))
where
@@ -917,12 +719,6 @@ def toMeasurableSpace (h_inter : ∀ s₁ s₂, d.Has s₁ → d.Has s₂ → d.
disjointedRec (fun t i h => h_inter _ _ h <| d.has_compl <| hf i) (hf n)
#align measurable_space.dynkin_system.to_measurable_space MeasurableSpace.DynkinSystem.toMeasurableSpace
-/- warning: measurable_space.dynkin_system.of_measurable_space_to_measurable_space -> MeasurableSpace.DynkinSystem.ofMeasurableSpace_toMeasurableSpace is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} (d : MeasurableSpace.DynkinSystem.{u1} α) (h_inter : forall (s₁ : Set.{u1} α) (s₂ : Set.{u1} α), (MeasurableSpace.DynkinSystem.Has.{u1} α d s₁) -> (MeasurableSpace.DynkinSystem.Has.{u1} α d s₂) -> (MeasurableSpace.DynkinSystem.Has.{u1} α d (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) s₁ s₂))), Eq.{succ u1} (MeasurableSpace.DynkinSystem.{u1} α) (MeasurableSpace.DynkinSystem.ofMeasurableSpace.{u1} α (MeasurableSpace.DynkinSystem.toMeasurableSpace.{u1} α d h_inter)) d
-but is expected to have type
- forall {α : Type.{u1}} (d : MeasurableSpace.DynkinSystem.{u1} α) (h_inter : forall (s₁ : Set.{u1} α) (s₂ : Set.{u1} α), (MeasurableSpace.DynkinSystem.Has.{u1} α d s₁) -> (MeasurableSpace.DynkinSystem.Has.{u1} α d s₂) -> (MeasurableSpace.DynkinSystem.Has.{u1} α d (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) s₁ s₂))), Eq.{succ u1} (MeasurableSpace.DynkinSystem.{u1} α) (MeasurableSpace.DynkinSystem.ofMeasurableSpace.{u1} α (MeasurableSpace.DynkinSystem.toMeasurableSpace.{u1} α d h_inter)) d
-Case conversion may be inaccurate. Consider using '#align measurable_space.dynkin_system.of_measurable_space_to_measurable_space MeasurableSpace.DynkinSystem.ofMeasurableSpace_toMeasurableSpaceₓ'. -/
theorem ofMeasurableSpace_toMeasurableSpace
(h_inter : ∀ s₁ s₂, d.Has s₁ → d.Has s₂ → d.Has (s₁ ∩ s₂)) :
ofMeasurableSpace (d.toMeasurableSpace h_inter) = d :=
@@ -962,12 +758,6 @@ theorem generate_has_subset_generate_measurable {C : Set (Set α)} {s : Set α}
#align measurable_space.dynkin_system.generate_has_subset_generate_measurable MeasurableSpace.DynkinSystem.generate_has_subset_generate_measurable
-/
-/- warning: measurable_space.dynkin_system.generate_inter -> MeasurableSpace.DynkinSystem.generate_inter is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {s : Set.{u1} (Set.{u1} α)}, (IsPiSystem.{u1} α s) -> (forall {t₁ : Set.{u1} α} {t₂ : Set.{u1} α}, (MeasurableSpace.DynkinSystem.Has.{u1} α (MeasurableSpace.DynkinSystem.generate.{u1} α s) t₁) -> (MeasurableSpace.DynkinSystem.Has.{u1} α (MeasurableSpace.DynkinSystem.generate.{u1} α s) t₂) -> (MeasurableSpace.DynkinSystem.Has.{u1} α (MeasurableSpace.DynkinSystem.generate.{u1} α s) (Inter.inter.{u1} (Set.{u1} α) (Set.hasInter.{u1} α) t₁ t₂)))
-but is expected to have type
- forall {α : Type.{u1}} {s : Set.{u1} (Set.{u1} α)}, (IsPiSystem.{u1} α s) -> (forall {t₁ : Set.{u1} α} {t₂ : Set.{u1} α}, (MeasurableSpace.DynkinSystem.Has.{u1} α (MeasurableSpace.DynkinSystem.generate.{u1} α s) t₁) -> (MeasurableSpace.DynkinSystem.Has.{u1} α (MeasurableSpace.DynkinSystem.generate.{u1} α s) t₂) -> (MeasurableSpace.DynkinSystem.Has.{u1} α (MeasurableSpace.DynkinSystem.generate.{u1} α s) (Inter.inter.{u1} (Set.{u1} α) (Set.instInterSet.{u1} α) t₁ t₂)))
-Case conversion may be inaccurate. Consider using '#align measurable_space.dynkin_system.generate_inter MeasurableSpace.DynkinSystem.generate_interₓ'. -/
theorem generate_inter {s : Set (Set α)} (hs : IsPiSystem s) {t₁ t₂ : Set α}
(ht₁ : (generate s).Has t₁) (ht₂ : (generate s).Has t₂) : (generate s).Has (t₁ ∩ t₂) :=
have : generate s ≤ (generate s).restrictOn ht₂ :=
@@ -1003,12 +793,6 @@ theorem generateFrom_eq {s : Set (Set α)} (hs : IsPiSystem s) :
end DynkinSystem
-/- warning: measurable_space.induction_on_inter -> MeasurableSpace.induction_on_inter is a dubious translation:
-lean 3 declaration is
- forall {α : Type.{u1}} {C : (Set.{u1} α) -> Prop} {s : Set.{u1} (Set.{u1} α)} [m : MeasurableSpace.{u1} α], (Eq.{succ u1} (MeasurableSpace.{u1} α) m (MeasurableSpace.generateFrom.{u1} α s)) -> (IsPiSystem.{u1} α s) -> (C (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α))) -> (forall (t : Set.{u1} α), (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) t s) -> (C t)) -> (forall (t : Set.{u1} α), (MeasurableSet.{u1} α m t) -> (C t) -> (C (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) t))) -> (forall (f : Nat -> (Set.{u1} α)), (Pairwise.{0} Nat (Function.onFun.{1, succ u1, 1} Nat (Set.{u1} α) Prop (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)))) f)) -> (forall (i : Nat), MeasurableSet.{u1} α m (f i)) -> (forall (i : Nat), C (f i)) -> (C (Set.iUnion.{u1, 1} α Nat (fun (i : Nat) => f i)))) -> (forall {{t : Set.{u1} α}}, (MeasurableSet.{u1} α m t) -> (C t))
-but is expected to have type
- forall {α : Type.{u1}} {C : (Set.{u1} α) -> Prop} {s : Set.{u1} (Set.{u1} α)} [m : MeasurableSpace.{u1} α], (Eq.{succ u1} (MeasurableSpace.{u1} α) m (MeasurableSpace.generateFrom.{u1} α s)) -> (IsPiSystem.{u1} α s) -> (C (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.instEmptyCollectionSet.{u1} α))) -> (forall (t : Set.{u1} α), (Membership.mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instMembershipSet.{u1} (Set.{u1} α)) t s) -> (C t)) -> (forall (t : Set.{u1} α), (MeasurableSet.{u1} α m t) -> (C t) -> (C (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α)) t))) -> (forall (f : Nat -> (Set.{u1} α)), (Pairwise.{0} Nat (Function.onFun.{1, succ u1, 1} Nat (Set.{u1} α) Prop (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) f)) -> (forall (i : Nat), MeasurableSet.{u1} α m (f i)) -> (forall (i : Nat), C (f i)) -> (C (Set.iUnion.{u1, 1} α Nat (fun (i : Nat) => f i)))) -> (forall {{t : Set.{u1} α}}, (MeasurableSet.{u1} α m t) -> (C t))
-Case conversion may be inaccurate. Consider using '#align measurable_space.induction_on_inter MeasurableSpace.induction_on_interₓ'. -/
theorem induction_on_inter {C : Set α → Prop} {s : Set (Set α)} [m : MeasurableSpace α]
(h_eq : m = generateFrom s) (h_inter : IsPiSystem s) (h_empty : C ∅) (h_basic : ∀ t ∈ s, C t)
(h_compl : ∀ t, MeasurableSet t → C t → C (tᶜ))
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -449,8 +449,7 @@ theorem mem_generatePiSystem_iUnion_elim' {α β} {g : β → Set (Set α)} {s :
by
have : t ∈ generatePiSystem (⋃ b : Subtype s, (g ∘ Subtype.val) b) :=
by
- suffices h1 : (⋃ b : Subtype s, (g ∘ Subtype.val) b) = ⋃ b ∈ s, g b
- · rwa [h1]
+ suffices h1 : (⋃ b : Subtype s, (g ∘ Subtype.val) b) = ⋃ b ∈ s, g b; · rwa [h1]
ext x
simp only [exists_prop, Set.mem_iUnion, Function.comp_apply, Subtype.exists, Subtype.coe_mk]
rfl
@@ -459,7 +458,7 @@ theorem mem_generatePiSystem_iUnion_elim' {α β} {g : β → Set (Set α)} {s :
⟨T, ⟨f, ⟨rfl, h_t'⟩⟩⟩
refine'
⟨T.image Subtype.val, Function.extend Subtype.val f fun b : β => (∅ : Set α), by simp, _, _⟩
- · ext a
+ · ext a;
constructor <;>
· simp only [Set.mem_iInter, Subtype.forall, Finset.set_biInter_finset_image]
intro h1 b h_b h_b_in_T
@@ -508,9 +507,7 @@ theorem piiUnionInter_singleton (π : ι → Set (Set α)) (i : ι) :
· rintro ⟨t, hti, f, hfπ, rfl⟩
simp only [subset_singleton_iff, Finset.mem_coe] at hti
by_cases hi : i ∈ t
- · have ht_eq_i : t = {i} := by
- ext1 x
- rw [Finset.mem_singleton]
+ · have ht_eq_i : t = {i} := by ext1 x; rw [Finset.mem_singleton];
exact ⟨fun h => hti x h, fun h => h.symm ▸ hi⟩
simp only [ht_eq_i, Finset.mem_singleton, Inter_Inter_eq_left]
exact Or.inl (hfπ i hi)
@@ -549,10 +546,7 @@ theorem piiUnionInter_singleton_left (s : ι → Set α) (S : Set ι) :
congr with (i x)
simp_rw [Set.mem_iInter]
exact
- ⟨fun h hit => by
- rw [← hft_eq i hit]
- exact h hit, fun h hit => by
- rw [hft_eq i hit]
+ ⟨fun h hit => by rw [← hft_eq i hit]; exact h hit, fun h hit => by rw [hft_eq i hit];
exact h hit⟩
#align pi_Union_Inter_singleton_left piiUnionInter_singleton_left
@@ -671,10 +665,7 @@ Case conversion may be inaccurate. Consider using '#align subset_pi_Union_Inter
theorem subset_piiUnionInter {π : ι → Set (Set α)} {S : Set ι} {i : ι} (his : i ∈ S) :
π i ⊆ piiUnionInter π S :=
by
- have h_ss : {i} ⊆ S := by
- intro j hj
- rw [mem_singleton_iff] at hj
- rwa [hj]
+ have h_ss : {i} ⊆ S := by intro j hj; rw [mem_singleton_iff] at hj; rwa [hj]
refine' subset.trans _ (piiUnionInter_mono_right h_ss)
rw [piiUnionInter_singleton]
exact subset_union_left _ _
@@ -800,10 +791,8 @@ but is expected to have type
forall {α : Type.{u1}} (d : MeasurableSpace.DynkinSystem.{u1} α) {β : Type.{u2}} [_inst_1 : Countable.{succ u2} β] {f : β -> (Set.{u1} α)}, (Pairwise.{u2} β (Function.onFun.{succ u2, succ u1, 1} β (Set.{u1} α) Prop (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) f)) -> (forall (i : β), MeasurableSpace.DynkinSystem.Has.{u1} α d (f i)) -> (MeasurableSpace.DynkinSystem.Has.{u1} α d (Set.iUnion.{u1, succ u2} α β (fun (i : β) => f i)))
Case conversion may be inaccurate. Consider using '#align measurable_space.dynkin_system.has_Union MeasurableSpace.DynkinSystem.has_iUnionₓ'. -/
theorem has_iUnion {β} [Countable β] {f : β → Set α} (hd : Pairwise (Disjoint on f))
- (h : ∀ i, d.Has (f i)) : d.Has (⋃ i, f i) :=
- by
- cases nonempty_encodable β
- rw [← Encodable.iUnion_decode₂]
+ (h : ∀ i, d.Has (f i)) : d.Has (⋃ i, f i) := by cases nonempty_encodable β;
+ rw [← Encodable.iUnion_decode₂];
exact
d.has_Union_nat (Encodable.iUnion_decode₂_disjoint_on hd) fun n =>
Encodable.iUnion_decode₂_cases d.has_empty h
@@ -816,8 +805,7 @@ but is expected to have type
forall {α : Type.{u1}} (d : MeasurableSpace.DynkinSystem.{u1} α) {s₁ : Set.{u1} α} {s₂ : Set.{u1} α}, (MeasurableSpace.DynkinSystem.Has.{u1} α d s₁) -> (MeasurableSpace.DynkinSystem.Has.{u1} α d s₂) -> (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) s₁ s₂) -> (MeasurableSpace.DynkinSystem.Has.{u1} α d (Union.union.{u1} (Set.{u1} α) (Set.instUnionSet.{u1} α) s₁ s₂))
Case conversion may be inaccurate. Consider using '#align measurable_space.dynkin_system.has_union MeasurableSpace.DynkinSystem.has_unionₓ'. -/
theorem has_union {s₁ s₂ : Set α} (h₁ : d.Has s₁) (h₂ : d.Has s₂) (h : Disjoint s₁ s₂) :
- d.Has (s₁ ∪ s₂) := by
- rw [union_eq_Union]
+ d.Has (s₁ ∪ s₂) := by rw [union_eq_Union];
exact d.has_Union (pairwise_disjoint_on_bool.2 h) (Bool.forall_bool.2 ⟨h₂, h₁⟩)
#align measurable_space.dynkin_system.has_union MeasurableSpace.DynkinSystem.has_union
@@ -886,12 +874,8 @@ lean 3 declaration is
but is expected to have type
forall {α : Type.{u1}} {C : Set.{u1} (Set.{u1} α)} {s : Set.{u1} α}, Iff (MeasurableSpace.DynkinSystem.GenerateHas.{u1} α C (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α)) s)) (MeasurableSpace.DynkinSystem.GenerateHas.{u1} α C s)
Case conversion may be inaccurate. Consider using '#align measurable_space.dynkin_system.generate_has_compl MeasurableSpace.DynkinSystem.generateHas_complₓ'. -/
-theorem generateHas_compl {C : Set (Set α)} {s : Set α} : GenerateHas C (sᶜ) ↔ GenerateHas C s :=
- by
- refine' ⟨_, generate_has.compl⟩
- intro h
- convert generate_has.compl h
- simp
+theorem generateHas_compl {C : Set (Set α)} {s : Set α} : GenerateHas C (sᶜ) ↔ GenerateHas C s := by
+ refine' ⟨_, generate_has.compl⟩; intro h; convert generate_has.compl h; simp
#align measurable_space.dynkin_system.generate_has_compl MeasurableSpace.DynkinSystem.generateHas_compl
#print MeasurableSpace.DynkinSystem.generate /-
@@ -1032,21 +1016,12 @@ theorem induction_on_inter {C : Set α → Prop} {s : Set (Set α)} [m : Measura
∀ f : ℕ → Set α,
Pairwise (Disjoint on f) → (∀ i, MeasurableSet (f i)) → (∀ i, C (f i)) → C (⋃ i, f i)) :
∀ ⦃t⦄, MeasurableSet t → C t :=
- have eq : MeasurableSet = DynkinSystem.GenerateHas s :=
- by
- rw [h_eq, dynkin_system.generate_from_eq h_inter]
- rfl
+ have eq : MeasurableSet = DynkinSystem.GenerateHas s := by
+ rw [h_eq, dynkin_system.generate_from_eq h_inter]; rfl
fun t ht =>
have : DynkinSystem.GenerateHas s t := by rwa [Eq] at ht
- this.recOn h_basic h_empty
- (fun t ht =>
- h_compl t <| by
- rw [Eq]
- exact ht)
- fun f hf ht =>
- h_union f hf fun i => by
- rw [Eq]
- exact ht _
+ this.recOn h_basic h_empty (fun t ht => h_compl t <| by rw [Eq]; exact ht) fun f hf ht =>
+ h_union f hf fun i => by rw [Eq]; exact ht _
#align measurable_space.induction_on_inter MeasurableSpace.induction_on_inter
end MeasurableSpace
mathlib commit https://github.com/leanprover-community/mathlib/commit/0b9eaaa7686280fad8cce467f5c3c57ee6ce77f8
@@ -226,7 +226,7 @@ theorem isPiSystem_Ixx {Ixx : α → α → Set α} {p : α → α → Prop}
/- warning: is_pi_system_Ioo_mem -> isPiSystem_Ioo_mem is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : LinearOrder.{u1} α] (s : Set.{u1} α) (t : Set.{u1} α), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (S : Set.{u1} α) => Exists.{succ u1} α (fun (l : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) l s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) l s) => Exists.{succ u1} α (fun (u : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) u t) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) u t) => Exists.{0} (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) l u) (fun (h : LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) l u) => Eq.{succ u1} (Set.{u1} α) (Set.Ioo.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1)))) l u) S)))))))
+ forall {α : Type.{u1}} [_inst_1 : LinearOrder.{u1} α] (s : Set.{u1} α) (t : Set.{u1} α), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (S : Set.{u1} α) => Exists.{succ u1} α (fun (l : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) l s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) l s) => Exists.{succ u1} α (fun (u : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) u t) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) u t) => Exists.{0} (LT.lt.{u1} α (Preorder.toHasLt.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) l u) (fun (h : LT.lt.{u1} α (Preorder.toHasLt.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) l u) => Eq.{succ u1} (Set.{u1} α) (Set.Ioo.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1)))) l u) S)))))))
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : LinearOrder.{u1} α] (s : Set.{u1} α) (t : Set.{u1} α), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (S : Set.{u1} α) => Exists.{succ u1} α (fun (l : α) => And (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) l s) (Exists.{succ u1} α (fun (u : α) => And (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) u t) (And (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α (instDistribLattice.{u1} α _inst_1)))))) l u) (Eq.{succ u1} (Set.{u1} α) (Set.Ioo.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α (instDistribLattice.{u1} α _inst_1))))) l u) S)))))))
Case conversion may be inaccurate. Consider using '#align is_pi_system_Ioo_mem isPiSystem_Ioo_memₓ'. -/
@@ -237,7 +237,7 @@ theorem isPiSystem_Ioo_mem (s t : Set α) :
/- warning: is_pi_system_Ioo -> isPiSystem_Ioo is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} [_inst_1 : LinearOrder.{u1} α] (f : ι -> α) (g : ι' -> α), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (S : Set.{u1} α) => Exists.{u2} ι (fun (l : ι) => Exists.{u3} ι' (fun (u : ι') => Exists.{0} (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) (f l) (g u)) (fun (h : LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) (f l) (g u)) => Eq.{succ u1} (Set.{u1} α) (Set.Ioo.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1)))) (f l) (g u)) S)))))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} [_inst_1 : LinearOrder.{u1} α] (f : ι -> α) (g : ι' -> α), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (S : Set.{u1} α) => Exists.{u2} ι (fun (l : ι) => Exists.{u3} ι' (fun (u : ι') => Exists.{0} (LT.lt.{u1} α (Preorder.toHasLt.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) (f l) (g u)) (fun (h : LT.lt.{u1} α (Preorder.toHasLt.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) (f l) (g u)) => Eq.{succ u1} (Set.{u1} α) (Set.Ioo.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1)))) (f l) (g u)) S)))))
but is expected to have type
forall {α : Type.{u3}} {ι : Sort.{u2}} {ι' : Sort.{u1}} [_inst_1 : LinearOrder.{u3} α] (f : ι -> α) (g : ι' -> α), IsPiSystem.{u3} α (setOf.{u3} (Set.{u3} α) (fun (S : Set.{u3} α) => Exists.{u2} ι (fun (l : ι) => Exists.{u1} ι' (fun (u : ι') => And (LT.lt.{u3} α (Preorder.toLT.{u3} α (PartialOrder.toPreorder.{u3} α (SemilatticeInf.toPartialOrder.{u3} α (Lattice.toSemilatticeInf.{u3} α (DistribLattice.toLattice.{u3} α (instDistribLattice.{u3} α _inst_1)))))) (f l) (g u)) (Eq.{succ u3} (Set.{u3} α) (Set.Ioo.{u3} α (PartialOrder.toPreorder.{u3} α (SemilatticeInf.toPartialOrder.{u3} α (Lattice.toSemilatticeInf.{u3} α (DistribLattice.toLattice.{u3} α (instDistribLattice.{u3} α _inst_1))))) (f l) (g u)) S)))))
Case conversion may be inaccurate. Consider using '#align is_pi_system_Ioo isPiSystem_Iooₓ'. -/
@@ -248,7 +248,7 @@ theorem isPiSystem_Ioo (f : ι → α) (g : ι' → α) :
/- warning: is_pi_system_Ioc_mem -> isPiSystem_Ioc_mem is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : LinearOrder.{u1} α] (s : Set.{u1} α) (t : Set.{u1} α), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (S : Set.{u1} α) => Exists.{succ u1} α (fun (l : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) l s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) l s) => Exists.{succ u1} α (fun (u : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) u t) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) u t) => Exists.{0} (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) l u) (fun (h : LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) l u) => Eq.{succ u1} (Set.{u1} α) (Set.Ioc.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1)))) l u) S)))))))
+ forall {α : Type.{u1}} [_inst_1 : LinearOrder.{u1} α] (s : Set.{u1} α) (t : Set.{u1} α), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (S : Set.{u1} α) => Exists.{succ u1} α (fun (l : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) l s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) l s) => Exists.{succ u1} α (fun (u : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) u t) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) u t) => Exists.{0} (LT.lt.{u1} α (Preorder.toHasLt.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) l u) (fun (h : LT.lt.{u1} α (Preorder.toHasLt.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) l u) => Eq.{succ u1} (Set.{u1} α) (Set.Ioc.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1)))) l u) S)))))))
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : LinearOrder.{u1} α] (s : Set.{u1} α) (t : Set.{u1} α), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (S : Set.{u1} α) => Exists.{succ u1} α (fun (l : α) => And (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) l s) (Exists.{succ u1} α (fun (u : α) => And (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) u t) (And (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α (instDistribLattice.{u1} α _inst_1)))))) l u) (Eq.{succ u1} (Set.{u1} α) (Set.Ioc.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α (instDistribLattice.{u1} α _inst_1))))) l u) S)))))))
Case conversion may be inaccurate. Consider using '#align is_pi_system_Ioc_mem isPiSystem_Ioc_memₓ'. -/
@@ -259,7 +259,7 @@ theorem isPiSystem_Ioc_mem (s t : Set α) :
/- warning: is_pi_system_Ioc -> isPiSystem_Ioc is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} [_inst_1 : LinearOrder.{u1} α] (f : ι -> α) (g : ι' -> α), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (S : Set.{u1} α) => Exists.{u2} ι (fun (i : ι) => Exists.{u3} ι' (fun (j : ι') => Exists.{0} (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) (f i) (g j)) (fun (h : LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) (f i) (g j)) => Eq.{succ u1} (Set.{u1} α) (Set.Ioc.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1)))) (f i) (g j)) S)))))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} [_inst_1 : LinearOrder.{u1} α] (f : ι -> α) (g : ι' -> α), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (S : Set.{u1} α) => Exists.{u2} ι (fun (i : ι) => Exists.{u3} ι' (fun (j : ι') => Exists.{0} (LT.lt.{u1} α (Preorder.toHasLt.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) (f i) (g j)) (fun (h : LT.lt.{u1} α (Preorder.toHasLt.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) (f i) (g j)) => Eq.{succ u1} (Set.{u1} α) (Set.Ioc.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1)))) (f i) (g j)) S)))))
but is expected to have type
forall {α : Type.{u3}} {ι : Sort.{u2}} {ι' : Sort.{u1}} [_inst_1 : LinearOrder.{u3} α] (f : ι -> α) (g : ι' -> α), IsPiSystem.{u3} α (setOf.{u3} (Set.{u3} α) (fun (S : Set.{u3} α) => Exists.{u2} ι (fun (i : ι) => Exists.{u1} ι' (fun (j : ι') => And (LT.lt.{u3} α (Preorder.toLT.{u3} α (PartialOrder.toPreorder.{u3} α (SemilatticeInf.toPartialOrder.{u3} α (Lattice.toSemilatticeInf.{u3} α (DistribLattice.toLattice.{u3} α (instDistribLattice.{u3} α _inst_1)))))) (f i) (g j)) (Eq.{succ u3} (Set.{u3} α) (Set.Ioc.{u3} α (PartialOrder.toPreorder.{u3} α (SemilatticeInf.toPartialOrder.{u3} α (Lattice.toSemilatticeInf.{u3} α (DistribLattice.toLattice.{u3} α (instDistribLattice.{u3} α _inst_1))))) (f i) (g j)) S)))))
Case conversion may be inaccurate. Consider using '#align is_pi_system_Ioc isPiSystem_Iocₓ'. -/
@@ -270,7 +270,7 @@ theorem isPiSystem_Ioc (f : ι → α) (g : ι' → α) :
/- warning: is_pi_system_Ico_mem -> isPiSystem_Ico_mem is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : LinearOrder.{u1} α] (s : Set.{u1} α) (t : Set.{u1} α), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (S : Set.{u1} α) => Exists.{succ u1} α (fun (l : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) l s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) l s) => Exists.{succ u1} α (fun (u : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) u t) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) u t) => Exists.{0} (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) l u) (fun (h : LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) l u) => Eq.{succ u1} (Set.{u1} α) (Set.Ico.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1)))) l u) S)))))))
+ forall {α : Type.{u1}} [_inst_1 : LinearOrder.{u1} α] (s : Set.{u1} α) (t : Set.{u1} α), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (S : Set.{u1} α) => Exists.{succ u1} α (fun (l : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) l s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) l s) => Exists.{succ u1} α (fun (u : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) u t) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) u t) => Exists.{0} (LT.lt.{u1} α (Preorder.toHasLt.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) l u) (fun (h : LT.lt.{u1} α (Preorder.toHasLt.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) l u) => Eq.{succ u1} (Set.{u1} α) (Set.Ico.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1)))) l u) S)))))))
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : LinearOrder.{u1} α] (s : Set.{u1} α) (t : Set.{u1} α), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (S : Set.{u1} α) => Exists.{succ u1} α (fun (l : α) => And (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) l s) (Exists.{succ u1} α (fun (u : α) => And (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) u t) (And (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α (instDistribLattice.{u1} α _inst_1)))))) l u) (Eq.{succ u1} (Set.{u1} α) (Set.Ico.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α (instDistribLattice.{u1} α _inst_1))))) l u) S)))))))
Case conversion may be inaccurate. Consider using '#align is_pi_system_Ico_mem isPiSystem_Ico_memₓ'. -/
@@ -281,7 +281,7 @@ theorem isPiSystem_Ico_mem (s t : Set α) :
/- warning: is_pi_system_Ico -> isPiSystem_Ico is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} [_inst_1 : LinearOrder.{u1} α] (f : ι -> α) (g : ι' -> α), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (S : Set.{u1} α) => Exists.{u2} ι (fun (i : ι) => Exists.{u3} ι' (fun (j : ι') => Exists.{0} (LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) (f i) (g j)) (fun (h : LT.lt.{u1} α (Preorder.toLT.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) (f i) (g j)) => Eq.{succ u1} (Set.{u1} α) (Set.Ico.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1)))) (f i) (g j)) S)))))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} [_inst_1 : LinearOrder.{u1} α] (f : ι -> α) (g : ι' -> α), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (S : Set.{u1} α) => Exists.{u2} ι (fun (i : ι) => Exists.{u3} ι' (fun (j : ι') => Exists.{0} (LT.lt.{u1} α (Preorder.toHasLt.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) (f i) (g j)) (fun (h : LT.lt.{u1} α (Preorder.toHasLt.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) (f i) (g j)) => Eq.{succ u1} (Set.{u1} α) (Set.Ico.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1)))) (f i) (g j)) S)))))
but is expected to have type
forall {α : Type.{u3}} {ι : Sort.{u2}} {ι' : Sort.{u1}} [_inst_1 : LinearOrder.{u3} α] (f : ι -> α) (g : ι' -> α), IsPiSystem.{u3} α (setOf.{u3} (Set.{u3} α) (fun (S : Set.{u3} α) => Exists.{u2} ι (fun (i : ι) => Exists.{u1} ι' (fun (j : ι') => And (LT.lt.{u3} α (Preorder.toLT.{u3} α (PartialOrder.toPreorder.{u3} α (SemilatticeInf.toPartialOrder.{u3} α (Lattice.toSemilatticeInf.{u3} α (DistribLattice.toLattice.{u3} α (instDistribLattice.{u3} α _inst_1)))))) (f i) (g j)) (Eq.{succ u3} (Set.{u3} α) (Set.Ico.{u3} α (PartialOrder.toPreorder.{u3} α (SemilatticeInf.toPartialOrder.{u3} α (Lattice.toSemilatticeInf.{u3} α (DistribLattice.toLattice.{u3} α (instDistribLattice.{u3} α _inst_1))))) (f i) (g j)) S)))))
Case conversion may be inaccurate. Consider using '#align is_pi_system_Ico isPiSystem_Icoₓ'. -/
@@ -292,7 +292,7 @@ theorem isPiSystem_Ico (f : ι → α) (g : ι' → α) :
/- warning: is_pi_system_Icc_mem -> isPiSystem_Icc_mem is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} [_inst_1 : LinearOrder.{u1} α] (s : Set.{u1} α) (t : Set.{u1} α), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (S : Set.{u1} α) => Exists.{succ u1} α (fun (l : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) l s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) l s) => Exists.{succ u1} α (fun (u : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) u t) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) u t) => Exists.{0} (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) l u) (fun (h : LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) l u) => Eq.{succ u1} (Set.{u1} α) (Set.Icc.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1)))) l u) S)))))))
+ forall {α : Type.{u1}} [_inst_1 : LinearOrder.{u1} α] (s : Set.{u1} α) (t : Set.{u1} α), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (S : Set.{u1} α) => Exists.{succ u1} α (fun (l : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) l s) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) l s) => Exists.{succ u1} α (fun (u : α) => Exists.{0} (Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) u t) (fun (H : Membership.Mem.{u1, u1} α (Set.{u1} α) (Set.hasMem.{u1} α) u t) => Exists.{0} (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) l u) (fun (h : LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) l u) => Eq.{succ u1} (Set.{u1} α) (Set.Icc.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1)))) l u) S)))))))
but is expected to have type
forall {α : Type.{u1}} [_inst_1 : LinearOrder.{u1} α] (s : Set.{u1} α) (t : Set.{u1} α), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (S : Set.{u1} α) => Exists.{succ u1} α (fun (l : α) => And (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) l s) (Exists.{succ u1} α (fun (u : α) => And (Membership.mem.{u1, u1} α (Set.{u1} α) (Set.instMembershipSet.{u1} α) u t) (And (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α (instDistribLattice.{u1} α _inst_1)))))) l u) (Eq.{succ u1} (Set.{u1} α) (Set.Icc.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (DistribLattice.toLattice.{u1} α (instDistribLattice.{u1} α _inst_1))))) l u) S)))))))
Case conversion may be inaccurate. Consider using '#align is_pi_system_Icc_mem isPiSystem_Icc_memₓ'. -/
@@ -303,7 +303,7 @@ theorem isPiSystem_Icc_mem (s t : Set α) :
/- warning: is_pi_system_Icc -> isPiSystem_Icc is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} [_inst_1 : LinearOrder.{u1} α] (f : ι -> α) (g : ι' -> α), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (S : Set.{u1} α) => Exists.{u2} ι (fun (i : ι) => Exists.{u3} ι' (fun (j : ι') => Exists.{0} (LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) (f i) (g j)) (fun (h : LE.le.{u1} α (Preorder.toLE.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) (f i) (g j)) => Eq.{succ u1} (Set.{u1} α) (Set.Icc.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1)))) (f i) (g j)) S)))))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} {ι' : Sort.{u3}} [_inst_1 : LinearOrder.{u1} α] (f : ι -> α) (g : ι' -> α), IsPiSystem.{u1} α (setOf.{u1} (Set.{u1} α) (fun (S : Set.{u1} α) => Exists.{u2} ι (fun (i : ι) => Exists.{u3} ι' (fun (j : ι') => Exists.{0} (LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) (f i) (g j)) (fun (h : LE.le.{u1} α (Preorder.toHasLe.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1))))) (f i) (g j)) => Eq.{succ u1} (Set.{u1} α) (Set.Icc.{u1} α (PartialOrder.toPreorder.{u1} α (SemilatticeInf.toPartialOrder.{u1} α (Lattice.toSemilatticeInf.{u1} α (LinearOrder.toLattice.{u1} α _inst_1)))) (f i) (g j)) S)))))
but is expected to have type
forall {α : Type.{u3}} {ι : Sort.{u2}} {ι' : Sort.{u1}} [_inst_1 : LinearOrder.{u3} α] (f : ι -> α) (g : ι' -> α), IsPiSystem.{u3} α (setOf.{u3} (Set.{u3} α) (fun (S : Set.{u3} α) => Exists.{u2} ι (fun (i : ι) => Exists.{u1} ι' (fun (j : ι') => And (LE.le.{u3} α (Preorder.toLE.{u3} α (PartialOrder.toPreorder.{u3} α (SemilatticeInf.toPartialOrder.{u3} α (Lattice.toSemilatticeInf.{u3} α (DistribLattice.toLattice.{u3} α (instDistribLattice.{u3} α _inst_1)))))) (f i) (g j)) (Eq.{succ u3} (Set.{u3} α) (Set.Icc.{u3} α (PartialOrder.toPreorder.{u3} α (SemilatticeInf.toPartialOrder.{u3} α (Lattice.toSemilatticeInf.{u3} α (DistribLattice.toLattice.{u3} α (instDistribLattice.{u3} α _inst_1))))) (f i) (g j)) S)))))
Case conversion may be inaccurate. Consider using '#align is_pi_system_Icc isPiSystem_Iccₓ'. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/e3fb84046afd187b710170887195d50bada934ee
@@ -137,33 +137,33 @@ theorem IsPiSystem.comap {α β} {S : Set (Set β)} (h_pi : IsPiSystem S) (f :
simpa using hst
#align is_pi_system.comap IsPiSystem.comap
-/- warning: is_pi_system_Union_of_directed_le -> isPiSystem_unionᵢ_of_directed_le is a dubious translation:
+/- warning: is_pi_system_Union_of_directed_le -> isPiSystem_iUnion_of_directed_le is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Sort.{u2}} (p : ι -> (Set.{u1} (Set.{u1} α))), (forall (n : ι), IsPiSystem.{u1} α (p n)) -> (Directed.{u1, u2} (Set.{u1} (Set.{u1} α)) ι (LE.le.{u1} (Set.{u1} (Set.{u1} α)) (Set.hasLe.{u1} (Set.{u1} α))) p) -> (IsPiSystem.{u1} α (Set.unionᵢ.{u1, u2} (Set.{u1} α) ι (fun (n : ι) => p n)))
+ forall {α : Type.{u1}} {ι : Sort.{u2}} (p : ι -> (Set.{u1} (Set.{u1} α))), (forall (n : ι), IsPiSystem.{u1} α (p n)) -> (Directed.{u1, u2} (Set.{u1} (Set.{u1} α)) ι (LE.le.{u1} (Set.{u1} (Set.{u1} α)) (Set.hasLe.{u1} (Set.{u1} α))) p) -> (IsPiSystem.{u1} α (Set.iUnion.{u1, u2} (Set.{u1} α) ι (fun (n : ι) => p n)))
but is expected to have type
- forall {α : Type.{u2}} {ι : Sort.{u1}} (p : ι -> (Set.{u2} (Set.{u2} α))), (forall (n : ι), IsPiSystem.{u2} α (p n)) -> (Directed.{u2, u1} (Set.{u2} (Set.{u2} α)) ι (fun (x._@.Mathlib.MeasureTheory.PiSystem._hyg.544 : Set.{u2} (Set.{u2} α)) (x._@.Mathlib.MeasureTheory.PiSystem._hyg.546 : Set.{u2} (Set.{u2} α)) => LE.le.{u2} (Set.{u2} (Set.{u2} α)) (Set.instLESet.{u2} (Set.{u2} α)) x._@.Mathlib.MeasureTheory.PiSystem._hyg.544 x._@.Mathlib.MeasureTheory.PiSystem._hyg.546) p) -> (IsPiSystem.{u2} α (Set.unionᵢ.{u2, u1} (Set.{u2} α) ι (fun (n : ι) => p n)))
-Case conversion may be inaccurate. Consider using '#align is_pi_system_Union_of_directed_le isPiSystem_unionᵢ_of_directed_leₓ'. -/
-theorem isPiSystem_unionᵢ_of_directed_le {α ι} (p : ι → Set (Set α)) (hp_pi : ∀ n, IsPiSystem (p n))
+ forall {α : Type.{u2}} {ι : Sort.{u1}} (p : ι -> (Set.{u2} (Set.{u2} α))), (forall (n : ι), IsPiSystem.{u2} α (p n)) -> (Directed.{u2, u1} (Set.{u2} (Set.{u2} α)) ι (fun (x._@.Mathlib.MeasureTheory.PiSystem._hyg.544 : Set.{u2} (Set.{u2} α)) (x._@.Mathlib.MeasureTheory.PiSystem._hyg.546 : Set.{u2} (Set.{u2} α)) => LE.le.{u2} (Set.{u2} (Set.{u2} α)) (Set.instLESet.{u2} (Set.{u2} α)) x._@.Mathlib.MeasureTheory.PiSystem._hyg.544 x._@.Mathlib.MeasureTheory.PiSystem._hyg.546) p) -> (IsPiSystem.{u2} α (Set.iUnion.{u2, u1} (Set.{u2} α) ι (fun (n : ι) => p n)))
+Case conversion may be inaccurate. Consider using '#align is_pi_system_Union_of_directed_le isPiSystem_iUnion_of_directed_leₓ'. -/
+theorem isPiSystem_iUnion_of_directed_le {α ι} (p : ι → Set (Set α)) (hp_pi : ∀ n, IsPiSystem (p n))
(hp_directed : Directed (· ≤ ·) p) : IsPiSystem (⋃ n, p n) :=
by
intro t1 ht1 t2 ht2 h
- rw [Set.mem_unionᵢ] at ht1 ht2⊢
+ rw [Set.mem_iUnion] at ht1 ht2⊢
cases' ht1 with n ht1
cases' ht2 with m ht2
obtain ⟨k, hpnk, hpmk⟩ : ∃ k, p n ≤ p k ∧ p m ≤ p k := hp_directed n m
exact ⟨k, hp_pi k t1 (hpnk ht1) t2 (hpmk ht2) h⟩
-#align is_pi_system_Union_of_directed_le isPiSystem_unionᵢ_of_directed_le
+#align is_pi_system_Union_of_directed_le isPiSystem_iUnion_of_directed_le
-/- warning: is_pi_system_Union_of_monotone -> isPiSystem_unionᵢ_of_monotone is a dubious translation:
+/- warning: is_pi_system_Union_of_monotone -> isPiSystem_iUnion_of_monotone is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : SemilatticeSup.{u2} ι] (p : ι -> (Set.{u1} (Set.{u1} α))), (forall (n : ι), IsPiSystem.{u1} α (p n)) -> (Monotone.{u2, u1} ι (Set.{u1} (Set.{u1} α)) (PartialOrder.toPreorder.{u2} ι (SemilatticeSup.toPartialOrder.{u2} ι _inst_1)) (PartialOrder.toPreorder.{u1} (Set.{u1} (Set.{u1} α)) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} (Set.{u1} α)) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} (Set.{u1} α)) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} (Set.{u1} α)) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} (Set.{u1} α)) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} (Set.{u1} α)) (Set.completeBooleanAlgebra.{u1} (Set.{u1} α)))))))) p) -> (IsPiSystem.{u1} α (Set.unionᵢ.{u1, succ u2} (Set.{u1} α) ι (fun (n : ι) => p n)))
+ forall {α : Type.{u1}} {ι : Type.{u2}} [_inst_1 : SemilatticeSup.{u2} ι] (p : ι -> (Set.{u1} (Set.{u1} α))), (forall (n : ι), IsPiSystem.{u1} α (p n)) -> (Monotone.{u2, u1} ι (Set.{u1} (Set.{u1} α)) (PartialOrder.toPreorder.{u2} ι (SemilatticeSup.toPartialOrder.{u2} ι _inst_1)) (PartialOrder.toPreorder.{u1} (Set.{u1} (Set.{u1} α)) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} (Set.{u1} α)) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} (Set.{u1} α)) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} (Set.{u1} α)) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} (Set.{u1} α)) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} (Set.{u1} α)) (Set.completeBooleanAlgebra.{u1} (Set.{u1} α)))))))) p) -> (IsPiSystem.{u1} α (Set.iUnion.{u1, succ u2} (Set.{u1} α) ι (fun (n : ι) => p n)))
but is expected to have type
- forall {α : Type.{u2}} {ι : Type.{u1}} [_inst_1 : SemilatticeSup.{u1} ι] (p : ι -> (Set.{u2} (Set.{u2} α))), (forall (n : ι), IsPiSystem.{u2} α (p n)) -> (Monotone.{u1, u2} ι (Set.{u2} (Set.{u2} α)) (PartialOrder.toPreorder.{u1} ι (SemilatticeSup.toPartialOrder.{u1} ι _inst_1)) (PartialOrder.toPreorder.{u2} (Set.{u2} (Set.{u2} α)) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} (Set.{u2} α)) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} (Set.{u2} α)) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} (Set.{u2} α)) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} (Set.{u2} α)) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} (Set.{u2} α)) (Set.instCompleteBooleanAlgebraSet.{u2} (Set.{u2} α)))))))) p) -> (IsPiSystem.{u2} α (Set.unionᵢ.{u2, succ u1} (Set.{u2} α) ι (fun (n : ι) => p n)))
-Case conversion may be inaccurate. Consider using '#align is_pi_system_Union_of_monotone isPiSystem_unionᵢ_of_monotoneₓ'. -/
-theorem isPiSystem_unionᵢ_of_monotone {α ι} [SemilatticeSup ι] (p : ι → Set (Set α))
+ forall {α : Type.{u2}} {ι : Type.{u1}} [_inst_1 : SemilatticeSup.{u1} ι] (p : ι -> (Set.{u2} (Set.{u2} α))), (forall (n : ι), IsPiSystem.{u2} α (p n)) -> (Monotone.{u1, u2} ι (Set.{u2} (Set.{u2} α)) (PartialOrder.toPreorder.{u1} ι (SemilatticeSup.toPartialOrder.{u1} ι _inst_1)) (PartialOrder.toPreorder.{u2} (Set.{u2} (Set.{u2} α)) (CompleteSemilatticeInf.toPartialOrder.{u2} (Set.{u2} (Set.{u2} α)) (CompleteLattice.toCompleteSemilatticeInf.{u2} (Set.{u2} (Set.{u2} α)) (Order.Coframe.toCompleteLattice.{u2} (Set.{u2} (Set.{u2} α)) (CompleteDistribLattice.toCoframe.{u2} (Set.{u2} (Set.{u2} α)) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u2} (Set.{u2} (Set.{u2} α)) (Set.instCompleteBooleanAlgebraSet.{u2} (Set.{u2} α)))))))) p) -> (IsPiSystem.{u2} α (Set.iUnion.{u2, succ u1} (Set.{u2} α) ι (fun (n : ι) => p n)))
+Case conversion may be inaccurate. Consider using '#align is_pi_system_Union_of_monotone isPiSystem_iUnion_of_monotoneₓ'. -/
+theorem isPiSystem_iUnion_of_monotone {α ι} [SemilatticeSup ι] (p : ι → Set (Set α))
(hp_pi : ∀ n, IsPiSystem (p n)) (hp_mono : Monotone p) : IsPiSystem (⋃ n, p n) :=
- isPiSystem_unionᵢ_of_directed_le p hp_pi (Monotone.directed_le hp_mono)
-#align is_pi_system_Union_of_monotone isPiSystem_unionᵢ_of_monotone
+ isPiSystem_iUnion_of_directed_le p hp_pi (Monotone.directed_le hp_mono)
+#align is_pi_system_Union_of_monotone isPiSystem_iUnion_of_monotone
section Order
@@ -393,16 +393,16 @@ theorem generateFrom_generatePiSystem_eq {α} {g : Set (Set α)} :
#align generate_from_generate_pi_system_eq generateFrom_generatePiSystem_eq
-/
-/- warning: mem_generate_pi_system_Union_elim -> mem_generatePiSystem_unionᵢ_elim is a dubious translation:
+/- warning: mem_generate_pi_system_Union_elim -> mem_generatePiSystem_iUnion_elim is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {g : β -> (Set.{u1} (Set.{u1} α))}, (forall (b : β), IsPiSystem.{u1} α (g b)) -> (forall (t : Set.{u1} α), (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) t (generatePiSystem.{u1} α (Set.unionᵢ.{u1, succ u2} (Set.{u1} α) β (fun (b : β) => g b)))) -> (Exists.{succ u2} (Finset.{u2} β) (fun (T : Finset.{u2} β) => Exists.{max (succ u2) (succ u1)} (β -> (Set.{u1} α)) (fun (f : β -> (Set.{u1} α)) => And (Eq.{succ u1} (Set.{u1} α) t (Set.interᵢ.{u1, succ u2} α β (fun (b : β) => Set.interᵢ.{u1, 0} α (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) b T) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) b T) => f b)))) (forall (b : β), (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) b T) -> (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) (f b) (g b)))))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {g : β -> (Set.{u1} (Set.{u1} α))}, (forall (b : β), IsPiSystem.{u1} α (g b)) -> (forall (t : Set.{u1} α), (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) t (generatePiSystem.{u1} α (Set.iUnion.{u1, succ u2} (Set.{u1} α) β (fun (b : β) => g b)))) -> (Exists.{succ u2} (Finset.{u2} β) (fun (T : Finset.{u2} β) => Exists.{max (succ u2) (succ u1)} (β -> (Set.{u1} α)) (fun (f : β -> (Set.{u1} α)) => And (Eq.{succ u1} (Set.{u1} α) t (Set.iInter.{u1, succ u2} α β (fun (b : β) => Set.iInter.{u1, 0} α (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) b T) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) b T) => f b)))) (forall (b : β), (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) b T) -> (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) (f b) (g b)))))))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {g : β -> (Set.{u2} (Set.{u2} α))}, (forall (b : β), IsPiSystem.{u2} α (g b)) -> (forall (t : Set.{u2} α), (Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) t (generatePiSystem.{u2} α (Set.unionᵢ.{u2, succ u1} (Set.{u2} α) β (fun (b : β) => g b)))) -> (Exists.{succ u1} (Finset.{u1} β) (fun (T : Finset.{u1} β) => Exists.{max (succ u2) (succ u1)} (β -> (Set.{u2} α)) (fun (f : β -> (Set.{u2} α)) => And (Eq.{succ u2} (Set.{u2} α) t (Set.interᵢ.{u2, succ u1} α β (fun (b : β) => Set.interᵢ.{u2, 0} α (Membership.mem.{u1, u1} β (Finset.{u1} β) (Finset.instMembershipFinset.{u1} β) b T) (fun (H : Membership.mem.{u1, u1} β (Finset.{u1} β) (Finset.instMembershipFinset.{u1} β) b T) => f b)))) (forall (b : β), (Membership.mem.{u1, u1} β (Finset.{u1} β) (Finset.instMembershipFinset.{u1} β) b T) -> (Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) (f b) (g b)))))))
-Case conversion may be inaccurate. Consider using '#align mem_generate_pi_system_Union_elim mem_generatePiSystem_unionᵢ_elimₓ'. -/
+ forall {α : Type.{u2}} {β : Type.{u1}} {g : β -> (Set.{u2} (Set.{u2} α))}, (forall (b : β), IsPiSystem.{u2} α (g b)) -> (forall (t : Set.{u2} α), (Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) t (generatePiSystem.{u2} α (Set.iUnion.{u2, succ u1} (Set.{u2} α) β (fun (b : β) => g b)))) -> (Exists.{succ u1} (Finset.{u1} β) (fun (T : Finset.{u1} β) => Exists.{max (succ u2) (succ u1)} (β -> (Set.{u2} α)) (fun (f : β -> (Set.{u2} α)) => And (Eq.{succ u2} (Set.{u2} α) t (Set.iInter.{u2, succ u1} α β (fun (b : β) => Set.iInter.{u2, 0} α (Membership.mem.{u1, u1} β (Finset.{u1} β) (Finset.instMembershipFinset.{u1} β) b T) (fun (H : Membership.mem.{u1, u1} β (Finset.{u1} β) (Finset.instMembershipFinset.{u1} β) b T) => f b)))) (forall (b : β), (Membership.mem.{u1, u1} β (Finset.{u1} β) (Finset.instMembershipFinset.{u1} β) b T) -> (Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) (f b) (g b)))))))
+Case conversion may be inaccurate. Consider using '#align mem_generate_pi_system_Union_elim mem_generatePiSystem_iUnion_elimₓ'. -/
/- Every element of the π-system generated by the union of a family of π-systems
is a finite intersection of elements from the π-systems.
For an indexed union version, see `mem_generate_pi_system_Union_elim'`. -/
-theorem mem_generatePiSystem_unionᵢ_elim {α β} {g : β → Set (Set α)} (h_pi : ∀ b, IsPiSystem (g b))
+theorem mem_generatePiSystem_iUnion_elim {α β} {g : β → Set (Set α)} (h_pi : ∀ b, IsPiSystem (g b))
(t : Set α) (h_t : t ∈ generatePiSystem (⋃ b, g b)) :
∃ (T : Finset β)(f : β → Set α), (t = ⋂ b ∈ T, f b) ∧ ∀ b ∈ T, f b ∈ g b :=
by
@@ -417,7 +417,7 @@ theorem mem_generatePiSystem_unionᵢ_elim {α β} {g : β → Set (Set α)} (h_
else if b ∈ T_t' then f_t' b else (∅ : Set α)
constructor
· ext a
- simp_rw [Set.mem_inter_iff, Set.mem_interᵢ, Finset.mem_union, or_imp]
+ simp_rw [Set.mem_inter_iff, Set.mem_iInter, Finset.mem_union, or_imp]
rw [← forall_and]
constructor <;> intro h1 b <;> by_cases hbs : b ∈ T_s <;> by_cases hbt : b ∈ T_t' <;>
specialize h1 b <;>
@@ -427,23 +427,23 @@ theorem mem_generatePiSystem_unionᵢ_elim {α β} {g : β → Set (Set α)} (h_
intro b h_b
split_ifs with hbs hbt hbt
· refine' h_pi b (f_s b) (h_s b hbs) (f_t' b) (h_t' b hbt) (Set.Nonempty.mono _ h_nonempty)
- exact Set.inter_subset_inter (Set.binterᵢ_subset_of_mem hbs) (Set.binterᵢ_subset_of_mem hbt)
+ exact Set.inter_subset_inter (Set.biInter_subset_of_mem hbs) (Set.biInter_subset_of_mem hbt)
· exact h_s b hbs
· exact h_t' b hbt
· rw [Finset.mem_union] at h_b
apply False.elim (h_b.elim hbs hbt)
-#align mem_generate_pi_system_Union_elim mem_generatePiSystem_unionᵢ_elim
+#align mem_generate_pi_system_Union_elim mem_generatePiSystem_iUnion_elim
-/- warning: mem_generate_pi_system_Union_elim' -> mem_generatePiSystem_unionᵢ_elim' is a dubious translation:
+/- warning: mem_generate_pi_system_Union_elim' -> mem_generatePiSystem_iUnion_elim' is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {β : Type.{u2}} {g : β -> (Set.{u1} (Set.{u1} α))} {s : Set.{u2} β}, (forall (b : β), (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) b s) -> (IsPiSystem.{u1} α (g b))) -> (forall (t : Set.{u1} α), (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) t (generatePiSystem.{u1} α (Set.unionᵢ.{u1, succ u2} (Set.{u1} α) β (fun (b : β) => Set.unionᵢ.{u1, 0} (Set.{u1} α) (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) b s) (fun (H : Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) b s) => g b))))) -> (Exists.{succ u2} (Finset.{u2} β) (fun (T : Finset.{u2} β) => Exists.{max (succ u2) (succ u1)} (β -> (Set.{u1} α)) (fun (f : β -> (Set.{u1} α)) => And (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) T) s) (And (Eq.{succ u1} (Set.{u1} α) t (Set.interᵢ.{u1, succ u2} α β (fun (b : β) => Set.interᵢ.{u1, 0} α (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) b T) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) b T) => f b)))) (forall (b : β), (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) b T) -> (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) (f b) (g b))))))))
+ forall {α : Type.{u1}} {β : Type.{u2}} {g : β -> (Set.{u1} (Set.{u1} α))} {s : Set.{u2} β}, (forall (b : β), (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) b s) -> (IsPiSystem.{u1} α (g b))) -> (forall (t : Set.{u1} α), (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) t (generatePiSystem.{u1} α (Set.iUnion.{u1, succ u2} (Set.{u1} α) β (fun (b : β) => Set.iUnion.{u1, 0} (Set.{u1} α) (Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) b s) (fun (H : Membership.Mem.{u2, u2} β (Set.{u2} β) (Set.hasMem.{u2} β) b s) => g b))))) -> (Exists.{succ u2} (Finset.{u2} β) (fun (T : Finset.{u2} β) => Exists.{max (succ u2) (succ u1)} (β -> (Set.{u1} α)) (fun (f : β -> (Set.{u1} α)) => And (HasSubset.Subset.{u2} (Set.{u2} β) (Set.hasSubset.{u2} β) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} β) (Set.{u2} β) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} β) (Set.{u2} β) (Finset.Set.hasCoeT.{u2} β))) T) s) (And (Eq.{succ u1} (Set.{u1} α) t (Set.iInter.{u1, succ u2} α β (fun (b : β) => Set.iInter.{u1, 0} α (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) b T) (fun (H : Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) b T) => f b)))) (forall (b : β), (Membership.Mem.{u2, u2} β (Finset.{u2} β) (Finset.hasMem.{u2} β) b T) -> (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) (f b) (g b))))))))
but is expected to have type
- forall {α : Type.{u2}} {β : Type.{u1}} {g : β -> (Set.{u2} (Set.{u2} α))} {s : Set.{u1} β}, (forall (b : β), (Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) b s) -> (IsPiSystem.{u2} α (g b))) -> (forall (t : Set.{u2} α), (Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) t (generatePiSystem.{u2} α (Set.unionᵢ.{u2, succ u1} (Set.{u2} α) β (fun (b : β) => Set.unionᵢ.{u2, 0} (Set.{u2} α) (Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) b s) (fun (H : Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) b s) => g b))))) -> (Exists.{succ u1} (Finset.{u1} β) (fun (T : Finset.{u1} β) => Exists.{max (succ u2) (succ u1)} (β -> (Set.{u2} α)) (fun (f : β -> (Set.{u2} α)) => And (HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (Finset.toSet.{u1} β T) s) (And (Eq.{succ u2} (Set.{u2} α) t (Set.interᵢ.{u2, succ u1} α β (fun (b : β) => Set.interᵢ.{u2, 0} α (Membership.mem.{u1, u1} β (Finset.{u1} β) (Finset.instMembershipFinset.{u1} β) b T) (fun (H : Membership.mem.{u1, u1} β (Finset.{u1} β) (Finset.instMembershipFinset.{u1} β) b T) => f b)))) (forall (b : β), (Membership.mem.{u1, u1} β (Finset.{u1} β) (Finset.instMembershipFinset.{u1} β) b T) -> (Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) (f b) (g b))))))))
-Case conversion may be inaccurate. Consider using '#align mem_generate_pi_system_Union_elim' mem_generatePiSystem_unionᵢ_elim'ₓ'. -/
+ forall {α : Type.{u2}} {β : Type.{u1}} {g : β -> (Set.{u2} (Set.{u2} α))} {s : Set.{u1} β}, (forall (b : β), (Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) b s) -> (IsPiSystem.{u2} α (g b))) -> (forall (t : Set.{u2} α), (Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) t (generatePiSystem.{u2} α (Set.iUnion.{u2, succ u1} (Set.{u2} α) β (fun (b : β) => Set.iUnion.{u2, 0} (Set.{u2} α) (Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) b s) (fun (H : Membership.mem.{u1, u1} β (Set.{u1} β) (Set.instMembershipSet.{u1} β) b s) => g b))))) -> (Exists.{succ u1} (Finset.{u1} β) (fun (T : Finset.{u1} β) => Exists.{max (succ u2) (succ u1)} (β -> (Set.{u2} α)) (fun (f : β -> (Set.{u2} α)) => And (HasSubset.Subset.{u1} (Set.{u1} β) (Set.instHasSubsetSet.{u1} β) (Finset.toSet.{u1} β T) s) (And (Eq.{succ u2} (Set.{u2} α) t (Set.iInter.{u2, succ u1} α β (fun (b : β) => Set.iInter.{u2, 0} α (Membership.mem.{u1, u1} β (Finset.{u1} β) (Finset.instMembershipFinset.{u1} β) b T) (fun (H : Membership.mem.{u1, u1} β (Finset.{u1} β) (Finset.instMembershipFinset.{u1} β) b T) => f b)))) (forall (b : β), (Membership.mem.{u1, u1} β (Finset.{u1} β) (Finset.instMembershipFinset.{u1} β) b T) -> (Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) (f b) (g b))))))))
+Case conversion may be inaccurate. Consider using '#align mem_generate_pi_system_Union_elim' mem_generatePiSystem_iUnion_elim'ₓ'. -/
/- Every element of the π-system generated by an indexed union of a family of π-systems
is a finite intersection of elements from the π-systems.
For a total union version, see `mem_generate_pi_system_Union_elim`. -/
-theorem mem_generatePiSystem_unionᵢ_elim' {α β} {g : β → Set (Set α)} {s : Set β}
+theorem mem_generatePiSystem_iUnion_elim' {α β} {g : β → Set (Set α)} {s : Set β}
(h_pi : ∀ b ∈ s, IsPiSystem (g b)) (t : Set α) (h_t : t ∈ generatePiSystem (⋃ b ∈ s, g b)) :
∃ (T : Finset β)(f : β → Set α), ↑T ⊆ s ∧ (t = ⋂ b ∈ T, f b) ∧ ∀ b ∈ T, f b ∈ g b :=
by
@@ -452,16 +452,16 @@ theorem mem_generatePiSystem_unionᵢ_elim' {α β} {g : β → Set (Set α)} {s
suffices h1 : (⋃ b : Subtype s, (g ∘ Subtype.val) b) = ⋃ b ∈ s, g b
· rwa [h1]
ext x
- simp only [exists_prop, Set.mem_unionᵢ, Function.comp_apply, Subtype.exists, Subtype.coe_mk]
+ simp only [exists_prop, Set.mem_iUnion, Function.comp_apply, Subtype.exists, Subtype.coe_mk]
rfl
- rcases@mem_generatePiSystem_unionᵢ_elim α (Subtype s) (g ∘ Subtype.val)
+ rcases@mem_generatePiSystem_iUnion_elim α (Subtype s) (g ∘ Subtype.val)
(fun b => h_pi b.val b.property) t this with
⟨T, ⟨f, ⟨rfl, h_t'⟩⟩⟩
refine'
⟨T.image Subtype.val, Function.extend Subtype.val f fun b : β => (∅ : Set α), by simp, _, _⟩
· ext a
constructor <;>
- · simp only [Set.mem_interᵢ, Subtype.forall, Finset.set_binterᵢ_finset_image]
+ · simp only [Set.mem_iInter, Subtype.forall, Finset.set_biInter_finset_image]
intro h1 b h_b h_b_in_T
have h2 := h1 b h_b h_b_in_T
revert h2
@@ -475,7 +475,7 @@ theorem mem_generatePiSystem_unionᵢ_elim' {α β} {g : β → Set (Set α)} {s
rw [h_b_alt, subtype.val_injective.extend_apply]
apply h_t'
apply h_b_h
-#align mem_generate_pi_system_Union_elim' mem_generatePiSystem_unionᵢ_elim'
+#align mem_generate_pi_system_Union_elim' mem_generatePiSystem_iUnion_elim'
section UnionInter
@@ -484,26 +484,26 @@ variable {α ι : Type _}
/-! ### π-system generated by finite intersections of sets of a π-system family -/
-#print piUnionᵢInter /-
+#print piiUnionInter /-
/-- From a set of indices `S : set ι` 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 finset `t ⊆ S` and sets
`f x ∈ π x`. If `π` is a family of π-systems, then it is a π-system. -/
-def piUnionᵢInter (π : ι → Set (Set α)) (S : Set ι) : Set (Set α) :=
+def piiUnionInter (π : ι → Set (Set α)) (S : Set ι) : Set (Set α) :=
{ s : Set α |
∃ (t : Finset ι)(htS : ↑t ⊆ S)(f : ι → Set α)(hf : ∀ x, x ∈ t → f x ∈ π x), s = ⋂ x ∈ t, f x }
-#align pi_Union_Inter piUnionᵢInter
+#align pi_Union_Inter piiUnionInter
-/
-/- warning: pi_Union_Inter_singleton -> piUnionᵢInter_singleton is a dubious translation:
+/- warning: pi_Union_Inter_singleton -> piiUnionInter_singleton is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} (π : ι -> (Set.{u1} (Set.{u1} α))) (i : ι), Eq.{succ u1} (Set.{u1} (Set.{u1} α)) (piUnionᵢInter.{u1, u2} α ι π (Singleton.singleton.{u2, u2} ι (Set.{u2} ι) (Set.hasSingleton.{u2} ι) i)) (Union.union.{u1} (Set.{u1} (Set.{u1} α)) (Set.hasUnion.{u1} (Set.{u1} α)) (π i) (Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasSingleton.{u1} (Set.{u1} α)) (Set.univ.{u1} α)))
+ forall {α : Type.{u1}} {ι : Type.{u2}} (π : ι -> (Set.{u1} (Set.{u1} α))) (i : ι), Eq.{succ u1} (Set.{u1} (Set.{u1} α)) (piiUnionInter.{u1, u2} α ι π (Singleton.singleton.{u2, u2} ι (Set.{u2} ι) (Set.hasSingleton.{u2} ι) i)) (Union.union.{u1} (Set.{u1} (Set.{u1} α)) (Set.hasUnion.{u1} (Set.{u1} α)) (π i) (Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasSingleton.{u1} (Set.{u1} α)) (Set.univ.{u1} α)))
but is expected to have type
- forall {α : Type.{u2}} {ι : Type.{u1}} (π : ι -> (Set.{u2} (Set.{u2} α))) (i : ι), Eq.{succ u2} (Set.{u2} (Set.{u2} α)) (piUnionᵢInter.{u2, u1} α ι π (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i)) (Union.union.{u2} (Set.{u2} (Set.{u2} α)) (Set.instUnionSet.{u2} (Set.{u2} α)) (π i) (Singleton.singleton.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instSingletonSet.{u2} (Set.{u2} α)) (Set.univ.{u2} α)))
-Case conversion may be inaccurate. Consider using '#align pi_Union_Inter_singleton piUnionᵢInter_singletonₓ'. -/
-theorem piUnionᵢInter_singleton (π : ι → Set (Set α)) (i : ι) :
- piUnionᵢInter π {i} = π i ∪ {univ} := by
+ forall {α : Type.{u2}} {ι : Type.{u1}} (π : ι -> (Set.{u2} (Set.{u2} α))) (i : ι), Eq.{succ u2} (Set.{u2} (Set.{u2} α)) (piiUnionInter.{u2, u1} α ι π (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i)) (Union.union.{u2} (Set.{u2} (Set.{u2} α)) (Set.instUnionSet.{u2} (Set.{u2} α)) (π i) (Singleton.singleton.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instSingletonSet.{u2} (Set.{u2} α)) (Set.univ.{u2} α)))
+Case conversion may be inaccurate. Consider using '#align pi_Union_Inter_singleton piiUnionInter_singletonₓ'. -/
+theorem piiUnionInter_singleton (π : ι → Set (Set α)) (i : ι) :
+ piiUnionInter π {i} = π i ∪ {univ} := by
ext1 s
- simp only [piUnionᵢInter, exists_prop, mem_union]
+ simp only [piiUnionInter, exists_prop, mem_union]
refine' ⟨_, fun h => _⟩
· rintro ⟨t, hti, f, hfπ, rfl⟩
simp only [subset_singleton_iff, Finset.mem_coe] at hti
@@ -529,66 +529,66 @@ theorem piUnionᵢInter_singleton (π : ι → Set (Set α)) (i : ι) :
simpa only [Finset.coe_empty, subset_singleton_iff, mem_empty_iff_false, IsEmpty.forall_iff,
imp_true_iff, Finset.not_mem_empty, Inter_false, Inter_univ, true_and_iff,
exists_const] using hs
-#align pi_Union_Inter_singleton piUnionᵢInter_singleton
+#align pi_Union_Inter_singleton piiUnionInter_singleton
-/- warning: pi_Union_Inter_singleton_left -> piUnionᵢInter_singleton_left is a dubious translation:
+/- warning: pi_Union_Inter_singleton_left -> piiUnionInter_singleton_left is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} (s : ι -> (Set.{u1} α)) (S : Set.{u2} ι), Eq.{succ u1} (Set.{u1} (Set.{u1} α)) (piUnionᵢInter.{u1, u2} α ι (fun (i : ι) => Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasSingleton.{u1} (Set.{u1} α)) (s i)) S) (setOf.{u1} (Set.{u1} α) (fun (s' : Set.{u1} α) => Exists.{succ u2} (Finset.{u2} ι) (fun (t : Finset.{u2} ι) => Exists.{0} (HasSubset.Subset.{u2} (Set.{u2} ι) (Set.hasSubset.{u2} ι) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} ι) (Set.{u2} ι) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} ι) (Set.{u2} ι) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} ι) (Set.{u2} ι) (Finset.Set.hasCoeT.{u2} ι))) t) S) (fun (htS : HasSubset.Subset.{u2} (Set.{u2} ι) (Set.hasSubset.{u2} ι) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} ι) (Set.{u2} ι) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} ι) (Set.{u2} ι) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} ι) (Set.{u2} ι) (Finset.Set.hasCoeT.{u2} ι))) t) S) => Eq.{succ u1} (Set.{u1} α) s' (Set.interᵢ.{u1, succ u2} α ι (fun (i : ι) => Set.interᵢ.{u1, 0} α (Membership.Mem.{u2, u2} ι (Finset.{u2} ι) (Finset.hasMem.{u2} ι) i t) (fun (H : Membership.Mem.{u2, u2} ι (Finset.{u2} ι) (Finset.hasMem.{u2} ι) i t) => s i)))))))
+ forall {α : Type.{u1}} {ι : Type.{u2}} (s : ι -> (Set.{u1} α)) (S : Set.{u2} ι), Eq.{succ u1} (Set.{u1} (Set.{u1} α)) (piiUnionInter.{u1, u2} α ι (fun (i : ι) => Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasSingleton.{u1} (Set.{u1} α)) (s i)) S) (setOf.{u1} (Set.{u1} α) (fun (s' : Set.{u1} α) => Exists.{succ u2} (Finset.{u2} ι) (fun (t : Finset.{u2} ι) => Exists.{0} (HasSubset.Subset.{u2} (Set.{u2} ι) (Set.hasSubset.{u2} ι) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} ι) (Set.{u2} ι) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} ι) (Set.{u2} ι) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} ι) (Set.{u2} ι) (Finset.Set.hasCoeT.{u2} ι))) t) S) (fun (htS : HasSubset.Subset.{u2} (Set.{u2} ι) (Set.hasSubset.{u2} ι) ((fun (a : Type.{u2}) (b : Type.{u2}) [self : HasLiftT.{succ u2, succ u2} a b] => self.0) (Finset.{u2} ι) (Set.{u2} ι) (HasLiftT.mk.{succ u2, succ u2} (Finset.{u2} ι) (Set.{u2} ι) (CoeTCₓ.coe.{succ u2, succ u2} (Finset.{u2} ι) (Set.{u2} ι) (Finset.Set.hasCoeT.{u2} ι))) t) S) => Eq.{succ u1} (Set.{u1} α) s' (Set.iInter.{u1, succ u2} α ι (fun (i : ι) => Set.iInter.{u1, 0} α (Membership.Mem.{u2, u2} ι (Finset.{u2} ι) (Finset.hasMem.{u2} ι) i t) (fun (H : Membership.Mem.{u2, u2} ι (Finset.{u2} ι) (Finset.hasMem.{u2} ι) i t) => s i)))))))
but is expected to have type
- forall {α : Type.{u2}} {ι : Type.{u1}} (s : ι -> (Set.{u2} α)) (S : Set.{u1} ι), Eq.{succ u2} (Set.{u2} (Set.{u2} α)) (piUnionᵢInter.{u2, u1} α ι (fun (i : ι) => Singleton.singleton.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instSingletonSet.{u2} (Set.{u2} α)) (s i)) S) (setOf.{u2} (Set.{u2} α) (fun (s' : Set.{u2} α) => Exists.{succ u1} (Finset.{u1} ι) (fun (t : Finset.{u1} ι) => Exists.{0} (HasSubset.Subset.{u1} (Set.{u1} ι) (Set.instHasSubsetSet.{u1} ι) (Finset.toSet.{u1} ι t) S) (fun (htS : HasSubset.Subset.{u1} (Set.{u1} ι) (Set.instHasSubsetSet.{u1} ι) (Finset.toSet.{u1} ι t) S) => Eq.{succ u2} (Set.{u2} α) s' (Set.interᵢ.{u2, succ u1} α ι (fun (i : ι) => Set.interᵢ.{u2, 0} α (Membership.mem.{u1, u1} ι (Finset.{u1} ι) (Finset.instMembershipFinset.{u1} ι) i t) (fun (H : Membership.mem.{u1, u1} ι (Finset.{u1} ι) (Finset.instMembershipFinset.{u1} ι) i t) => s i)))))))
-Case conversion may be inaccurate. Consider using '#align pi_Union_Inter_singleton_left piUnionᵢInter_singleton_leftₓ'. -/
-theorem piUnionᵢInter_singleton_left (s : ι → Set α) (S : Set ι) :
- piUnionᵢInter (fun i => ({s i} : Set (Set α))) S =
+ forall {α : Type.{u2}} {ι : Type.{u1}} (s : ι -> (Set.{u2} α)) (S : Set.{u1} ι), Eq.{succ u2} (Set.{u2} (Set.{u2} α)) (piiUnionInter.{u2, u1} α ι (fun (i : ι) => Singleton.singleton.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instSingletonSet.{u2} (Set.{u2} α)) (s i)) S) (setOf.{u2} (Set.{u2} α) (fun (s' : Set.{u2} α) => Exists.{succ u1} (Finset.{u1} ι) (fun (t : Finset.{u1} ι) => Exists.{0} (HasSubset.Subset.{u1} (Set.{u1} ι) (Set.instHasSubsetSet.{u1} ι) (Finset.toSet.{u1} ι t) S) (fun (htS : HasSubset.Subset.{u1} (Set.{u1} ι) (Set.instHasSubsetSet.{u1} ι) (Finset.toSet.{u1} ι t) S) => Eq.{succ u2} (Set.{u2} α) s' (Set.iInter.{u2, succ u1} α ι (fun (i : ι) => Set.iInter.{u2, 0} α (Membership.mem.{u1, u1} ι (Finset.{u1} ι) (Finset.instMembershipFinset.{u1} ι) i t) (fun (H : Membership.mem.{u1, u1} ι (Finset.{u1} ι) (Finset.instMembershipFinset.{u1} ι) i t) => s i)))))))
+Case conversion may be inaccurate. Consider using '#align pi_Union_Inter_singleton_left piiUnionInter_singleton_leftₓ'. -/
+theorem piiUnionInter_singleton_left (s : ι → Set α) (S : Set ι) :
+ piiUnionInter (fun i => ({s i} : Set (Set α))) S =
{ s' : Set α | ∃ (t : Finset ι)(htS : ↑t ⊆ S), s' = ⋂ i ∈ t, s i } :=
by
ext1 s'
- simp_rw [piUnionᵢInter, Set.mem_singleton_iff, exists_prop, Set.mem_setOf_eq]
+ simp_rw [piiUnionInter, Set.mem_singleton_iff, exists_prop, Set.mem_setOf_eq]
refine' ⟨fun h => _, fun ⟨t, htS, h_eq⟩ => ⟨t, htS, s, fun _ _ => rfl, h_eq⟩⟩
obtain ⟨t, htS, f, hft_eq, rfl⟩ := h
refine' ⟨t, htS, _⟩
congr with (i x)
- simp_rw [Set.mem_interᵢ]
+ simp_rw [Set.mem_iInter]
exact
⟨fun h hit => by
rw [← hft_eq i hit]
exact h hit, fun h hit => by
rw [hft_eq i hit]
exact h hit⟩
-#align pi_Union_Inter_singleton_left piUnionᵢInter_singleton_left
+#align pi_Union_Inter_singleton_left piiUnionInter_singleton_left
-/- warning: generate_from_pi_Union_Inter_singleton_left -> generateFrom_piUnionᵢInter_singleton_left is a dubious translation:
+/- warning: generate_from_pi_Union_Inter_singleton_left -> generateFrom_piiUnionInter_singleton_left is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} (s : ι -> (Set.{u1} α)) (S : Set.{u2} ι), Eq.{succ u1} (MeasurableSpace.{u1} α) (MeasurableSpace.generateFrom.{u1} α (piUnionᵢInter.{u1, u2} α ι (fun (k : ι) => Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasSingleton.{u1} (Set.{u1} α)) (s k)) S)) (MeasurableSpace.generateFrom.{u1} α (setOf.{u1} (Set.{u1} α) (fun (t : Set.{u1} α) => Exists.{succ u2} ι (fun (k : ι) => Exists.{0} (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) k S) (fun (H : Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) k S) => Eq.{succ u1} (Set.{u1} α) (s k) t)))))
+ forall {α : Type.{u1}} {ι : Type.{u2}} (s : ι -> (Set.{u1} α)) (S : Set.{u2} ι), Eq.{succ u1} (MeasurableSpace.{u1} α) (MeasurableSpace.generateFrom.{u1} α (piiUnionInter.{u1, u2} α ι (fun (k : ι) => Singleton.singleton.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasSingleton.{u1} (Set.{u1} α)) (s k)) S)) (MeasurableSpace.generateFrom.{u1} α (setOf.{u1} (Set.{u1} α) (fun (t : Set.{u1} α) => Exists.{succ u2} ι (fun (k : ι) => Exists.{0} (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) k S) (fun (H : Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) k S) => Eq.{succ u1} (Set.{u1} α) (s k) t)))))
but is expected to have type
- forall {α : Type.{u2}} {ι : Type.{u1}} (s : ι -> (Set.{u2} α)) (S : Set.{u1} ι), Eq.{succ u2} (MeasurableSpace.{u2} α) (MeasurableSpace.generateFrom.{u2} α (piUnionᵢInter.{u2, u1} α ι (fun (k : ι) => Singleton.singleton.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instSingletonSet.{u2} (Set.{u2} α)) (s k)) S)) (MeasurableSpace.generateFrom.{u2} α (setOf.{u2} (Set.{u2} α) (fun (t : Set.{u2} α) => Exists.{succ u1} ι (fun (k : ι) => And (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) k S) (Eq.{succ u2} (Set.{u2} α) (s k) t)))))
-Case conversion may be inaccurate. Consider using '#align generate_from_pi_Union_Inter_singleton_left generateFrom_piUnionᵢInter_singleton_leftₓ'. -/
-theorem generateFrom_piUnionᵢInter_singleton_left (s : ι → Set α) (S : Set ι) :
- generateFrom (piUnionᵢInter (fun k => {s k}) S) = generateFrom { t | ∃ k ∈ S, s k = t } :=
+ forall {α : Type.{u2}} {ι : Type.{u1}} (s : ι -> (Set.{u2} α)) (S : Set.{u1} ι), Eq.{succ u2} (MeasurableSpace.{u2} α) (MeasurableSpace.generateFrom.{u2} α (piiUnionInter.{u2, u1} α ι (fun (k : ι) => Singleton.singleton.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instSingletonSet.{u2} (Set.{u2} α)) (s k)) S)) (MeasurableSpace.generateFrom.{u2} α (setOf.{u2} (Set.{u2} α) (fun (t : Set.{u2} α) => Exists.{succ u1} ι (fun (k : ι) => And (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) k S) (Eq.{succ u2} (Set.{u2} α) (s k) t)))))
+Case conversion may be inaccurate. Consider using '#align generate_from_pi_Union_Inter_singleton_left generateFrom_piiUnionInter_singleton_leftₓ'. -/
+theorem generateFrom_piiUnionInter_singleton_left (s : ι → Set α) (S : Set ι) :
+ generateFrom (piiUnionInter (fun k => {s k}) S) = generateFrom { t | ∃ k ∈ S, s k = t } :=
by
refine' le_antisymm (generate_from_le _) (generate_from_mono _)
· rintro _ ⟨I, hI, f, hf, rfl⟩
- refine' Finset.measurableSet_binterᵢ _ fun m hm => measurable_set_generate_from _
+ refine' Finset.measurableSet_biInter _ fun m hm => measurable_set_generate_from _
exact ⟨m, hI hm, (hf m hm).symm⟩
· rintro _ ⟨k, hk, rfl⟩
refine' ⟨{k}, fun m hm => _, s, fun i hi => _, _⟩
· rw [Finset.mem_coe, Finset.mem_singleton] at hm
rwa [hm]
· exact Set.mem_singleton _
- · simp only [Finset.mem_singleton, Set.interᵢ_interᵢ_eq_left]
-#align generate_from_pi_Union_Inter_singleton_left generateFrom_piUnionᵢInter_singleton_left
+ · simp only [Finset.mem_singleton, Set.iInter_iInter_eq_left]
+#align generate_from_pi_Union_Inter_singleton_left generateFrom_piiUnionInter_singleton_left
-/- warning: is_pi_system_pi_Union_Inter -> isPiSystem_piUnionᵢInter is a dubious translation:
+/- warning: is_pi_system_pi_Union_Inter -> isPiSystem_piiUnionInter is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} (π : ι -> (Set.{u1} (Set.{u1} α))), (forall (x : ι), IsPiSystem.{u1} α (π x)) -> (forall (S : Set.{u2} ι), IsPiSystem.{u1} α (piUnionᵢInter.{u1, u2} α ι π S))
+ forall {α : Type.{u1}} {ι : Type.{u2}} (π : ι -> (Set.{u1} (Set.{u1} α))), (forall (x : ι), IsPiSystem.{u1} α (π x)) -> (forall (S : Set.{u2} ι), IsPiSystem.{u1} α (piiUnionInter.{u1, u2} α ι π S))
but is expected to have type
- forall {α : Type.{u2}} {ι : Type.{u1}} (π : ι -> (Set.{u2} (Set.{u2} α))), (forall (x : ι), IsPiSystem.{u2} α (π x)) -> (forall (S : Set.{u1} ι), IsPiSystem.{u2} α (piUnionᵢInter.{u2, u1} α ι π S))
-Case conversion may be inaccurate. Consider using '#align is_pi_system_pi_Union_Inter isPiSystem_piUnionᵢInterₓ'. -/
+ forall {α : Type.{u2}} {ι : Type.{u1}} (π : ι -> (Set.{u2} (Set.{u2} α))), (forall (x : ι), IsPiSystem.{u2} α (π x)) -> (forall (S : Set.{u1} ι), IsPiSystem.{u2} α (piiUnionInter.{u2, u1} α ι π S))
+Case conversion may be inaccurate. Consider using '#align is_pi_system_pi_Union_Inter isPiSystem_piiUnionInterₓ'. -/
/-- If `π` is a family of π-systems, then `pi_Union_Inter π S` is a π-system. -/
-theorem isPiSystem_piUnionᵢInter (π : ι → Set (Set α)) (hpi : ∀ x, IsPiSystem (π x)) (S : Set ι) :
- IsPiSystem (piUnionᵢInter π S) :=
+theorem isPiSystem_piiUnionInter (π : ι → Set (Set α)) (hpi : ∀ x, IsPiSystem (π x)) (S : Set ι) :
+ IsPiSystem (piiUnionInter π S) :=
by
rintro t1 ⟨p1, hp1S, f1, hf1m, ht1_eq⟩ t2 ⟨p2, hp2S, f2, hf2m, ht2_eq⟩ h_nonempty
- simp_rw [piUnionᵢInter, Set.mem_setOf_eq]
+ simp_rw [piiUnionInter, Set.mem_setOf_eq]
let g n := ite (n ∈ p1) (f1 n) Set.univ ∩ ite (n ∈ p2) (f2 n) Set.univ
have hp_union_ss : ↑(p1 ∪ p2) ⊆ S := by
simp only [hp1S, hp2S, Finset.coe_union, union_subset_iff, and_self_iff]
@@ -616,126 +616,126 @@ theorem isPiSystem_piUnionᵢInter (π : ι → Set (Set α)) (hpi : ∀ x, IsPi
rw [h_inter_eq] at h_nonempty
suffices h_empty : (⋂ i ∈ p1 ∪ p2, g i) = ∅
exact (set.not_nonempty_iff_eq_empty.mpr h_empty) h_nonempty
- refine' le_antisymm (Set.interᵢ_subset_of_subset n _) (Set.empty_subset _)
- refine' Set.interᵢ_subset_of_subset hn _
+ refine' le_antisymm (Set.iInter_subset_of_subset n _) (Set.empty_subset _)
+ refine' Set.iInter_subset_of_subset hn _
simp_rw [g, if_pos hn1, if_pos hn2]
exact h.subset
· simp [hf1m n hn1]
· simp [hf2m n h]
· exact absurd hn (by simp [hn1, h])
-#align is_pi_system_pi_Union_Inter isPiSystem_piUnionᵢInter
+#align is_pi_system_pi_Union_Inter isPiSystem_piiUnionInter
-/- warning: pi_Union_Inter_mono_left -> piUnionᵢInter_mono_left is a dubious translation:
+/- warning: pi_Union_Inter_mono_left -> piiUnionInter_mono_left is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} {π : ι -> (Set.{u1} (Set.{u1} α))} {π' : ι -> (Set.{u1} (Set.{u1} α))}, (forall (i : ι), HasSubset.Subset.{u1} (Set.{u1} (Set.{u1} α)) (Set.hasSubset.{u1} (Set.{u1} α)) (π i) (π' i)) -> (forall (S : Set.{u2} ι), HasSubset.Subset.{u1} (Set.{u1} (Set.{u1} α)) (Set.hasSubset.{u1} (Set.{u1} α)) (piUnionᵢInter.{u1, u2} α ι π S) (piUnionᵢInter.{u1, u2} α ι π' S))
+ forall {α : Type.{u1}} {ι : Type.{u2}} {π : ι -> (Set.{u1} (Set.{u1} α))} {π' : ι -> (Set.{u1} (Set.{u1} α))}, (forall (i : ι), HasSubset.Subset.{u1} (Set.{u1} (Set.{u1} α)) (Set.hasSubset.{u1} (Set.{u1} α)) (π i) (π' i)) -> (forall (S : Set.{u2} ι), HasSubset.Subset.{u1} (Set.{u1} (Set.{u1} α)) (Set.hasSubset.{u1} (Set.{u1} α)) (piiUnionInter.{u1, u2} α ι π S) (piiUnionInter.{u1, u2} α ι π' S))
but is expected to have type
- forall {α : Type.{u2}} {ι : Type.{u1}} {π : ι -> (Set.{u2} (Set.{u2} α))} {π' : ι -> (Set.{u2} (Set.{u2} α))}, (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} (Set.{u2} α)) (Set.instHasSubsetSet.{u2} (Set.{u2} α)) (π i) (π' i)) -> (forall (S : Set.{u1} ι), HasSubset.Subset.{u2} (Set.{u2} (Set.{u2} α)) (Set.instHasSubsetSet.{u2} (Set.{u2} α)) (piUnionᵢInter.{u2, u1} α ι π S) (piUnionᵢInter.{u2, u1} α ι π' S))
-Case conversion may be inaccurate. Consider using '#align pi_Union_Inter_mono_left piUnionᵢInter_mono_leftₓ'. -/
-theorem piUnionᵢInter_mono_left {π π' : ι → Set (Set α)} (h_le : ∀ i, π i ⊆ π' i) (S : Set ι) :
- piUnionᵢInter π S ⊆ piUnionᵢInter π' S := fun s ⟨t, ht_mem, ft, hft_mem_pi, h_eq⟩ =>
+ forall {α : Type.{u2}} {ι : Type.{u1}} {π : ι -> (Set.{u2} (Set.{u2} α))} {π' : ι -> (Set.{u2} (Set.{u2} α))}, (forall (i : ι), HasSubset.Subset.{u2} (Set.{u2} (Set.{u2} α)) (Set.instHasSubsetSet.{u2} (Set.{u2} α)) (π i) (π' i)) -> (forall (S : Set.{u1} ι), HasSubset.Subset.{u2} (Set.{u2} (Set.{u2} α)) (Set.instHasSubsetSet.{u2} (Set.{u2} α)) (piiUnionInter.{u2, u1} α ι π S) (piiUnionInter.{u2, u1} α ι π' S))
+Case conversion may be inaccurate. Consider using '#align pi_Union_Inter_mono_left piiUnionInter_mono_leftₓ'. -/
+theorem piiUnionInter_mono_left {π π' : ι → Set (Set α)} (h_le : ∀ i, π i ⊆ π' i) (S : Set ι) :
+ piiUnionInter π S ⊆ piiUnionInter π' S := fun s ⟨t, ht_mem, ft, hft_mem_pi, h_eq⟩ =>
⟨t, ht_mem, ft, fun x hxt => h_le x (hft_mem_pi x hxt), h_eq⟩
-#align pi_Union_Inter_mono_left piUnionᵢInter_mono_left
+#align pi_Union_Inter_mono_left piiUnionInter_mono_left
-/- warning: pi_Union_Inter_mono_right -> piUnionᵢInter_mono_right is a dubious translation:
+/- warning: pi_Union_Inter_mono_right -> piiUnionInter_mono_right is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} {π : ι -> (Set.{u1} (Set.{u1} α))} {S : Set.{u2} ι} {T : Set.{u2} ι}, (HasSubset.Subset.{u2} (Set.{u2} ι) (Set.hasSubset.{u2} ι) S T) -> (HasSubset.Subset.{u1} (Set.{u1} (Set.{u1} α)) (Set.hasSubset.{u1} (Set.{u1} α)) (piUnionᵢInter.{u1, u2} α ι π S) (piUnionᵢInter.{u1, u2} α ι π T))
+ forall {α : Type.{u1}} {ι : Type.{u2}} {π : ι -> (Set.{u1} (Set.{u1} α))} {S : Set.{u2} ι} {T : Set.{u2} ι}, (HasSubset.Subset.{u2} (Set.{u2} ι) (Set.hasSubset.{u2} ι) S T) -> (HasSubset.Subset.{u1} (Set.{u1} (Set.{u1} α)) (Set.hasSubset.{u1} (Set.{u1} α)) (piiUnionInter.{u1, u2} α ι π S) (piiUnionInter.{u1, u2} α ι π T))
but is expected to have type
- forall {α : Type.{u2}} {ι : Type.{u1}} {π : ι -> (Set.{u2} (Set.{u2} α))} {S : Set.{u1} ι} {T : Set.{u1} ι}, (HasSubset.Subset.{u1} (Set.{u1} ι) (Set.instHasSubsetSet.{u1} ι) S T) -> (HasSubset.Subset.{u2} (Set.{u2} (Set.{u2} α)) (Set.instHasSubsetSet.{u2} (Set.{u2} α)) (piUnionᵢInter.{u2, u1} α ι π S) (piUnionᵢInter.{u2, u1} α ι π T))
-Case conversion may be inaccurate. Consider using '#align pi_Union_Inter_mono_right piUnionᵢInter_mono_rightₓ'. -/
-theorem piUnionᵢInter_mono_right {π : ι → Set (Set α)} {S T : Set ι} (hST : S ⊆ T) :
- piUnionᵢInter π S ⊆ piUnionᵢInter π T := fun s ⟨t, ht_mem, ft, hft_mem_pi, h_eq⟩ =>
+ forall {α : Type.{u2}} {ι : Type.{u1}} {π : ι -> (Set.{u2} (Set.{u2} α))} {S : Set.{u1} ι} {T : Set.{u1} ι}, (HasSubset.Subset.{u1} (Set.{u1} ι) (Set.instHasSubsetSet.{u1} ι) S T) -> (HasSubset.Subset.{u2} (Set.{u2} (Set.{u2} α)) (Set.instHasSubsetSet.{u2} (Set.{u2} α)) (piiUnionInter.{u2, u1} α ι π S) (piiUnionInter.{u2, u1} α ι π T))
+Case conversion may be inaccurate. Consider using '#align pi_Union_Inter_mono_right piiUnionInter_mono_rightₓ'. -/
+theorem piiUnionInter_mono_right {π : ι → Set (Set α)} {S T : Set ι} (hST : S ⊆ T) :
+ piiUnionInter π S ⊆ piiUnionInter π T := fun s ⟨t, ht_mem, ft, hft_mem_pi, h_eq⟩ =>
⟨t, ht_mem.trans hST, ft, hft_mem_pi, h_eq⟩
-#align pi_Union_Inter_mono_right piUnionᵢInter_mono_right
+#align pi_Union_Inter_mono_right piiUnionInter_mono_right
-/- warning: generate_from_pi_Union_Inter_le -> generateFrom_piUnionᵢInter_le is a dubious translation:
+/- warning: generate_from_pi_Union_Inter_le -> generateFrom_piiUnionInter_le is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} {m : MeasurableSpace.{u1} α} (π : ι -> (Set.{u1} (Set.{u1} α))), (forall (n : ι), LE.le.{u1} (MeasurableSpace.{u1} α) (MeasurableSpace.hasLe.{u1} α) (MeasurableSpace.generateFrom.{u1} α (π n)) m) -> (forall (S : Set.{u2} ι), LE.le.{u1} (MeasurableSpace.{u1} α) (MeasurableSpace.hasLe.{u1} α) (MeasurableSpace.generateFrom.{u1} α (piUnionᵢInter.{u1, u2} α ι π S)) m)
+ forall {α : Type.{u1}} {ι : Type.{u2}} {m : MeasurableSpace.{u1} α} (π : ι -> (Set.{u1} (Set.{u1} α))), (forall (n : ι), LE.le.{u1} (MeasurableSpace.{u1} α) (MeasurableSpace.hasLe.{u1} α) (MeasurableSpace.generateFrom.{u1} α (π n)) m) -> (forall (S : Set.{u2} ι), LE.le.{u1} (MeasurableSpace.{u1} α) (MeasurableSpace.hasLe.{u1} α) (MeasurableSpace.generateFrom.{u1} α (piiUnionInter.{u1, u2} α ι π S)) m)
but is expected to have type
- forall {α : Type.{u2}} {ι : Type.{u1}} {m : MeasurableSpace.{u2} α} (π : ι -> (Set.{u2} (Set.{u2} α))), (forall (n : ι), LE.le.{u2} (MeasurableSpace.{u2} α) (MeasurableSpace.instLEMeasurableSpace.{u2} α) (MeasurableSpace.generateFrom.{u2} α (π n)) m) -> (forall (S : Set.{u1} ι), LE.le.{u2} (MeasurableSpace.{u2} α) (MeasurableSpace.instLEMeasurableSpace.{u2} α) (MeasurableSpace.generateFrom.{u2} α (piUnionᵢInter.{u2, u1} α ι π S)) m)
-Case conversion may be inaccurate. Consider using '#align generate_from_pi_Union_Inter_le generateFrom_piUnionᵢInter_leₓ'. -/
-theorem generateFrom_piUnionᵢInter_le {m : MeasurableSpace α} (π : ι → Set (Set α))
- (h : ∀ n, generateFrom (π n) ≤ m) (S : Set ι) : generateFrom (piUnionᵢInter π S) ≤ m :=
+ forall {α : Type.{u2}} {ι : Type.{u1}} {m : MeasurableSpace.{u2} α} (π : ι -> (Set.{u2} (Set.{u2} α))), (forall (n : ι), LE.le.{u2} (MeasurableSpace.{u2} α) (MeasurableSpace.instLEMeasurableSpace.{u2} α) (MeasurableSpace.generateFrom.{u2} α (π n)) m) -> (forall (S : Set.{u1} ι), LE.le.{u2} (MeasurableSpace.{u2} α) (MeasurableSpace.instLEMeasurableSpace.{u2} α) (MeasurableSpace.generateFrom.{u2} α (piiUnionInter.{u2, u1} α ι π S)) m)
+Case conversion may be inaccurate. Consider using '#align generate_from_pi_Union_Inter_le generateFrom_piiUnionInter_leₓ'. -/
+theorem generateFrom_piiUnionInter_le {m : MeasurableSpace α} (π : ι → Set (Set α))
+ (h : ∀ n, generateFrom (π n) ≤ m) (S : Set ι) : generateFrom (piiUnionInter π S) ≤ m :=
by
refine' generate_from_le _
rintro t ⟨ht_p, ht_p_mem, ft, hft_mem_pi, rfl⟩
- refine' Finset.measurableSet_binterᵢ _ fun x hx_mem => (h x) _ _
+ refine' Finset.measurableSet_biInter _ fun x hx_mem => (h x) _ _
exact measurable_set_generate_from (hft_mem_pi x hx_mem)
-#align generate_from_pi_Union_Inter_le generateFrom_piUnionᵢInter_le
+#align generate_from_pi_Union_Inter_le generateFrom_piiUnionInter_le
-/- warning: subset_pi_Union_Inter -> subset_piUnionᵢInter is a dubious translation:
+/- warning: subset_pi_Union_Inter -> subset_piiUnionInter is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} {π : ι -> (Set.{u1} (Set.{u1} α))} {S : Set.{u2} ι} {i : ι}, (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i S) -> (HasSubset.Subset.{u1} (Set.{u1} (Set.{u1} α)) (Set.hasSubset.{u1} (Set.{u1} α)) (π i) (piUnionᵢInter.{u1, u2} α ι π S))
+ forall {α : Type.{u1}} {ι : Type.{u2}} {π : ι -> (Set.{u1} (Set.{u1} α))} {S : Set.{u2} ι} {i : ι}, (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i S) -> (HasSubset.Subset.{u1} (Set.{u1} (Set.{u1} α)) (Set.hasSubset.{u1} (Set.{u1} α)) (π i) (piiUnionInter.{u1, u2} α ι π S))
but is expected to have type
- forall {α : Type.{u2}} {ι : Type.{u1}} {π : ι -> (Set.{u2} (Set.{u2} α))} {S : Set.{u1} ι} {i : ι}, (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i S) -> (HasSubset.Subset.{u2} (Set.{u2} (Set.{u2} α)) (Set.instHasSubsetSet.{u2} (Set.{u2} α)) (π i) (piUnionᵢInter.{u2, u1} α ι π S))
-Case conversion may be inaccurate. Consider using '#align subset_pi_Union_Inter subset_piUnionᵢInterₓ'. -/
-theorem subset_piUnionᵢInter {π : ι → Set (Set α)} {S : Set ι} {i : ι} (his : i ∈ S) :
- π i ⊆ piUnionᵢInter π S :=
+ forall {α : Type.{u2}} {ι : Type.{u1}} {π : ι -> (Set.{u2} (Set.{u2} α))} {S : Set.{u1} ι} {i : ι}, (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i S) -> (HasSubset.Subset.{u2} (Set.{u2} (Set.{u2} α)) (Set.instHasSubsetSet.{u2} (Set.{u2} α)) (π i) (piiUnionInter.{u2, u1} α ι π S))
+Case conversion may be inaccurate. Consider using '#align subset_pi_Union_Inter subset_piiUnionInterₓ'. -/
+theorem subset_piiUnionInter {π : ι → Set (Set α)} {S : Set ι} {i : ι} (his : i ∈ S) :
+ π i ⊆ piiUnionInter π S :=
by
have h_ss : {i} ⊆ S := by
intro j hj
rw [mem_singleton_iff] at hj
rwa [hj]
- refine' subset.trans _ (piUnionᵢInter_mono_right h_ss)
- rw [piUnionᵢInter_singleton]
+ refine' subset.trans _ (piiUnionInter_mono_right h_ss)
+ rw [piiUnionInter_singleton]
exact subset_union_left _ _
-#align subset_pi_Union_Inter subset_piUnionᵢInter
+#align subset_pi_Union_Inter subset_piiUnionInter
-/- warning: mem_pi_Union_Inter_of_measurable_set -> mem_piUnionᵢInter_of_measurableSet is a dubious translation:
+/- warning: mem_pi_Union_Inter_of_measurable_set -> mem_piiUnionInter_of_measurableSet is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} (m : ι -> (MeasurableSpace.{u1} α)) {S : Set.{u2} ι} {i : ι}, (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i S) -> (forall (s : Set.{u1} α), (MeasurableSet.{u1} α (m i) s) -> (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) s (piUnionᵢInter.{u1, u2} α ι (fun (n : ι) => setOf.{u1} (Set.{u1} α) (fun (s : Set.{u1} α) => MeasurableSet.{u1} α (m n) s)) S)))
+ forall {α : Type.{u1}} {ι : Type.{u2}} (m : ι -> (MeasurableSpace.{u1} α)) {S : Set.{u2} ι} {i : ι}, (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i S) -> (forall (s : Set.{u1} α), (MeasurableSet.{u1} α (m i) s) -> (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) s (piiUnionInter.{u1, u2} α ι (fun (n : ι) => setOf.{u1} (Set.{u1} α) (fun (s : Set.{u1} α) => MeasurableSet.{u1} α (m n) s)) S)))
but is expected to have type
- forall {α : Type.{u2}} {ι : Type.{u1}} (m : ι -> (MeasurableSpace.{u2} α)) {S : Set.{u1} ι} {i : ι}, (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i S) -> (forall (s : Set.{u2} α), (MeasurableSet.{u2} α (m i) s) -> (Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) s (piUnionᵢInter.{u2, u1} α ι (fun (n : ι) => setOf.{u2} (Set.{u2} α) (fun (s : Set.{u2} α) => MeasurableSet.{u2} α (m n) s)) S)))
-Case conversion may be inaccurate. Consider using '#align mem_pi_Union_Inter_of_measurable_set mem_piUnionᵢInter_of_measurableSetₓ'. -/
-theorem mem_piUnionᵢInter_of_measurableSet (m : ι → MeasurableSpace α) {S : Set ι} {i : ι}
+ forall {α : Type.{u2}} {ι : Type.{u1}} (m : ι -> (MeasurableSpace.{u2} α)) {S : Set.{u1} ι} {i : ι}, (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i S) -> (forall (s : Set.{u2} α), (MeasurableSet.{u2} α (m i) s) -> (Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) s (piiUnionInter.{u2, u1} α ι (fun (n : ι) => setOf.{u2} (Set.{u2} α) (fun (s : Set.{u2} α) => MeasurableSet.{u2} α (m n) s)) S)))
+Case conversion may be inaccurate. Consider using '#align mem_pi_Union_Inter_of_measurable_set mem_piiUnionInter_of_measurableSetₓ'. -/
+theorem mem_piiUnionInter_of_measurableSet (m : ι → MeasurableSpace α) {S : Set ι} {i : ι}
(hiS : i ∈ S) (s : Set α) (hs : measurable_set[m i] s) :
- s ∈ piUnionᵢInter (fun n => { s | measurable_set[m n] s }) S :=
- subset_piUnionᵢInter hiS hs
-#align mem_pi_Union_Inter_of_measurable_set mem_piUnionᵢInter_of_measurableSet
+ s ∈ piiUnionInter (fun n => { s | measurable_set[m n] s }) S :=
+ subset_piiUnionInter hiS hs
+#align mem_pi_Union_Inter_of_measurable_set mem_piiUnionInter_of_measurableSet
-/- warning: le_generate_from_pi_Union_Inter -> le_generateFrom_piUnionᵢInter is a dubious translation:
+/- warning: le_generate_from_pi_Union_Inter -> le_generateFrom_piiUnionInter is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} {π : ι -> (Set.{u1} (Set.{u1} α))} (S : Set.{u2} ι) {x : ι}, (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) x S) -> (LE.le.{u1} (MeasurableSpace.{u1} α) (MeasurableSpace.hasLe.{u1} α) (MeasurableSpace.generateFrom.{u1} α (π x)) (MeasurableSpace.generateFrom.{u1} α (piUnionᵢInter.{u1, u2} α ι π S)))
+ forall {α : Type.{u1}} {ι : Type.{u2}} {π : ι -> (Set.{u1} (Set.{u1} α))} (S : Set.{u2} ι) {x : ι}, (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) x S) -> (LE.le.{u1} (MeasurableSpace.{u1} α) (MeasurableSpace.hasLe.{u1} α) (MeasurableSpace.generateFrom.{u1} α (π x)) (MeasurableSpace.generateFrom.{u1} α (piiUnionInter.{u1, u2} α ι π S)))
but is expected to have type
- forall {α : Type.{u2}} {ι : Type.{u1}} {π : ι -> (Set.{u2} (Set.{u2} α))} (S : Set.{u1} ι) {x : ι}, (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) x S) -> (LE.le.{u2} (MeasurableSpace.{u2} α) (MeasurableSpace.instLEMeasurableSpace.{u2} α) (MeasurableSpace.generateFrom.{u2} α (π x)) (MeasurableSpace.generateFrom.{u2} α (piUnionᵢInter.{u2, u1} α ι π S)))
-Case conversion may be inaccurate. Consider using '#align le_generate_from_pi_Union_Inter le_generateFrom_piUnionᵢInterₓ'. -/
-theorem le_generateFrom_piUnionᵢInter {π : ι → Set (Set α)} (S : Set ι) {x : ι} (hxS : x ∈ S) :
- generateFrom (π x) ≤ generateFrom (piUnionᵢInter π S) :=
- generateFrom_mono (subset_piUnionᵢInter hxS)
-#align le_generate_from_pi_Union_Inter le_generateFrom_piUnionᵢInter
-
-/- warning: measurable_set_supr_of_mem_pi_Union_Inter -> measurableSet_supᵢ_of_mem_piUnionᵢInter is a dubious translation:
+ forall {α : Type.{u2}} {ι : Type.{u1}} {π : ι -> (Set.{u2} (Set.{u2} α))} (S : Set.{u1} ι) {x : ι}, (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) x S) -> (LE.le.{u2} (MeasurableSpace.{u2} α) (MeasurableSpace.instLEMeasurableSpace.{u2} α) (MeasurableSpace.generateFrom.{u2} α (π x)) (MeasurableSpace.generateFrom.{u2} α (piiUnionInter.{u2, u1} α ι π S)))
+Case conversion may be inaccurate. Consider using '#align le_generate_from_pi_Union_Inter le_generateFrom_piiUnionInterₓ'. -/
+theorem le_generateFrom_piiUnionInter {π : ι → Set (Set α)} (S : Set ι) {x : ι} (hxS : x ∈ S) :
+ generateFrom (π x) ≤ generateFrom (piiUnionInter π S) :=
+ generateFrom_mono (subset_piiUnionInter hxS)
+#align le_generate_from_pi_Union_Inter le_generateFrom_piiUnionInter
+
+/- warning: measurable_set_supr_of_mem_pi_Union_Inter -> measurableSet_iSup_of_mem_piiUnionInter is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} (m : ι -> (MeasurableSpace.{u1} α)) (S : Set.{u2} ι) (t : Set.{u1} α), (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) t (piUnionᵢInter.{u1, u2} α ι (fun (n : ι) => setOf.{u1} (Set.{u1} α) (fun (s : Set.{u1} α) => MeasurableSet.{u1} α (m n) s)) S)) -> (MeasurableSet.{u1} α (supᵢ.{u1, succ u2} (MeasurableSpace.{u1} α) (ConditionallyCompleteLattice.toHasSup.{u1} (MeasurableSpace.{u1} α) (CompleteLattice.toConditionallyCompleteLattice.{u1} (MeasurableSpace.{u1} α) (MeasurableSpace.completeLattice.{u1} α))) ι (fun (i : ι) => supᵢ.{u1, 0} (MeasurableSpace.{u1} α) (ConditionallyCompleteLattice.toHasSup.{u1} (MeasurableSpace.{u1} α) (CompleteLattice.toConditionallyCompleteLattice.{u1} (MeasurableSpace.{u1} α) (MeasurableSpace.completeLattice.{u1} α))) (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i S) (fun (H : Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i S) => m i))) t)
+ forall {α : Type.{u1}} {ι : Type.{u2}} (m : ι -> (MeasurableSpace.{u1} α)) (S : Set.{u2} ι) (t : Set.{u1} α), (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) t (piiUnionInter.{u1, u2} α ι (fun (n : ι) => setOf.{u1} (Set.{u1} α) (fun (s : Set.{u1} α) => MeasurableSet.{u1} α (m n) s)) S)) -> (MeasurableSet.{u1} α (iSup.{u1, succ u2} (MeasurableSpace.{u1} α) (ConditionallyCompleteLattice.toHasSup.{u1} (MeasurableSpace.{u1} α) (CompleteLattice.toConditionallyCompleteLattice.{u1} (MeasurableSpace.{u1} α) (MeasurableSpace.completeLattice.{u1} α))) ι (fun (i : ι) => iSup.{u1, 0} (MeasurableSpace.{u1} α) (ConditionallyCompleteLattice.toHasSup.{u1} (MeasurableSpace.{u1} α) (CompleteLattice.toConditionallyCompleteLattice.{u1} (MeasurableSpace.{u1} α) (MeasurableSpace.completeLattice.{u1} α))) (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i S) (fun (H : Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i S) => m i))) t)
but is expected to have type
- forall {α : Type.{u2}} {ι : Type.{u1}} (m : ι -> (MeasurableSpace.{u2} α)) (S : Set.{u1} ι) (t : Set.{u2} α), (Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) t (piUnionᵢInter.{u2, u1} α ι (fun (n : ι) => setOf.{u2} (Set.{u2} α) (fun (s : Set.{u2} α) => MeasurableSet.{u2} α (m n) s)) S)) -> (MeasurableSet.{u2} α (supᵢ.{u2, succ u1} (MeasurableSpace.{u2} α) (ConditionallyCompleteLattice.toSupSet.{u2} (MeasurableSpace.{u2} α) (CompleteLattice.toConditionallyCompleteLattice.{u2} (MeasurableSpace.{u2} α) (MeasurableSpace.instCompleteLatticeMeasurableSpace.{u2} α))) ι (fun (i : ι) => supᵢ.{u2, 0} (MeasurableSpace.{u2} α) (ConditionallyCompleteLattice.toSupSet.{u2} (MeasurableSpace.{u2} α) (CompleteLattice.toConditionallyCompleteLattice.{u2} (MeasurableSpace.{u2} α) (MeasurableSpace.instCompleteLatticeMeasurableSpace.{u2} α))) (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i S) (fun (H : Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i S) => m i))) t)
-Case conversion may be inaccurate. Consider using '#align measurable_set_supr_of_mem_pi_Union_Inter measurableSet_supᵢ_of_mem_piUnionᵢInterₓ'. -/
-theorem measurableSet_supᵢ_of_mem_piUnionᵢInter (m : ι → MeasurableSpace α) (S : Set ι) (t : Set α)
- (ht : t ∈ piUnionᵢInter (fun n => { s | measurable_set[m n] s }) S) :
+ forall {α : Type.{u2}} {ι : Type.{u1}} (m : ι -> (MeasurableSpace.{u2} α)) (S : Set.{u1} ι) (t : Set.{u2} α), (Membership.mem.{u2, u2} (Set.{u2} α) (Set.{u2} (Set.{u2} α)) (Set.instMembershipSet.{u2} (Set.{u2} α)) t (piiUnionInter.{u2, u1} α ι (fun (n : ι) => setOf.{u2} (Set.{u2} α) (fun (s : Set.{u2} α) => MeasurableSet.{u2} α (m n) s)) S)) -> (MeasurableSet.{u2} α (iSup.{u2, succ u1} (MeasurableSpace.{u2} α) (ConditionallyCompleteLattice.toSupSet.{u2} (MeasurableSpace.{u2} α) (CompleteLattice.toConditionallyCompleteLattice.{u2} (MeasurableSpace.{u2} α) (MeasurableSpace.instCompleteLatticeMeasurableSpace.{u2} α))) ι (fun (i : ι) => iSup.{u2, 0} (MeasurableSpace.{u2} α) (ConditionallyCompleteLattice.toSupSet.{u2} (MeasurableSpace.{u2} α) (CompleteLattice.toConditionallyCompleteLattice.{u2} (MeasurableSpace.{u2} α) (MeasurableSpace.instCompleteLatticeMeasurableSpace.{u2} α))) (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i S) (fun (H : Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i S) => m i))) t)
+Case conversion may be inaccurate. Consider using '#align measurable_set_supr_of_mem_pi_Union_Inter measurableSet_iSup_of_mem_piiUnionInterₓ'. -/
+theorem measurableSet_iSup_of_mem_piiUnionInter (m : ι → MeasurableSpace α) (S : Set ι) (t : Set α)
+ (ht : t ∈ piiUnionInter (fun n => { s | measurable_set[m n] s }) S) :
measurable_set[⨆ i ∈ S, m i] t :=
by
rcases ht with ⟨pt, hpt, ft, ht_m, rfl⟩
refine' pt.measurable_set_bInter fun i hi => _
suffices h_le : m i ≤ ⨆ i ∈ S, m i; exact h_le (ft i) (ht_m i hi)
have hi' : i ∈ S := hpt hi
- exact le_supᵢ₂ i hi'
-#align measurable_set_supr_of_mem_pi_Union_Inter measurableSet_supᵢ_of_mem_piUnionᵢInter
+ exact le_iSup₂ i hi'
+#align measurable_set_supr_of_mem_pi_Union_Inter measurableSet_iSup_of_mem_piiUnionInter
-/- warning: generate_from_pi_Union_Inter_measurable_set -> generateFrom_piUnionᵢInter_measurableSet is a dubious translation:
+/- warning: generate_from_pi_Union_Inter_measurable_set -> generateFrom_piiUnionInter_measurableSet is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {ι : Type.{u2}} (m : ι -> (MeasurableSpace.{u1} α)) (S : Set.{u2} ι), Eq.{succ u1} (MeasurableSpace.{u1} α) (MeasurableSpace.generateFrom.{u1} α (piUnionᵢInter.{u1, u2} α ι (fun (n : ι) => setOf.{u1} (Set.{u1} α) (fun (s : Set.{u1} α) => MeasurableSet.{u1} α (m n) s)) S)) (supᵢ.{u1, succ u2} (MeasurableSpace.{u1} α) (ConditionallyCompleteLattice.toHasSup.{u1} (MeasurableSpace.{u1} α) (CompleteLattice.toConditionallyCompleteLattice.{u1} (MeasurableSpace.{u1} α) (MeasurableSpace.completeLattice.{u1} α))) ι (fun (i : ι) => supᵢ.{u1, 0} (MeasurableSpace.{u1} α) (ConditionallyCompleteLattice.toHasSup.{u1} (MeasurableSpace.{u1} α) (CompleteLattice.toConditionallyCompleteLattice.{u1} (MeasurableSpace.{u1} α) (MeasurableSpace.completeLattice.{u1} α))) (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i S) (fun (H : Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i S) => m i)))
+ forall {α : Type.{u1}} {ι : Type.{u2}} (m : ι -> (MeasurableSpace.{u1} α)) (S : Set.{u2} ι), Eq.{succ u1} (MeasurableSpace.{u1} α) (MeasurableSpace.generateFrom.{u1} α (piiUnionInter.{u1, u2} α ι (fun (n : ι) => setOf.{u1} (Set.{u1} α) (fun (s : Set.{u1} α) => MeasurableSet.{u1} α (m n) s)) S)) (iSup.{u1, succ u2} (MeasurableSpace.{u1} α) (ConditionallyCompleteLattice.toHasSup.{u1} (MeasurableSpace.{u1} α) (CompleteLattice.toConditionallyCompleteLattice.{u1} (MeasurableSpace.{u1} α) (MeasurableSpace.completeLattice.{u1} α))) ι (fun (i : ι) => iSup.{u1, 0} (MeasurableSpace.{u1} α) (ConditionallyCompleteLattice.toHasSup.{u1} (MeasurableSpace.{u1} α) (CompleteLattice.toConditionallyCompleteLattice.{u1} (MeasurableSpace.{u1} α) (MeasurableSpace.completeLattice.{u1} α))) (Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i S) (fun (H : Membership.Mem.{u2, u2} ι (Set.{u2} ι) (Set.hasMem.{u2} ι) i S) => m i)))
but is expected to have type
- forall {α : Type.{u2}} {ι : Type.{u1}} (m : ι -> (MeasurableSpace.{u2} α)) (S : Set.{u1} ι), Eq.{succ u2} (MeasurableSpace.{u2} α) (MeasurableSpace.generateFrom.{u2} α (piUnionᵢInter.{u2, u1} α ι (fun (n : ι) => setOf.{u2} (Set.{u2} α) (fun (s : Set.{u2} α) => MeasurableSet.{u2} α (m n) s)) S)) (supᵢ.{u2, succ u1} (MeasurableSpace.{u2} α) (ConditionallyCompleteLattice.toSupSet.{u2} (MeasurableSpace.{u2} α) (CompleteLattice.toConditionallyCompleteLattice.{u2} (MeasurableSpace.{u2} α) (MeasurableSpace.instCompleteLatticeMeasurableSpace.{u2} α))) ι (fun (i : ι) => supᵢ.{u2, 0} (MeasurableSpace.{u2} α) (ConditionallyCompleteLattice.toSupSet.{u2} (MeasurableSpace.{u2} α) (CompleteLattice.toConditionallyCompleteLattice.{u2} (MeasurableSpace.{u2} α) (MeasurableSpace.instCompleteLatticeMeasurableSpace.{u2} α))) (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i S) (fun (H : Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i S) => m i)))
-Case conversion may be inaccurate. Consider using '#align generate_from_pi_Union_Inter_measurable_set generateFrom_piUnionᵢInter_measurableSetₓ'. -/
-theorem generateFrom_piUnionᵢInter_measurableSet (m : ι → MeasurableSpace α) (S : Set ι) :
- generateFrom (piUnionᵢInter (fun n => { s | measurable_set[m n] s }) S) = ⨆ i ∈ S, m i :=
+ forall {α : Type.{u2}} {ι : Type.{u1}} (m : ι -> (MeasurableSpace.{u2} α)) (S : Set.{u1} ι), Eq.{succ u2} (MeasurableSpace.{u2} α) (MeasurableSpace.generateFrom.{u2} α (piiUnionInter.{u2, u1} α ι (fun (n : ι) => setOf.{u2} (Set.{u2} α) (fun (s : Set.{u2} α) => MeasurableSet.{u2} α (m n) s)) S)) (iSup.{u2, succ u1} (MeasurableSpace.{u2} α) (ConditionallyCompleteLattice.toSupSet.{u2} (MeasurableSpace.{u2} α) (CompleteLattice.toConditionallyCompleteLattice.{u2} (MeasurableSpace.{u2} α) (MeasurableSpace.instCompleteLatticeMeasurableSpace.{u2} α))) ι (fun (i : ι) => iSup.{u2, 0} (MeasurableSpace.{u2} α) (ConditionallyCompleteLattice.toSupSet.{u2} (MeasurableSpace.{u2} α) (CompleteLattice.toConditionallyCompleteLattice.{u2} (MeasurableSpace.{u2} α) (MeasurableSpace.instCompleteLatticeMeasurableSpace.{u2} α))) (Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i S) (fun (H : Membership.mem.{u1, u1} ι (Set.{u1} ι) (Set.instMembershipSet.{u1} ι) i S) => m i)))
+Case conversion may be inaccurate. Consider using '#align generate_from_pi_Union_Inter_measurable_set generateFrom_piiUnionInter_measurableSetₓ'. -/
+theorem generateFrom_piiUnionInter_measurableSet (m : ι → MeasurableSpace α) (S : Set ι) :
+ generateFrom (piiUnionInter (fun n => { s | measurable_set[m n] s }) S) = ⨆ i ∈ S, m i :=
by
refine' le_antisymm _ _
· rw [← @generate_from_measurable_set α (⨆ i ∈ S, m i)]
- exact generate_from_mono (measurableSet_supᵢ_of_mem_piUnionᵢInter m S)
- · refine' supᵢ₂_le fun i hi => _
+ exact generate_from_mono (measurableSet_iSup_of_mem_piiUnionInter m S)
+ · refine' iSup₂_le fun i hi => _
rw [← @generate_from_measurable_set α (m i)]
- exact generate_from_mono (mem_piUnionᵢInter_of_measurableSet m hi)
-#align generate_from_pi_Union_Inter_measurable_set generateFrom_piUnionᵢInter_measurableSet
+ exact generate_from_mono (mem_piiUnionInter_of_measurableSet m hi)
+#align generate_from_pi_Union_Inter_measurable_set generateFrom_piiUnionInter_measurableSet
end UnionInter
@@ -760,7 +760,7 @@ structure DynkinSystem (α : Type _) where
Has : Set α → Prop
has_empty : has ∅
HasCompl : ∀ {a}, has a → has (aᶜ)
- has_unionᵢ_nat : ∀ {f : ℕ → Set α}, Pairwise (Disjoint on f) → (∀ i, has (f i)) → has (⋃ i, f i)
+ has_iUnion_nat : ∀ {f : ℕ → Set α}, Pairwise (Disjoint on f) → (∀ i, has (f i)) → has (⋃ i, f i)
#align measurable_space.dynkin_system MeasurableSpace.DynkinSystem
-/
@@ -793,21 +793,21 @@ theorem has_univ : d.Has univ := by simpa using d.has_compl d.has_empty
#align measurable_space.dynkin_system.has_univ MeasurableSpace.DynkinSystem.has_univ
-/
-/- warning: measurable_space.dynkin_system.has_Union -> MeasurableSpace.DynkinSystem.has_unionᵢ is a dubious translation:
+/- warning: measurable_space.dynkin_system.has_Union -> MeasurableSpace.DynkinSystem.has_iUnion is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} (d : MeasurableSpace.DynkinSystem.{u1} α) {β : Type.{u2}} [_inst_1 : Countable.{succ u2} β] {f : β -> (Set.{u1} α)}, (Pairwise.{u2} β (Function.onFun.{succ u2, succ u1, 1} β (Set.{u1} α) Prop (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)))) f)) -> (forall (i : β), MeasurableSpace.DynkinSystem.Has.{u1} α d (f i)) -> (MeasurableSpace.DynkinSystem.Has.{u1} α d (Set.unionᵢ.{u1, succ u2} α β (fun (i : β) => f i)))
+ forall {α : Type.{u1}} (d : MeasurableSpace.DynkinSystem.{u1} α) {β : Type.{u2}} [_inst_1 : Countable.{succ u2} β] {f : β -> (Set.{u1} α)}, (Pairwise.{u2} β (Function.onFun.{succ u2, succ u1, 1} β (Set.{u1} α) Prop (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)))) f)) -> (forall (i : β), MeasurableSpace.DynkinSystem.Has.{u1} α d (f i)) -> (MeasurableSpace.DynkinSystem.Has.{u1} α d (Set.iUnion.{u1, succ u2} α β (fun (i : β) => f i)))
but is expected to have type
- forall {α : Type.{u1}} (d : MeasurableSpace.DynkinSystem.{u1} α) {β : Type.{u2}} [_inst_1 : Countable.{succ u2} β] {f : β -> (Set.{u1} α)}, (Pairwise.{u2} β (Function.onFun.{succ u2, succ u1, 1} β (Set.{u1} α) Prop (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) f)) -> (forall (i : β), MeasurableSpace.DynkinSystem.Has.{u1} α d (f i)) -> (MeasurableSpace.DynkinSystem.Has.{u1} α d (Set.unionᵢ.{u1, succ u2} α β (fun (i : β) => f i)))
-Case conversion may be inaccurate. Consider using '#align measurable_space.dynkin_system.has_Union MeasurableSpace.DynkinSystem.has_unionᵢₓ'. -/
-theorem has_unionᵢ {β} [Countable β] {f : β → Set α} (hd : Pairwise (Disjoint on f))
+ forall {α : Type.{u1}} (d : MeasurableSpace.DynkinSystem.{u1} α) {β : Type.{u2}} [_inst_1 : Countable.{succ u2} β] {f : β -> (Set.{u1} α)}, (Pairwise.{u2} β (Function.onFun.{succ u2, succ u1, 1} β (Set.{u1} α) Prop (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) f)) -> (forall (i : β), MeasurableSpace.DynkinSystem.Has.{u1} α d (f i)) -> (MeasurableSpace.DynkinSystem.Has.{u1} α d (Set.iUnion.{u1, succ u2} α β (fun (i : β) => f i)))
+Case conversion may be inaccurate. Consider using '#align measurable_space.dynkin_system.has_Union MeasurableSpace.DynkinSystem.has_iUnionₓ'. -/
+theorem has_iUnion {β} [Countable β] {f : β → Set α} (hd : Pairwise (Disjoint on f))
(h : ∀ i, d.Has (f i)) : d.Has (⋃ i, f i) :=
by
cases nonempty_encodable β
- rw [← Encodable.unionᵢ_decode₂]
+ rw [← Encodable.iUnion_decode₂]
exact
- d.has_Union_nat (Encodable.unionᵢ_decode₂_disjoint_on hd) fun n =>
- Encodable.unionᵢ_decode₂_cases d.has_empty h
-#align measurable_space.dynkin_system.has_Union MeasurableSpace.DynkinSystem.has_unionᵢ
+ d.has_Union_nat (Encodable.iUnion_decode₂_disjoint_on hd) fun n =>
+ Encodable.iUnion_decode₂_cases d.has_empty h
+#align measurable_space.dynkin_system.has_Union MeasurableSpace.DynkinSystem.has_iUnion
/- warning: measurable_space.dynkin_system.has_union -> MeasurableSpace.DynkinSystem.has_union is a dubious translation:
lean 3 declaration is
@@ -855,7 +855,7 @@ def ofMeasurableSpace (m : MeasurableSpace α) : DynkinSystem α
Has := m.MeasurableSet'
has_empty := m.measurable_set_empty
HasCompl := m.measurable_set_compl
- has_unionᵢ_nat f _ hf := m.measurable_set_unionᵢ f hf
+ has_iUnion_nat f _ hf := m.measurable_set_iUnion f hf
#align measurable_space.dynkin_system.of_measurable_space MeasurableSpace.DynkinSystem.ofMeasurableSpace
-/
@@ -901,7 +901,7 @@ def generate (s : Set (Set α)) : DynkinSystem α
Has := GenerateHas s
has_empty := GenerateHas.empty
HasCompl a := GenerateHas.compl
- has_unionᵢ_nat f := GenerateHas.unionᵢ
+ has_iUnion_nat f := GenerateHas.iUnion
#align measurable_space.dynkin_system.generate MeasurableSpace.DynkinSystem.generate
-/
@@ -926,8 +926,8 @@ def toMeasurableSpace (h_inter : ∀ s₁ s₂, d.Has s₁ → d.Has s₂ → d.
MeasurableSet' := d.Has
measurable_set_empty := d.has_empty
measurable_set_compl s h := d.HasCompl h
- measurable_set_unionᵢ f hf := by
- rw [← unionᵢ_disjointed]
+ measurable_set_iUnion f hf := by
+ rw [← iUnion_disjointed]
exact
d.has_Union (disjoint_disjointed _) fun n =>
disjointedRec (fun t i h => h_inter _ _ h <| d.has_compl <| hf i) (hf n)
@@ -958,7 +958,7 @@ def restrictOn {s : Set α} (h : d.Has s) : DynkinSystem α
exact
d.has_diff (d.has_compl hts) (d.has_compl h)
(compl_subset_compl.mpr <| inter_subset_right _ _)
- has_unionᵢ_nat f hd hf := by
+ has_iUnion_nat f hd hf := by
rw [Union_inter]
refine' d.has_Union_nat _ hf
exact hd.mono fun i j => Disjoint.mono (inter_subset_left _ _) (inter_subset_left _ _)
@@ -967,7 +967,7 @@ def restrictOn {s : Set α} (h : d.Has s) : DynkinSystem α
#print MeasurableSpace.DynkinSystem.generate_le /-
theorem generate_le {s : Set (Set α)} (h : ∀ t ∈ s, d.Has t) : generate s ≤ d := fun t ht =>
- ht.recOn h d.has_empty (fun a _ h => d.HasCompl h) fun f hd _ hf => d.has_unionᵢ hd hf
+ ht.recOn h d.has_empty (fun a _ h => d.HasCompl h) fun f hd _ hf => d.has_iUnion hd hf
#align measurable_space.dynkin_system.generate_le MeasurableSpace.DynkinSystem.generate_le
-/
@@ -1021,9 +1021,9 @@ end DynkinSystem
/- warning: measurable_space.induction_on_inter -> MeasurableSpace.induction_on_inter is a dubious translation:
lean 3 declaration is
- forall {α : Type.{u1}} {C : (Set.{u1} α) -> Prop} {s : Set.{u1} (Set.{u1} α)} [m : MeasurableSpace.{u1} α], (Eq.{succ u1} (MeasurableSpace.{u1} α) m (MeasurableSpace.generateFrom.{u1} α s)) -> (IsPiSystem.{u1} α s) -> (C (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α))) -> (forall (t : Set.{u1} α), (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) t s) -> (C t)) -> (forall (t : Set.{u1} α), (MeasurableSet.{u1} α m t) -> (C t) -> (C (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) t))) -> (forall (f : Nat -> (Set.{u1} α)), (Pairwise.{0} Nat (Function.onFun.{1, succ u1, 1} Nat (Set.{u1} α) Prop (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)))) f)) -> (forall (i : Nat), MeasurableSet.{u1} α m (f i)) -> (forall (i : Nat), C (f i)) -> (C (Set.unionᵢ.{u1, 1} α Nat (fun (i : Nat) => f i)))) -> (forall {{t : Set.{u1} α}}, (MeasurableSet.{u1} α m t) -> (C t))
+ forall {α : Type.{u1}} {C : (Set.{u1} α) -> Prop} {s : Set.{u1} (Set.{u1} α)} [m : MeasurableSpace.{u1} α], (Eq.{succ u1} (MeasurableSpace.{u1} α) m (MeasurableSpace.generateFrom.{u1} α s)) -> (IsPiSystem.{u1} α s) -> (C (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.hasEmptyc.{u1} α))) -> (forall (t : Set.{u1} α), (Membership.Mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.hasMem.{u1} (Set.{u1} α)) t s) -> (C t)) -> (forall (t : Set.{u1} α), (MeasurableSet.{u1} α m t) -> (C t) -> (C (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)) t))) -> (forall (f : Nat -> (Set.{u1} α)), (Pairwise.{0} Nat (Function.onFun.{1, succ u1, 1} Nat (Set.{u1} α) Prop (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.completeBooleanAlgebra.{u1} α)))))) (GeneralizedBooleanAlgebra.toOrderBot.{u1} (Set.{u1} α) (BooleanAlgebra.toGeneralizedBooleanAlgebra.{u1} (Set.{u1} α) (Set.booleanAlgebra.{u1} α)))) f)) -> (forall (i : Nat), MeasurableSet.{u1} α m (f i)) -> (forall (i : Nat), C (f i)) -> (C (Set.iUnion.{u1, 1} α Nat (fun (i : Nat) => f i)))) -> (forall {{t : Set.{u1} α}}, (MeasurableSet.{u1} α m t) -> (C t))
but is expected to have type
- forall {α : Type.{u1}} {C : (Set.{u1} α) -> Prop} {s : Set.{u1} (Set.{u1} α)} [m : MeasurableSpace.{u1} α], (Eq.{succ u1} (MeasurableSpace.{u1} α) m (MeasurableSpace.generateFrom.{u1} α s)) -> (IsPiSystem.{u1} α s) -> (C (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.instEmptyCollectionSet.{u1} α))) -> (forall (t : Set.{u1} α), (Membership.mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instMembershipSet.{u1} (Set.{u1} α)) t s) -> (C t)) -> (forall (t : Set.{u1} α), (MeasurableSet.{u1} α m t) -> (C t) -> (C (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α)) t))) -> (forall (f : Nat -> (Set.{u1} α)), (Pairwise.{0} Nat (Function.onFun.{1, succ u1, 1} Nat (Set.{u1} α) Prop (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) f)) -> (forall (i : Nat), MeasurableSet.{u1} α m (f i)) -> (forall (i : Nat), C (f i)) -> (C (Set.unionᵢ.{u1, 1} α Nat (fun (i : Nat) => f i)))) -> (forall {{t : Set.{u1} α}}, (MeasurableSet.{u1} α m t) -> (C t))
+ forall {α : Type.{u1}} {C : (Set.{u1} α) -> Prop} {s : Set.{u1} (Set.{u1} α)} [m : MeasurableSpace.{u1} α], (Eq.{succ u1} (MeasurableSpace.{u1} α) m (MeasurableSpace.generateFrom.{u1} α s)) -> (IsPiSystem.{u1} α s) -> (C (EmptyCollection.emptyCollection.{u1} (Set.{u1} α) (Set.instEmptyCollectionSet.{u1} α))) -> (forall (t : Set.{u1} α), (Membership.mem.{u1, u1} (Set.{u1} α) (Set.{u1} (Set.{u1} α)) (Set.instMembershipSet.{u1} (Set.{u1} α)) t s) -> (C t)) -> (forall (t : Set.{u1} α), (MeasurableSet.{u1} α m t) -> (C t) -> (C (HasCompl.compl.{u1} (Set.{u1} α) (BooleanAlgebra.toHasCompl.{u1} (Set.{u1} α) (Set.instBooleanAlgebraSet.{u1} α)) t))) -> (forall (f : Nat -> (Set.{u1} α)), (Pairwise.{0} Nat (Function.onFun.{1, succ u1, 1} Nat (Set.{u1} α) Prop (Disjoint.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))) (BoundedOrder.toOrderBot.{u1} (Set.{u1} α) (Preorder.toLE.{u1} (Set.{u1} α) (PartialOrder.toPreorder.{u1} (Set.{u1} α) (CompleteSemilatticeInf.toPartialOrder.{u1} (Set.{u1} α) (CompleteLattice.toCompleteSemilatticeInf.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α)))))))) (CompleteLattice.toBoundedOrder.{u1} (Set.{u1} α) (Order.Coframe.toCompleteLattice.{u1} (Set.{u1} α) (CompleteDistribLattice.toCoframe.{u1} (Set.{u1} α) (CompleteBooleanAlgebra.toCompleteDistribLattice.{u1} (Set.{u1} α) (Set.instCompleteBooleanAlgebraSet.{u1} α))))))) f)) -> (forall (i : Nat), MeasurableSet.{u1} α m (f i)) -> (forall (i : Nat), C (f i)) -> (C (Set.iUnion.{u1, 1} α Nat (fun (i : Nat) => f i)))) -> (forall {{t : Set.{u1} α}}, (MeasurableSet.{u1} α m t) -> (C t))
Case conversion may be inaccurate. Consider using '#align measurable_space.induction_on_inter MeasurableSpace.induction_on_interₓ'. -/
theorem induction_on_inter {C : Set α → Prop} {s : Set (Set α)} [m : MeasurableSpace α]
(h_eq : m = generateFrom s) (h_inter : IsPiSystem s) (h_empty : C ∅) (h_basic : ∀ t ∈ s, C t)
mathlib commit https://github.com/leanprover-community/mathlib/commit/4c586d291f189eecb9d00581aeb3dd998ac34442
@@ -66,7 +66,7 @@ open MeasurableSpace Set
open Classical MeasureTheory
-/- ./././Mathport/Syntax/Translate/Basic.lean:628:2: warning: expanding binder collection (s t «expr ∈ » C) -/
+/- ./././Mathport/Syntax/Translate/Basic.lean:635:2: warning: expanding binder collection (s t «expr ∈ » C) -/
#print IsPiSystem /-
/-- 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
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -670,11 +670,11 @@ theorem ofMeasurableSpace_toMeasurableSpace
/-- If `s` is in a Dynkin system `d`, we can form the new Dynkin system `{s ∩ t | t ∈ d}`. -/
def restrictOn {s : Set α} (h : d.Has s) : DynkinSystem α where
- -- Porting note: `simp only []` required for a beta reduction
+ -- Porting note(#12129): additional beta reduction needed
Has t := d.Has (t ∩ s)
has_empty := by simp [d.has_empty]
has_compl {t} hts := by
- simp only []
+ beta_reduce
have : tᶜ ∩ s = (t ∩ s)ᶜ \ sᶜ := Set.ext fun x => by by_cases h : x ∈ s <;> simp [h]
rw [this]
exact
All of these changes appear to be oversights to me.
@@ -274,7 +274,7 @@ theorem generateFrom_generatePiSystem_eq {α} {g : Set (Set α)} :
· exact fun t h_t => measurableSet_generateFrom (generatePiSystem.base h_t)
#align generate_from_generate_pi_system_eq generateFrom_generatePiSystem_eq
-/- Every element of the π-system generated by the union of a family of π-systems
+/-- Every element of the π-system generated by the union of a family of π-systems
is a finite intersection of elements from the π-systems.
For an indexed union version, see `mem_generatePiSystem_iUnion_elim'`. -/
theorem mem_generatePiSystem_iUnion_elim {α β} {g : β → Set (Set α)} (h_pi : ∀ b, IsPiSystem (g b))
@@ -308,7 +308,7 @@ theorem mem_generatePiSystem_iUnion_elim {α β} {g : β → Set (Set α)} (h_pi
apply False.elim (h_b.elim hbs hbt)
#align mem_generate_pi_system_Union_elim mem_generatePiSystem_iUnion_elim
-/- Every element of the π-system generated by an indexed union of a family of π-systems
+/-- Every element of the π-system generated by an indexed union of a family of π-systems
is a finite intersection of elements from the π-systems.
For a total union version, see `mem_generatePiSystem_iUnion_elim`. -/
theorem mem_generatePiSystem_iUnion_elim' {α β} {g : β → Set (Set α)} {s : Set β}
Uses Set.not_nonempty_iff_eq_empty
to shorten the proof of IsPiSystem.comap
.
@@ -106,11 +106,7 @@ theorem IsPiSystem.comap {α β} {S : Set (Set β)} (h_pi : IsPiSystem S) (f :
IsPiSystem { s : Set α | ∃ t ∈ S, f ⁻¹' t = s } := by
rintro _ ⟨s, hs_mem, rfl⟩ _ ⟨t, ht_mem, rfl⟩ hst
rw [← Set.preimage_inter] at hst ⊢
- refine' ⟨s ∩ t, h_pi s hs_mem t ht_mem _, rfl⟩
- by_contra h
- rw [Set.not_nonempty_iff_eq_empty] at h
- rw [h] at hst
- simp at hst
+ exact ⟨s ∩ t, h_pi s hs_mem t ht_mem (nonempty_of_nonempty_preimage hst), rfl⟩
#align is_pi_system.comap IsPiSystem.comap
theorem isPiSystem_iUnion_of_directed_le {α ι} (p : ι → Set (Set α))
Purely automatic replacement. If this is in any way controversial; I'm happy to just close this PR.
@@ -549,7 +549,7 @@ structure DynkinSystem (α : Type*) where
/-- A Dynkin system is closed under complementation. -/
has_compl : ∀ {a}, Has a → Has aᶜ
/-- A Dynkin system is closed under countable union of pairwise disjoint sets. Use a more general
- `MeasurableSpace.DynkinSystem.has_iUnion` instead.-/
+ `MeasurableSpace.DynkinSystem.has_iUnion` instead. -/
has_iUnion_nat : ∀ {f : ℕ → Set α}, Pairwise (Disjoint on f) → (∀ i, Has (f i)) → Has (⋃ i, f i)
#align measurable_space.dynkin_system MeasurableSpace.DynkinSystem
open Classical
(#11199)
We remove all but one open Classical
s, instead preferring to use open scoped Classical
. The only real side-effect this led to is moving a couple declarations to use Exists.choose
instead of Classical.choose
.
The first few commits are explicitly labelled regex replaces for ease of review.
@@ -58,7 +58,8 @@ import Mathlib.MeasureTheory.MeasurableSpace.Defs
open MeasurableSpace Set
-open Classical MeasureTheory
+open scoped Classical
+open MeasureTheory
/-- 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
This is a very large PR, but it has been reviewed piecemeal already in PRs to the bump/v4.7.0
branch as we update to intermediate nightlies.
Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Kyle Miller <kmill31415@gmail.com> Co-authored-by: damiano <adomani@gmail.com>
@@ -435,7 +435,7 @@ theorem isPiSystem_piiUnionInter (π : ι → Set (Set α)) (hpi : ∀ x, IsPiSy
rw [ht1_eq, ht2_eq]
simp_rw [← Set.inf_eq_inter]
ext1 x
- simp only [inf_eq_inter, mem_inter_iff, mem_iInter, Finset.mem_union]
+ simp only [g, inf_eq_inter, mem_inter_iff, mem_iInter, Finset.mem_union]
refine' ⟨fun h i _ => _, fun h => ⟨fun i hi1 => _, fun i hi2 => _⟩⟩
· split_ifs with h_1 h_2 h_2
exacts [⟨h.1 i h_1, h.2 i h_2⟩, ⟨h.1 i h_1, Set.mem_univ _⟩, ⟨Set.mem_univ _, h.2 i h_2⟩,
@@ -447,7 +447,7 @@ theorem isPiSystem_piiUnionInter (π : ι → Set (Set α)) (hpi : ∀ x, IsPiSy
rw [if_pos hi2] at h
exact h.2
refine' ⟨fun n hn => _, h_inter_eq⟩
- simp only []
+ simp only [g]
split_ifs with hn1 hn2 h
· refine' hpi n (f1 n) (hf1m n hn1) (f2 n) (hf2m n hn2) (Set.nonempty_iff_ne_empty.2 fun h => _)
rw [h_inter_eq] at h_nonempty
@@ -455,7 +455,7 @@ theorem isPiSystem_piiUnionInter (π : ι → Set (Set α)) (hpi : ∀ x, IsPiSy
(Set.not_nonempty_iff_eq_empty.mpr h_empty) h_nonempty
refine' le_antisymm (Set.iInter_subset_of_subset n _) (Set.empty_subset _)
refine' Set.iInter_subset_of_subset hn _
- simp_rw [if_pos hn1, if_pos hn2]
+ simp_rw [g, if_pos hn1, if_pos hn2]
exact h.subset
· simp [hf1m n hn1]
· simp [hf2m n h]
have
, replace
and suffices
(#10640)
No changes to tactic file, it's just boring fixes throughout the library.
This follows on from #6964.
Co-authored-by: sgouezel <sebastien.gouezel@univ-rennes1.fr> Co-authored-by: Eric Wieser <wieser.eric@gmail.com>
@@ -318,8 +318,7 @@ theorem mem_generatePiSystem_iUnion_elim' {α β} {g : β → Set (Set α)} {s :
(h_pi : ∀ b ∈ s, IsPiSystem (g b)) (t : Set α) (h_t : t ∈ generatePiSystem (⋃ b ∈ s, g b)) :
∃ (T : Finset β) (f : β → Set α), ↑T ⊆ s ∧ (t = ⋂ b ∈ T, f b) ∧ ∀ b ∈ T, f b ∈ g b := by
have : t ∈ generatePiSystem (⋃ b : Subtype s, (g ∘ Subtype.val) b) := by
- suffices h1 : ⋃ b : Subtype s, (g ∘ Subtype.val) b = ⋃ b ∈ s, g b
- · rwa [h1]
+ suffices h1 : ⋃ b : Subtype s, (g ∘ Subtype.val) b = ⋃ b ∈ s, g b by rwa [h1]
ext x
simp only [exists_prop, Set.mem_iUnion, Function.comp_apply, Subtype.exists, Subtype.coe_mk]
rfl
@@ -452,8 +451,8 @@ theorem isPiSystem_piiUnionInter (π : ι → Set (Set α)) (hpi : ∀ x, IsPiSy
split_ifs with hn1 hn2 h
· refine' hpi n (f1 n) (hf1m n hn1) (f2 n) (hf2m n hn2) (Set.nonempty_iff_ne_empty.2 fun h => _)
rw [h_inter_eq] at h_nonempty
- suffices h_empty : ⋂ i ∈ p1 ∪ p2, g i = ∅
- exact (Set.not_nonempty_iff_eq_empty.mpr h_empty) h_nonempty
+ suffices h_empty : ⋂ i ∈ p1 ∪ p2, g i = ∅ from
+ (Set.not_nonempty_iff_eq_empty.mpr h_empty) h_nonempty
refine' le_antisymm (Set.iInter_subset_of_subset n _) (Set.empty_subset _)
refine' Set.iInter_subset_of_subset hn _
simp_rw [if_pos hn1, if_pos hn2]
@@ -508,7 +507,7 @@ theorem measurableSet_iSup_of_mem_piiUnionInter (m : ι → MeasurableSpace α)
MeasurableSet[⨆ i ∈ S, m i] t := by
rcases ht with ⟨pt, hpt, ft, ht_m, rfl⟩
refine' pt.measurableSet_biInter fun i hi => _
- suffices h_le : m i ≤ ⨆ i ∈ S, m i; exact h_le (ft i) (ht_m i hi)
+ suffices h_le : m i ≤ ⨆ i ∈ S, m i from h_le (ft i) (ht_m i hi)
have hi' : i ∈ S := hpt hi
exact le_iSup₂ (f := fun i (_ : i ∈ S) => m i) i hi'
#align measurable_set_supr_of_mem_pi_Union_Inter measurableSet_iSup_of_mem_piiUnionInter
∃ x ∈ s, _
instead of ∃ (x) (_ : x ∈ s), _
(#9184)
Search for [∀∃].*(_
and manually replace some occurrences with more readable versions.
In case of ∀
, the new expressions are defeq to the old ones.
In case of ∃
, they differ by exists_prop
.
In some rare cases, golf proofs that needed fixing.
@@ -164,7 +164,6 @@ theorem isPiSystem_Ici : IsPiSystem (range Ici : Set (Set α)) :=
@image_univ α _ Ici ▸ isPiSystem_image_Ici univ
#align is_pi_system_Ici isPiSystem_Ici
--- porting note: change `∃ (_ : p l u), _` to `_ ∧ _`
theorem isPiSystem_Ixx_mem {Ixx : α → α → Set α} {p : α → α → Prop}
(Hne : ∀ {a b}, (Ixx a b).Nonempty → p a b)
(Hi : ∀ {a₁ b₁ a₂ b₂}, Ixx a₁ b₁ ∩ Ixx a₂ b₂ = Ixx (max a₁ a₂) (min b₁ b₂)) (s t : Set α) :
@@ -174,7 +173,6 @@ theorem isPiSystem_Ixx_mem {Ixx : α → α → Set α} {p : α → α → Prop}
exact fun H => ⟨l₁ ⊔ l₂, sup_ind l₁ l₂ hls₁ hls₂, u₁ ⊓ u₂, inf_ind u₁ u₂ hut₁ hut₂, Hne H, rfl⟩
#align is_pi_system_Ixx_mem isPiSystem_Ixx_mem
--- porting note: change `∃ (_ : p l u), _` to `_ ∧ _`
theorem isPiSystem_Ixx {Ixx : α → α → Set α} {p : α → α → Prop}
(Hne : ∀ {a b}, (Ixx a b).Nonempty → p a b)
(Hi : ∀ {a₁ b₁ a₂ b₂}, Ixx a₁ b₁ ∩ Ixx a₂ b₂ = Ixx (max a₁ a₂) (min b₁ b₂)) (f : ι → α)
@@ -182,49 +180,41 @@ theorem isPiSystem_Ixx {Ixx : α → α → Set α} {p : α → α → Prop}
simpa only [exists_range_iff] using isPiSystem_Ixx_mem (@Hne) (@Hi) (range f) (range g)
#align is_pi_system_Ixx isPiSystem_Ixx
--- porting note: change `∃ (_ : p l u), _` to `_ ∧ _`
theorem isPiSystem_Ioo_mem (s t : Set α) :
IsPiSystem { S | ∃ᵉ (l ∈ s) (u ∈ t), l < u ∧ Ioo l u = S } :=
isPiSystem_Ixx_mem (Ixx := Ioo) (fun ⟨_, hax, hxb⟩ => hax.trans hxb) Ioo_inter_Ioo s t
#align is_pi_system_Ioo_mem isPiSystem_Ioo_mem
--- porting note: change `∃ (_ : p l u), _` to `_ ∧ _`
theorem isPiSystem_Ioo (f : ι → α) (g : ι' → α) :
@IsPiSystem α { S | ∃ l u, f l < g u ∧ Ioo (f l) (g u) = S } :=
isPiSystem_Ixx (Ixx := Ioo) (fun ⟨_, hax, hxb⟩ => hax.trans hxb) Ioo_inter_Ioo f g
#align is_pi_system_Ioo isPiSystem_Ioo
--- porting note: change `∃ (_ : p l u), _` to `_ ∧ _`
theorem isPiSystem_Ioc_mem (s t : Set α) :
IsPiSystem { S | ∃ᵉ (l ∈ s) (u ∈ t), l < u ∧ Ioc l u = S } :=
isPiSystem_Ixx_mem (Ixx := Ioc) (fun ⟨_, hax, hxb⟩ => hax.trans_le hxb) Ioc_inter_Ioc s t
#align is_pi_system_Ioc_mem isPiSystem_Ioc_mem
--- porting note: change `∃ (_ : p l u), _` to `_ ∧ _`
theorem isPiSystem_Ioc (f : ι → α) (g : ι' → α) :
@IsPiSystem α { S | ∃ i j, f i < g j ∧ Ioc (f i) (g j) = S } :=
isPiSystem_Ixx (Ixx := Ioc) (fun ⟨_, hax, hxb⟩ => hax.trans_le hxb) Ioc_inter_Ioc f g
#align is_pi_system_Ioc isPiSystem_Ioc
--- porting note: change `∃ (_ : p l u), _` to `_ ∧ _`
theorem isPiSystem_Ico_mem (s t : Set α) :
IsPiSystem { S | ∃ᵉ (l ∈ s) (u ∈ t), l < u ∧ Ico l u = S } :=
isPiSystem_Ixx_mem (Ixx := Ico) (fun ⟨_, hax, hxb⟩ => hax.trans_lt hxb) Ico_inter_Ico s t
#align is_pi_system_Ico_mem isPiSystem_Ico_mem
--- porting note: change `∃ (_ : p l u), _` to `_ ∧ _`
theorem isPiSystem_Ico (f : ι → α) (g : ι' → α) :
@IsPiSystem α { S | ∃ i j, f i < g j ∧ Ico (f i) (g j) = S } :=
isPiSystem_Ixx (Ixx := Ico) (fun ⟨_, hax, hxb⟩ => hax.trans_lt hxb) Ico_inter_Ico f g
#align is_pi_system_Ico isPiSystem_Ico
--- porting note: change `∃ (_ : p l u), _` to `_ ∧ _`
theorem isPiSystem_Icc_mem (s t : Set α) :
IsPiSystem { S | ∃ᵉ (l ∈ s) (u ∈ t), l ≤ u ∧ Icc l u = S } :=
isPiSystem_Ixx_mem (Ixx := Icc) nonempty_Icc.1 (by exact Icc_inter_Icc) s t
#align is_pi_system_Icc_mem isPiSystem_Icc_mem
--- porting note: change `∃ (_ : p l u), _` to `_ ∧ _`
theorem isPiSystem_Icc (f : ι → α) (g : ι' → α) :
@IsPiSystem α { S | ∃ i j, f i ≤ g j ∧ Icc (f i) (g j) = S } :=
isPiSystem_Ixx (Ixx := Icc) nonempty_Icc.1 (by exact Icc_inter_Icc) f g
Removes nonterminal simps on lines looking like simp [...]
@@ -600,7 +600,7 @@ theorem has_union {s₁ s₂ : Set α} (h₁ : d.Has s₁) (h₂ : d.Has s₂) (
theorem has_diff {s₁ s₂ : Set α} (h₁ : d.Has s₁) (h₂ : d.Has s₂) (h : s₂ ⊆ s₁) :
d.Has (s₁ \ s₂) := by
apply d.has_compl_iff.1
- simp [diff_eq, compl_inter]
+ simp only [diff_eq, compl_inter, compl_compl]
exact d.has_union (d.has_compl h₁) h₂ (disjoint_compl_left.mono_right h)
#align measurable_space.dynkin_system.has_diff MeasurableSpace.DynkinSystem.has_diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl, Martin Zinkevich, Rémy Degenne
-/
import Mathlib.Logic.Encodable.Lattice
-import Mathlib.MeasureTheory.MeasurableSpaceDef
+import Mathlib.MeasureTheory.MeasurableSpace.Defs
#align_import measure_theory.pi_system from "leanprover-community/mathlib"@"98e83c3d541c77cdb7da20d79611a780ff8e7d90"
@@ -312,8 +312,6 @@ theorem mem_generatePiSystem_iUnion_elim {α β} {g : β → Set (Set α)} (h_pi
and_true_iff, true_and_iff] at h1 ⊢
all_goals exact h1
intro b h_b
- -- Porting note: `simp only` required for a beta reduction
- simp only []
split_ifs with hbs hbt hbt
· refine' h_pi b (f_s b) (h_s b hbs) (f_t' b) (h_t' b hbt) (Set.Nonempty.mono _ h_nonempty)
exact Set.inter_subset_inter (Set.biInter_subset_of_mem hbs) (Set.biInter_subset_of_mem hbt)
Add borel_eq_generateFrom_Ioi_rat
, borel_eq_generateFrom_Ici_rat
, borel_eq_generateFrom_Iic_rat
(we already have the Iio
result). Also prove that these sets of intervals are pi-systems.
Co-authored-by: RemyDegenne <remydegenne@gmail.com>
@@ -149,6 +149,21 @@ theorem isPiSystem_Ioi : IsPiSystem (range Ioi : Set (Set α)) :=
@image_univ α _ Ioi ▸ isPiSystem_image_Ioi univ
#align is_pi_system_Ioi isPiSystem_Ioi
+theorem isPiSystem_image_Iic (s : Set α) : IsPiSystem (Iic '' s) := by
+ rintro _ ⟨a, ha, rfl⟩ _ ⟨b, hb, rfl⟩ -
+ exact ⟨a ⊓ b, inf_ind a b ha hb, Iic_inter_Iic.symm⟩
+
+theorem isPiSystem_Iic : IsPiSystem (range Iic : Set (Set α)) :=
+ @image_univ α _ Iic ▸ isPiSystem_image_Iic univ
+#align is_pi_system_Iic isPiSystem_Iic
+
+theorem isPiSystem_image_Ici (s : Set α) : IsPiSystem (Ici '' s) :=
+ @isPiSystem_image_Iic αᵒᵈ _ s
+
+theorem isPiSystem_Ici : IsPiSystem (range Ici : Set (Set α)) :=
+ @image_univ α _ Ici ▸ isPiSystem_image_Ici univ
+#align is_pi_system_Ici isPiSystem_Ici
+
-- porting note: change `∃ (_ : p l u), _` to `_ ∧ _`
theorem isPiSystem_Ixx_mem {Ixx : α → α → Set α} {p : α → α → Prop}
(Hne : ∀ {a b}, (Ixx a b).Nonempty → p a b)
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -69,7 +69,7 @@ def IsPiSystem {α} (C : Set (Set α)) : Prop :=
namespace MeasurableSpace
-theorem isPiSystem_measurableSet {α : Type _} [MeasurableSpace α] :
+theorem isPiSystem_measurableSet {α : Type*} [MeasurableSpace α] :
IsPiSystem { s : Set α | MeasurableSet s } := fun _ hs _ ht _ => hs.inter ht
#align measurable_space.is_pi_system_measurable_set MeasurableSpace.isPiSystem_measurableSet
@@ -130,7 +130,7 @@ theorem isPiSystem_iUnion_of_monotone {α ι} [SemilatticeSup ι] (p : ι → Se
section Order
-variable {α : Type _} {ι ι' : Sort _} [LinearOrder α]
+variable {α : Type*} {ι ι' : Sort*} [LinearOrder α]
theorem isPiSystem_image_Iio (s : Set α) : IsPiSystem (Iio '' s) := by
rintro _ ⟨a, ha, rfl⟩ _ ⟨b, hb, rfl⟩ -
@@ -347,7 +347,7 @@ theorem mem_generatePiSystem_iUnion_elim' {α β} {g : β → Set (Set α)} {s :
section UnionInter
-variable {α ι : Type _}
+variable {α ι : Type*}
/-! ### π-system generated by finite intersections of sets of a π-system family -/
@@ -524,7 +524,7 @@ end UnionInter
namespace MeasurableSpace
-variable {α : Type _}
+variable {α : Type*}
/-! ## Dynkin systems and Π-λ theorem -/
@@ -538,7 +538,7 @@ variable {α : Type _}
A Dynkin system is also known as a "λ-system" or a "d-system".
-/
-structure DynkinSystem (α : Type _) where
+structure DynkinSystem (α : Type*) where
/-- Predicate saying that a given set is contained in the Dynkin system. -/
Has : Set α → Prop
/-- A Dynkin system contains the empty set. -/
Per https://github.com/leanprover/lean4/issues/2343, we are going to need to change the automatic generation of instance names, as they become too long.
This PR ensures that everywhere in Mathlib that refers to an instance by name, that name is given explicitly, rather than being automatically generated.
There are four exceptions, which are now commented, with links to https://github.com/leanprover/lean4/issues/2343.
This was implemented by running Mathlib against a modified Lean that appended _ᾰ
to all automatically generated names, and fixing everything.
Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
@@ -591,7 +591,7 @@ theorem has_diff {s₁ s₂ : Set α} (h₁ : d.Has s₁) (h₂ : d.Has s₂) (h
exact d.has_union (d.has_compl h₁) h₂ (disjoint_compl_left.mono_right h)
#align measurable_space.dynkin_system.has_diff MeasurableSpace.DynkinSystem.has_diff
-instance : LE (DynkinSystem α) where le m₁ m₂ := m₁.Has ≤ m₂.Has
+instance instLEDynkinSystem : LE (DynkinSystem α) where le m₁ m₂ := m₁.Has ≤ m₂.Has
theorem le_def {α} {a b : DynkinSystem α} : a ≤ b ↔ a.Has ≤ b.Has :=
Iff.rfl
@@ -2,15 +2,12 @@
Copyright (c) 2021 Martin Zinkevich. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johannes Hölzl, Martin Zinkevich, Rémy Degenne
-
-! This file was ported from Lean 3 source module measure_theory.pi_system
-! leanprover-community/mathlib commit 98e83c3d541c77cdb7da20d79611a780ff8e7d90
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Logic.Encodable.Lattice
import Mathlib.MeasureTheory.MeasurableSpaceDef
+#align_import measure_theory.pi_system from "leanprover-community/mathlib"@"98e83c3d541c77cdb7da20d79611a780ff8e7d90"
+
/-!
# Induction principles for measurable sets, related to π-systems and λ-systems.
@@ -318,7 +318,7 @@ theorem mem_generatePiSystem_iUnion_elim' {α β} {g : β → Set (Set α)} {s :
(h_pi : ∀ b ∈ s, IsPiSystem (g b)) (t : Set α) (h_t : t ∈ generatePiSystem (⋃ b ∈ s, g b)) :
∃ (T : Finset β) (f : β → Set α), ↑T ⊆ s ∧ (t = ⋂ b ∈ T, f b) ∧ ∀ b ∈ T, f b ∈ g b := by
have : t ∈ generatePiSystem (⋃ b : Subtype s, (g ∘ Subtype.val) b) := by
- suffices h1 : (⋃ b : Subtype s, (g ∘ Subtype.val) b) = ⋃ b ∈ s, g b
+ suffices h1 : ⋃ b : Subtype s, (g ∘ Subtype.val) b = ⋃ b ∈ s, g b
· rwa [h1]
ext x
simp only [exists_prop, Set.mem_iUnion, Function.comp_apply, Subtype.exists, Subtype.coe_mk]
@@ -452,7 +452,7 @@ theorem isPiSystem_piiUnionInter (π : ι → Set (Set α)) (hpi : ∀ x, IsPiSy
split_ifs with hn1 hn2 h
· refine' hpi n (f1 n) (hf1m n hn1) (f2 n) (hf2m n hn2) (Set.nonempty_iff_ne_empty.2 fun h => _)
rw [h_inter_eq] at h_nonempty
- suffices h_empty : (⋂ i ∈ p1 ∪ p2, g i) = ∅
+ suffices h_empty : ⋂ i ∈ p1 ∪ p2, g i = ∅
exact (Set.not_nonempty_iff_eq_empty.mpr h_empty) h_nonempty
refine' le_antisymm (Set.iInter_subset_of_subset n _) (Set.empty_subset _)
refine' Set.iInter_subset_of_subset hn _
@@ -547,7 +547,7 @@ structure DynkinSystem (α : Type _) where
/-- A Dynkin system contains the empty set. -/
has_empty : Has ∅
/-- A Dynkin system is closed under complementation. -/
- has_compl : ∀ {a}, Has a → Has (aᶜ)
+ has_compl : ∀ {a}, Has a → Has aᶜ
/-- A Dynkin system is closed under countable union of pairwise disjoint sets. Use a more general
`MeasurableSpace.DynkinSystem.has_iUnion` instead.-/
has_iUnion_nat : ∀ {f : ℕ → Set α}, Pairwise (Disjoint on f) → (∀ i, Has (f i)) → Has (⋃ i, f i)
@@ -565,7 +565,7 @@ theorem ext : ∀ {d₁ d₂ : DynkinSystem α}, (∀ s : Set α, d₁.Has s ↔
variable (d : DynkinSystem α)
-theorem has_compl_iff {a} : d.Has (aᶜ) ↔ d.Has a :=
+theorem has_compl_iff {a} : d.Has aᶜ ↔ d.Has a :=
⟨fun h => by simpa using d.has_compl h, fun h => d.has_compl h⟩
#align measurable_space.dynkin_system.has_compl_iff MeasurableSpace.DynkinSystem.has_compl_iff
@@ -625,12 +625,12 @@ theorem ofMeasurableSpace_le_ofMeasurableSpace_iff {m₁ m₂ : MeasurableSpace
inductive GenerateHas (s : Set (Set α)) : Set α → Prop
| basic : ∀ t ∈ s, GenerateHas s t
| empty : GenerateHas s ∅
- | compl : ∀ {a}, GenerateHas s a → GenerateHas s (aᶜ)
+ | compl : ∀ {a}, GenerateHas s a → GenerateHas s aᶜ
| iUnion : ∀ {f : ℕ → Set α},
Pairwise (Disjoint on f) → (∀ i, GenerateHas s (f i)) → GenerateHas s (⋃ i, f i)
#align measurable_space.dynkin_system.generate_has MeasurableSpace.DynkinSystem.GenerateHas
-theorem generateHas_compl {C : Set (Set α)} {s : Set α} : GenerateHas C (sᶜ) ↔ GenerateHas C s := by
+theorem generateHas_compl {C : Set (Set α)} {s : Set α} : GenerateHas C sᶜ ↔ GenerateHas C s := by
refine' ⟨_, GenerateHas.compl⟩
intro h
convert GenerateHas.compl h
@@ -734,7 +734,7 @@ end DynkinSystem
theorem induction_on_inter {C : Set α → Prop} {s : Set (Set α)} [m : MeasurableSpace α]
(h_eq : m = generateFrom s) (h_inter : IsPiSystem s) (h_empty : C ∅) (h_basic : ∀ t ∈ s, C t)
- (h_compl : ∀ t, MeasurableSet t → C t → C (tᶜ))
+ (h_compl : ∀ t, MeasurableSet t → C t → C tᶜ)
(h_union :
∀ f : ℕ → Set α,
Pairwise (Disjoint on f) → (∀ i, MeasurableSet (f i)) → (∀ i, C (f i)) → C (⋃ i, f i)) :
at
and goals (#5387)
Changes are of the form
some_tactic at h⊢
-> some_tactic at h ⊢
some_tactic at h
-> some_tactic at h
@@ -107,7 +107,7 @@ theorem IsPiSystem.insert_univ {α} {S : Set (Set α)} (h_pi : IsPiSystem S) :
theorem IsPiSystem.comap {α β} {S : Set (Set β)} (h_pi : IsPiSystem S) (f : α → β) :
IsPiSystem { s : Set α | ∃ t ∈ S, f ⁻¹' t = s } := by
rintro _ ⟨s, hs_mem, rfl⟩ _ ⟨t, ht_mem, rfl⟩ hst
- rw [← Set.preimage_inter] at hst⊢
+ rw [← Set.preimage_inter] at hst ⊢
refine' ⟨s ∩ t, h_pi s hs_mem t ht_mem _, rfl⟩
by_contra h
rw [Set.not_nonempty_iff_eq_empty] at h
@@ -119,7 +119,7 @@ theorem isPiSystem_iUnion_of_directed_le {α ι} (p : ι → Set (Set α))
(hp_pi : ∀ n, IsPiSystem (p n)) (hp_directed : Directed (· ≤ ·) p) :
IsPiSystem (⋃ n, p n) := by
intro t1 ht1 t2 ht2 h
- rw [Set.mem_iUnion] at ht1 ht2⊢
+ rw [Set.mem_iUnion] at ht1 ht2 ⊢
cases' ht1 with n ht1
cases' ht2 with m ht2
obtain ⟨k, hpnk, hpmk⟩ : ∃ k, p n ≤ p k ∧ p m ≤ p k := hp_directed n m
@@ -297,7 +297,7 @@ theorem mem_generatePiSystem_iUnion_elim {α β} {g : β → Set (Set α)} (h_pi
constructor <;> intro h1 b <;> by_cases hbs : b ∈ T_s <;> by_cases hbt : b ∈ T_t' <;>
specialize h1 b <;>
simp only [hbs, hbt, if_true, if_false, true_imp_iff, and_self_iff, false_imp_iff,
- and_true_iff, true_and_iff] at h1⊢
+ and_true_iff, true_and_iff] at h1 ⊢
all_goals exact h1
intro b h_b
-- Porting note: `simp only` required for a beta reduction
@@ -439,7 +439,7 @@ theorem isPiSystem_piiUnionInter (π : ι → Set (Set α)) (hpi : ∀ x, IsPiSy
simp only [inf_eq_inter, mem_inter_iff, mem_iInter, Finset.mem_union]
refine' ⟨fun h i _ => _, fun h => ⟨fun i hi1 => _, fun i hi2 => _⟩⟩
· split_ifs with h_1 h_2 h_2
- exacts[⟨h.1 i h_1, h.2 i h_2⟩, ⟨h.1 i h_1, Set.mem_univ _⟩, ⟨Set.mem_univ _, h.2 i h_2⟩,
+ exacts [⟨h.1 i h_1, h.2 i h_2⟩, ⟨h.1 i h_1, Set.mem_univ _⟩, ⟨Set.mem_univ _, h.2 i h_2⟩,
⟨Set.mem_univ _, Set.mem_univ _⟩]
· specialize h i (Or.inl hi1)
rw [if_pos hi1] at h
@@ -720,7 +720,7 @@ theorem generate_inter {s : Set (Set α)} (hs : IsPiSystem s) {t₁ t₂ : Set
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).
+ additionally that it is non-empty, but we drop this condition in the formalization).
-/
theorem generateFrom_eq {s : Set (Set α)} (hs : IsPiSystem s) :
generateFrom s = (generate s).toMeasurableSpace fun t₁ t₂ => generate_inter hs :=
sSup
/iSup
(#3938)
As discussed on Zulip
supₛ
→ sSup
infₛ
→ sInf
supᵢ
→ iSup
infᵢ
→ iInf
bsupₛ
→ bsSup
binfₛ
→ bsInf
bsupᵢ
→ biSup
binfᵢ
→ biInf
csupₛ
→ csSup
cinfₛ
→ csInf
csupᵢ
→ ciSup
cinfᵢ
→ ciInf
unionₛ
→ sUnion
interₛ
→ sInter
unionᵢ
→ iUnion
interᵢ
→ iInter
bunionₛ
→ bsUnion
binterₛ
→ bsInter
bunionᵢ
→ biUnion
binterᵢ
→ biInter
Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>
@@ -43,12 +43,12 @@ import Mathlib.MeasureTheory.MeasurableSpaceDef
the σ-algebra generated from `g`. This is useful because there are connections between
independent sets that are π-systems and the generated independent spaces.
-* `mem_generatePiSystem_unionᵢ_elim` and `mem_generatePiSystem_unionᵢ_elim'` show that any
+* `mem_generatePiSystem_iUnion_elim` and `mem_generatePiSystem_iUnion_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.
-* `piUnionᵢInter` defines a new π-system from a family of π-systems `π : ι → Set (Set α)` and a
- set of indices `S : Set ι`. `piUnionᵢInter π S` is the set of sets that can be written
+* `piiUnionInter` defines a new π-system from a family of π-systems `π : ι → Set (Set α)` and a
+ set of indices `S : Set ι`. `piiUnionInter π S` is the set of sets that can be written
as `⋂ x ∈ t, f x` for some finset `t ∈ S` and sets `f x ∈ π x`.
## Implementation details
@@ -115,21 +115,21 @@ theorem IsPiSystem.comap {α β} {S : Set (Set β)} (h_pi : IsPiSystem S) (f :
simp at hst
#align is_pi_system.comap IsPiSystem.comap
-theorem isPiSystem_unionᵢ_of_directed_le {α ι} (p : ι → Set (Set α))
+theorem isPiSystem_iUnion_of_directed_le {α ι} (p : ι → Set (Set α))
(hp_pi : ∀ n, IsPiSystem (p n)) (hp_directed : Directed (· ≤ ·) p) :
IsPiSystem (⋃ n, p n) := by
intro t1 ht1 t2 ht2 h
- rw [Set.mem_unionᵢ] at ht1 ht2⊢
+ rw [Set.mem_iUnion] at ht1 ht2⊢
cases' ht1 with n ht1
cases' ht2 with m ht2
obtain ⟨k, hpnk, hpmk⟩ : ∃ k, p n ≤ p k ∧ p m ≤ p k := hp_directed n m
exact ⟨k, hp_pi k t1 (hpnk ht1) t2 (hpmk ht2) h⟩
-#align is_pi_system_Union_of_directed_le isPiSystem_unionᵢ_of_directed_le
+#align is_pi_system_Union_of_directed_le isPiSystem_iUnion_of_directed_le
-theorem isPiSystem_unionᵢ_of_monotone {α ι} [SemilatticeSup ι] (p : ι → Set (Set α))
+theorem isPiSystem_iUnion_of_monotone {α ι} [SemilatticeSup ι] (p : ι → Set (Set α))
(hp_pi : ∀ n, IsPiSystem (p n)) (hp_mono : Monotone p) : IsPiSystem (⋃ n, p n) :=
- isPiSystem_unionᵢ_of_directed_le p hp_pi (Monotone.directed_le hp_mono)
-#align is_pi_system_Union_of_monotone isPiSystem_unionᵢ_of_monotone
+ isPiSystem_iUnion_of_directed_le p hp_pi (Monotone.directed_le hp_mono)
+#align is_pi_system_Union_of_monotone isPiSystem_iUnion_of_monotone
section Order
@@ -277,8 +277,8 @@ theorem generateFrom_generatePiSystem_eq {α} {g : Set (Set α)} :
/- Every element of the π-system generated by the union of a family of π-systems
is a finite intersection of elements from the π-systems.
-For an indexed union version, see `mem_generatePiSystem_unionᵢ_elim'`. -/
-theorem mem_generatePiSystem_unionᵢ_elim {α β} {g : β → Set (Set α)} (h_pi : ∀ b, IsPiSystem (g b))
+For an indexed union version, see `mem_generatePiSystem_iUnion_elim'`. -/
+theorem mem_generatePiSystem_iUnion_elim {α β} {g : β → Set (Set α)} (h_pi : ∀ b, IsPiSystem (g b))
(t : Set α) (h_t : t ∈ generatePiSystem (⋃ b, g b)) :
∃ (T : Finset β) (f : β → Set α), (t = ⋂ b ∈ T, f b) ∧ ∀ b ∈ T, f b ∈ g b := by
induction' h_t with s h_s s t' h_gen_s h_gen_t' h_nonempty h_s h_t'
@@ -292,7 +292,7 @@ theorem mem_generatePiSystem_unionᵢ_elim {α β} {g : β → Set (Set α)} (h_
else if b ∈ T_t' then f_t' b else (∅ : Set α)
constructor
· ext a
- simp_rw [Set.mem_inter_iff, Set.mem_interᵢ, Finset.mem_union, or_imp]
+ simp_rw [Set.mem_inter_iff, Set.mem_iInter, Finset.mem_union, or_imp]
rw [← forall_and]
constructor <;> intro h1 b <;> by_cases hbs : b ∈ T_s <;> by_cases hbt : b ∈ T_t' <;>
specialize h1 b <;>
@@ -304,26 +304,26 @@ theorem mem_generatePiSystem_unionᵢ_elim {α β} {g : β → Set (Set α)} (h_
simp only []
split_ifs with hbs hbt hbt
· refine' h_pi b (f_s b) (h_s b hbs) (f_t' b) (h_t' b hbt) (Set.Nonempty.mono _ h_nonempty)
- exact Set.inter_subset_inter (Set.binterᵢ_subset_of_mem hbs) (Set.binterᵢ_subset_of_mem hbt)
+ exact Set.inter_subset_inter (Set.biInter_subset_of_mem hbs) (Set.biInter_subset_of_mem hbt)
· exact h_s b hbs
· exact h_t' b hbt
· rw [Finset.mem_union] at h_b
apply False.elim (h_b.elim hbs hbt)
-#align mem_generate_pi_system_Union_elim mem_generatePiSystem_unionᵢ_elim
+#align mem_generate_pi_system_Union_elim mem_generatePiSystem_iUnion_elim
/- Every element of the π-system generated by an indexed union of a family of π-systems
is a finite intersection of elements from the π-systems.
-For a total union version, see `mem_generatePiSystem_unionᵢ_elim`. -/
-theorem mem_generatePiSystem_unionᵢ_elim' {α β} {g : β → Set (Set α)} {s : Set β}
+For a total union version, see `mem_generatePiSystem_iUnion_elim`. -/
+theorem mem_generatePiSystem_iUnion_elim' {α β} {g : β → Set (Set α)} {s : Set β}
(h_pi : ∀ b ∈ s, IsPiSystem (g b)) (t : Set α) (h_t : t ∈ generatePiSystem (⋃ b ∈ s, g b)) :
∃ (T : Finset β) (f : β → Set α), ↑T ⊆ s ∧ (t = ⋂ b ∈ T, f b) ∧ ∀ b ∈ T, f b ∈ g b := by
have : t ∈ generatePiSystem (⋃ b : Subtype s, (g ∘ Subtype.val) b) := by
suffices h1 : (⋃ b : Subtype s, (g ∘ Subtype.val) b) = ⋃ b ∈ s, g b
· rwa [h1]
ext x
- simp only [exists_prop, Set.mem_unionᵢ, Function.comp_apply, Subtype.exists, Subtype.coe_mk]
+ simp only [exists_prop, Set.mem_iUnion, Function.comp_apply, Subtype.exists, Subtype.coe_mk]
rfl
- rcases @mem_generatePiSystem_unionᵢ_elim α (Subtype s) (g ∘ Subtype.val)
+ rcases @mem_generatePiSystem_iUnion_elim α (Subtype s) (g ∘ Subtype.val)
(fun b => h_pi b.val b.property) t this with
⟨T, ⟨f, ⟨rfl, h_t'⟩⟩⟩
refine'
@@ -332,7 +332,7 @@ theorem mem_generatePiSystem_unionᵢ_elim' {α β} {g : β → Set (Set α)} {s
· ext a
constructor <;>
· simp (config := { proj := false }) only
- [Set.mem_interᵢ, Subtype.forall, Finset.set_binterᵢ_finset_image]
+ [Set.mem_iInter, Subtype.forall, Finset.set_biInter_finset_image]
intro h1 b h_b h_b_in_T
have h2 := h1 b h_b h_b_in_T
revert h2
@@ -346,7 +346,7 @@ theorem mem_generatePiSystem_unionᵢ_elim' {α β} {g : β → Set (Set α)} {s
rw [h_b_alt, Subtype.val_injective.extend_apply]
apply h_t'
apply h_b_h
-#align mem_generate_pi_system_Union_elim' mem_generatePiSystem_unionᵢ_elim'
+#align mem_generate_pi_system_Union_elim' mem_generatePiSystem_iUnion_elim'
section UnionInter
@@ -358,15 +358,15 @@ variable {α ι : Type _}
/-- From a set of indices `S : Set ι` 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 finset `t ⊆ S` and sets
`f x ∈ π x`. If `π` is a family of π-systems, then it is a π-system. -/
-def piUnionᵢInter (π : ι → Set (Set α)) (S : Set ι) : Set (Set α) :=
+def piiUnionInter (π : ι → Set (Set α)) (S : Set ι) : Set (Set α) :=
{ s : Set α |
∃ (t : Finset ι) (_ : ↑t ⊆ S) (f : ι → Set α) (_ : ∀ x, x ∈ t → f x ∈ π x), s = ⋂ x ∈ t, f x }
-#align pi_Union_Inter piUnionᵢInter
+#align pi_Union_Inter piiUnionInter
-theorem piUnionᵢInter_singleton (π : ι → Set (Set α)) (i : ι) :
- piUnionᵢInter π {i} = π i ∪ {univ} := by
+theorem piiUnionInter_singleton (π : ι → Set (Set α)) (i : ι) :
+ piiUnionInter π {i} = π i ∪ {univ} := by
ext1 s
- simp only [piUnionᵢInter, exists_prop, mem_union]
+ simp only [piiUnionInter, exists_prop, mem_union]
refine' ⟨_, fun h => _⟩
· rintro ⟨t, hti, f, hfπ, rfl⟩
simp only [subset_singleton_iff, Finset.mem_coe] at hti
@@ -375,59 +375,59 @@ theorem piUnionᵢInter_singleton (π : ι → Set (Set α)) (i : ι) :
ext1 x
rw [Finset.mem_singleton]
exact ⟨fun h => hti x h, fun h => h.symm ▸ hi⟩
- simp only [ht_eq_i, Finset.mem_singleton, interᵢ_interᵢ_eq_left]
+ simp only [ht_eq_i, Finset.mem_singleton, iInter_iInter_eq_left]
exact Or.inl (hfπ i hi)
· have ht_empty : t = ∅ := by
ext1 x
simp only [Finset.not_mem_empty, iff_false_iff]
exact fun hx => hi (hti x hx ▸ hx)
-- Porting note: `Finset.not_mem_empty` required
- simp [ht_empty, Finset.not_mem_empty, interᵢ_false, interᵢ_univ, Set.mem_singleton univ,
+ simp [ht_empty, Finset.not_mem_empty, iInter_false, iInter_univ, Set.mem_singleton univ,
or_true_iff]
· cases' h with hs hs
· refine' ⟨{i}, _, fun _ => s, ⟨fun x hx => _, _⟩⟩
· rw [Finset.coe_singleton]
· rw [Finset.mem_singleton] at hx
rwa [hx]
- · simp only [Finset.mem_singleton, interᵢ_interᵢ_eq_left]
+ · simp only [Finset.mem_singleton, iInter_iInter_eq_left]
· refine' ⟨∅, _⟩
simpa only [Finset.coe_empty, subset_singleton_iff, mem_empty_iff_false, IsEmpty.forall_iff,
- imp_true_iff, Finset.not_mem_empty, interᵢ_false, interᵢ_univ, true_and_iff,
+ imp_true_iff, Finset.not_mem_empty, iInter_false, iInter_univ, true_and_iff,
exists_const] using hs
-#align pi_Union_Inter_singleton piUnionᵢInter_singleton
+#align pi_Union_Inter_singleton piiUnionInter_singleton
-theorem piUnionᵢInter_singleton_left (s : ι → Set α) (S : Set ι) :
- piUnionᵢInter (fun i => ({s i} : Set (Set α))) S =
+theorem piiUnionInter_singleton_left (s : ι → Set α) (S : Set ι) :
+ piiUnionInter (fun i => ({s i} : Set (Set α))) S =
{ s' : Set α | ∃ (t : Finset ι) (_ : ↑t ⊆ S), s' = ⋂ i ∈ t, s i } := by
ext1 s'
- simp_rw [piUnionᵢInter, Set.mem_singleton_iff, exists_prop, Set.mem_setOf_eq]
+ simp_rw [piiUnionInter, Set.mem_singleton_iff, exists_prop, Set.mem_setOf_eq]
refine' ⟨fun h => _, fun ⟨t, htS, h_eq⟩ => ⟨t, htS, s, fun _ _ => rfl, h_eq⟩⟩
obtain ⟨t, htS, f, hft_eq, rfl⟩ := h
refine' ⟨t, htS, _⟩
congr! 3
apply hft_eq
assumption
-#align pi_Union_Inter_singleton_left piUnionᵢInter_singleton_left
+#align pi_Union_Inter_singleton_left piiUnionInter_singleton_left
-theorem generateFrom_piUnionᵢInter_singleton_left (s : ι → Set α) (S : Set ι) :
- generateFrom (piUnionᵢInter (fun k => {s k}) S) = generateFrom { t | ∃ k ∈ S, s k = t } := by
+theorem generateFrom_piiUnionInter_singleton_left (s : ι → Set α) (S : Set ι) :
+ generateFrom (piiUnionInter (fun k => {s k}) S) = generateFrom { t | ∃ k ∈ S, s k = t } := by
refine' le_antisymm (generateFrom_le _) (generateFrom_mono _)
· rintro _ ⟨I, hI, f, hf, rfl⟩
- refine' Finset.measurableSet_binterᵢ _ fun m hm => measurableSet_generateFrom _
+ refine' Finset.measurableSet_biInter _ fun m hm => measurableSet_generateFrom _
exact ⟨m, hI hm, (hf m hm).symm⟩
· rintro _ ⟨k, hk, rfl⟩
refine' ⟨{k}, fun m hm => _, s, fun i _ => _, _⟩
· rw [Finset.mem_coe, Finset.mem_singleton] at hm
rwa [hm]
· exact Set.mem_singleton _
- · simp only [Finset.mem_singleton, Set.interᵢ_interᵢ_eq_left]
-#align generate_from_pi_Union_Inter_singleton_left generateFrom_piUnionᵢInter_singleton_left
+ · simp only [Finset.mem_singleton, Set.iInter_iInter_eq_left]
+#align generate_from_pi_Union_Inter_singleton_left generateFrom_piiUnionInter_singleton_left
-/-- If `π` is a family of π-systems, then `piUnionᵢInter π S` is a π-system. -/
-theorem isPiSystem_piUnionᵢInter (π : ι → Set (Set α)) (hpi : ∀ x, IsPiSystem (π x)) (S : Set ι) :
- IsPiSystem (piUnionᵢInter π S) := by
+/-- If `π` is a family of π-systems, then `piiUnionInter π S` is a π-system. -/
+theorem isPiSystem_piiUnionInter (π : ι → Set (Set α)) (hpi : ∀ x, IsPiSystem (π x)) (S : Set ι) :
+ IsPiSystem (piiUnionInter π S) := by
rintro t1 ⟨p1, hp1S, f1, hf1m, ht1_eq⟩ t2 ⟨p2, hp2S, f2, hf2m, ht2_eq⟩ h_nonempty
- simp_rw [piUnionᵢInter, Set.mem_setOf_eq]
+ simp_rw [piiUnionInter, Set.mem_setOf_eq]
let g n := ite (n ∈ p1) (f1 n) Set.univ ∩ ite (n ∈ p2) (f2 n) Set.univ
have hp_union_ss : ↑(p1 ∪ p2) ⊆ S := by
simp only [hp1S, hp2S, Finset.coe_union, union_subset_iff, and_self_iff]
@@ -436,7 +436,7 @@ theorem isPiSystem_piUnionᵢInter (π : ι → Set (Set α)) (hpi : ∀ x, IsPi
rw [ht1_eq, ht2_eq]
simp_rw [← Set.inf_eq_inter]
ext1 x
- simp only [inf_eq_inter, mem_inter_iff, mem_interᵢ, Finset.mem_union]
+ simp only [inf_eq_inter, mem_inter_iff, mem_iInter, Finset.mem_union]
refine' ⟨fun h i _ => _, fun h => ⟨fun i hi1 => _, fun i hi2 => _⟩⟩
· split_ifs with h_1 h_2 h_2
exacts[⟨h.1 i h_1, h.2 i h_2⟩, ⟨h.1 i h_1, Set.mem_univ _⟩, ⟨Set.mem_univ _, h.2 i h_2⟩,
@@ -454,74 +454,74 @@ theorem isPiSystem_piUnionᵢInter (π : ι → Set (Set α)) (hpi : ∀ x, IsPi
rw [h_inter_eq] at h_nonempty
suffices h_empty : (⋂ i ∈ p1 ∪ p2, g i) = ∅
exact (Set.not_nonempty_iff_eq_empty.mpr h_empty) h_nonempty
- refine' le_antisymm (Set.interᵢ_subset_of_subset n _) (Set.empty_subset _)
- refine' Set.interᵢ_subset_of_subset hn _
+ refine' le_antisymm (Set.iInter_subset_of_subset n _) (Set.empty_subset _)
+ refine' Set.iInter_subset_of_subset hn _
simp_rw [if_pos hn1, if_pos hn2]
exact h.subset
· simp [hf1m n hn1]
· simp [hf2m n h]
· exact absurd hn (by simp [hn1, h])
-#align is_pi_system_pi_Union_Inter isPiSystem_piUnionᵢInter
+#align is_pi_system_pi_Union_Inter isPiSystem_piiUnionInter
-theorem piUnionᵢInter_mono_left {π π' : ι → Set (Set α)} (h_le : ∀ i, π i ⊆ π' i) (S : Set ι) :
- piUnionᵢInter π S ⊆ piUnionᵢInter π' S := fun _ ⟨t, ht_mem, ft, hft_mem_pi, h_eq⟩ =>
+theorem piiUnionInter_mono_left {π π' : ι → Set (Set α)} (h_le : ∀ i, π i ⊆ π' i) (S : Set ι) :
+ piiUnionInter π S ⊆ piiUnionInter π' S := fun _ ⟨t, ht_mem, ft, hft_mem_pi, h_eq⟩ =>
⟨t, ht_mem, ft, fun x hxt => h_le x (hft_mem_pi x hxt), h_eq⟩
-#align pi_Union_Inter_mono_left piUnionᵢInter_mono_left
+#align pi_Union_Inter_mono_left piiUnionInter_mono_left
-theorem piUnionᵢInter_mono_right {π : ι → Set (Set α)} {S T : Set ι} (hST : S ⊆ T) :
- piUnionᵢInter π S ⊆ piUnionᵢInter π T := fun _ ⟨t, ht_mem, ft, hft_mem_pi, h_eq⟩ =>
+theorem piiUnionInter_mono_right {π : ι → Set (Set α)} {S T : Set ι} (hST : S ⊆ T) :
+ piiUnionInter π S ⊆ piiUnionInter π T := fun _ ⟨t, ht_mem, ft, hft_mem_pi, h_eq⟩ =>
⟨t, ht_mem.trans hST, ft, hft_mem_pi, h_eq⟩
-#align pi_Union_Inter_mono_right piUnionᵢInter_mono_right
+#align pi_Union_Inter_mono_right piiUnionInter_mono_right
-theorem generateFrom_piUnionᵢInter_le {m : MeasurableSpace α} (π : ι → Set (Set α))
- (h : ∀ n, generateFrom (π n) ≤ m) (S : Set ι) : generateFrom (piUnionᵢInter π S) ≤ m := by
+theorem generateFrom_piiUnionInter_le {m : MeasurableSpace α} (π : ι → Set (Set α))
+ (h : ∀ n, generateFrom (π n) ≤ m) (S : Set ι) : generateFrom (piiUnionInter π S) ≤ m := by
refine' generateFrom_le _
rintro t ⟨ht_p, _, ft, hft_mem_pi, rfl⟩
- refine' Finset.measurableSet_binterᵢ _ fun x hx_mem => (h x) _ _
+ refine' Finset.measurableSet_biInter _ fun x hx_mem => (h x) _ _
exact measurableSet_generateFrom (hft_mem_pi x hx_mem)
-#align generate_from_pi_Union_Inter_le generateFrom_piUnionᵢInter_le
+#align generate_from_pi_Union_Inter_le generateFrom_piiUnionInter_le
-theorem subset_piUnionᵢInter {π : ι → Set (Set α)} {S : Set ι} {i : ι} (his : i ∈ S) :
- π i ⊆ piUnionᵢInter π S := by
+theorem subset_piiUnionInter {π : ι → Set (Set α)} {S : Set ι} {i : ι} (his : i ∈ S) :
+ π i ⊆ piiUnionInter π S := by
have h_ss : {i} ⊆ S := by
intro j hj
rw [mem_singleton_iff] at hj
rwa [hj]
- refine' Subset.trans _ (piUnionᵢInter_mono_right h_ss)
- rw [piUnionᵢInter_singleton]
+ refine' Subset.trans _ (piiUnionInter_mono_right h_ss)
+ rw [piiUnionInter_singleton]
exact subset_union_left _ _
-#align subset_pi_Union_Inter subset_piUnionᵢInter
+#align subset_pi_Union_Inter subset_piiUnionInter
-theorem mem_piUnionᵢInter_of_measurableSet (m : ι → MeasurableSpace α) {S : Set ι} {i : ι}
+theorem mem_piiUnionInter_of_measurableSet (m : ι → MeasurableSpace α) {S : Set ι} {i : ι}
(hiS : i ∈ S) (s : Set α) (hs : MeasurableSet[m i] s) :
- s ∈ piUnionᵢInter (fun n => { s | MeasurableSet[m n] s }) S :=
- subset_piUnionᵢInter hiS hs
-#align mem_pi_Union_Inter_of_measurable_set mem_piUnionᵢInter_of_measurableSet
+ s ∈ piiUnionInter (fun n => { s | MeasurableSet[m n] s }) S :=
+ subset_piiUnionInter hiS hs
+#align mem_pi_Union_Inter_of_measurable_set mem_piiUnionInter_of_measurableSet
-theorem le_generateFrom_piUnionᵢInter {π : ι → Set (Set α)} (S : Set ι) {x : ι} (hxS : x ∈ S) :
- generateFrom (π x) ≤ generateFrom (piUnionᵢInter π S) :=
- generateFrom_mono (subset_piUnionᵢInter hxS)
-#align le_generate_from_pi_Union_Inter le_generateFrom_piUnionᵢInter
+theorem le_generateFrom_piiUnionInter {π : ι → Set (Set α)} (S : Set ι) {x : ι} (hxS : x ∈ S) :
+ generateFrom (π x) ≤ generateFrom (piiUnionInter π S) :=
+ generateFrom_mono (subset_piiUnionInter hxS)
+#align le_generate_from_pi_Union_Inter le_generateFrom_piiUnionInter
-theorem measurableSet_supᵢ_of_mem_piUnionᵢInter (m : ι → MeasurableSpace α) (S : Set ι) (t : Set α)
- (ht : t ∈ piUnionᵢInter (fun n => { s | MeasurableSet[m n] s }) S) :
+theorem measurableSet_iSup_of_mem_piiUnionInter (m : ι → MeasurableSpace α) (S : Set ι) (t : Set α)
+ (ht : t ∈ piiUnionInter (fun n => { s | MeasurableSet[m n] s }) S) :
MeasurableSet[⨆ i ∈ S, m i] t := by
rcases ht with ⟨pt, hpt, ft, ht_m, rfl⟩
- refine' pt.measurableSet_binterᵢ fun i hi => _
+ refine' pt.measurableSet_biInter fun i hi => _
suffices h_le : m i ≤ ⨆ i ∈ S, m i; exact h_le (ft i) (ht_m i hi)
have hi' : i ∈ S := hpt hi
- exact le_supᵢ₂ (f := fun i (_ : i ∈ S) => m i) i hi'
-#align measurable_set_supr_of_mem_pi_Union_Inter measurableSet_supᵢ_of_mem_piUnionᵢInter
+ exact le_iSup₂ (f := fun i (_ : i ∈ S) => m i) i hi'
+#align measurable_set_supr_of_mem_pi_Union_Inter measurableSet_iSup_of_mem_piiUnionInter
-theorem generateFrom_piUnionᵢInter_measurableSet (m : ι → MeasurableSpace α) (S : Set ι) :
- generateFrom (piUnionᵢInter (fun n => { s | MeasurableSet[m n] s }) S) = ⨆ i ∈ S, m i := by
+theorem generateFrom_piiUnionInter_measurableSet (m : ι → MeasurableSpace α) (S : Set ι) :
+ generateFrom (piiUnionInter (fun n => { s | MeasurableSet[m n] s }) S) = ⨆ i ∈ S, m i := by
refine' le_antisymm _ _
· rw [← @generateFrom_measurableSet α (⨆ i ∈ S, m i)]
- exact generateFrom_mono (measurableSet_supᵢ_of_mem_piUnionᵢInter m S)
- · refine' supᵢ₂_le fun i hi => _
+ exact generateFrom_mono (measurableSet_iSup_of_mem_piiUnionInter m S)
+ · refine' iSup₂_le fun i hi => _
rw [← @generateFrom_measurableSet α (m i)]
- exact generateFrom_mono (mem_piUnionᵢInter_of_measurableSet m hi)
-#align generate_from_pi_Union_Inter_measurable_set generateFrom_piUnionᵢInter_measurableSet
+ exact generateFrom_mono (mem_piiUnionInter_of_measurableSet m hi)
+#align generate_from_pi_Union_Inter_measurable_set generateFrom_piiUnionInter_measurableSet
end UnionInter
@@ -549,8 +549,8 @@ structure DynkinSystem (α : Type _) where
/-- A Dynkin system is closed under complementation. -/
has_compl : ∀ {a}, Has a → Has (aᶜ)
/-- A Dynkin system is closed under countable union of pairwise disjoint sets. Use a more general
- `MeasurableSpace.DynkinSystem.has_unionᵢ` instead.-/
- has_unionᵢ_nat : ∀ {f : ℕ → Set α}, Pairwise (Disjoint on f) → (∀ i, Has (f i)) → Has (⋃ i, f i)
+ `MeasurableSpace.DynkinSystem.has_iUnion` instead.-/
+ has_iUnion_nat : ∀ {f : ℕ → Set α}, Pairwise (Disjoint on f) → (∀ i, Has (f i)) → Has (⋃ i, f i)
#align measurable_space.dynkin_system MeasurableSpace.DynkinSystem
namespace DynkinSystem
@@ -572,19 +572,19 @@ theorem has_compl_iff {a} : d.Has (aᶜ) ↔ d.Has a :=
theorem has_univ : d.Has univ := by simpa using d.has_compl d.has_empty
#align measurable_space.dynkin_system.has_univ MeasurableSpace.DynkinSystem.has_univ
-theorem has_unionᵢ {β} [Countable β] {f : β → Set α} (hd : Pairwise (Disjoint on f))
+theorem has_iUnion {β} [Countable β] {f : β → Set α} (hd : Pairwise (Disjoint on f))
(h : ∀ i, d.Has (f i)) : d.Has (⋃ i, f i) := by
cases nonempty_encodable β
- rw [← Encodable.unionᵢ_decode₂]
+ rw [← Encodable.iUnion_decode₂]
exact
- d.has_unionᵢ_nat (Encodable.unionᵢ_decode₂_disjoint_on hd) fun n =>
- Encodable.unionᵢ_decode₂_cases d.has_empty h
-#align measurable_space.dynkin_system.has_Union MeasurableSpace.DynkinSystem.has_unionᵢ
+ d.has_iUnion_nat (Encodable.iUnion_decode₂_disjoint_on hd) fun n =>
+ Encodable.iUnion_decode₂_cases d.has_empty h
+#align measurable_space.dynkin_system.has_Union MeasurableSpace.DynkinSystem.has_iUnion
theorem has_union {s₁ s₂ : Set α} (h₁ : d.Has s₁) (h₂ : d.Has s₂) (h : Disjoint s₁ s₂) :
d.Has (s₁ ∪ s₂) := by
- rw [union_eq_unionᵢ]
- exact d.has_unionᵢ (pairwise_disjoint_on_bool.2 h) (Bool.forall_bool.2 ⟨h₂, h₁⟩)
+ rw [union_eq_iUnion]
+ exact d.has_iUnion (pairwise_disjoint_on_bool.2 h) (Bool.forall_bool.2 ⟨h₂, h₁⟩)
#align measurable_space.dynkin_system.has_union MeasurableSpace.DynkinSystem.has_union
theorem has_diff {s₁ s₂ : Set α} (h₁ : d.Has s₁) (h₂ : d.Has s₂) (h : s₂ ⊆ s₁) :
@@ -612,7 +612,7 @@ def ofMeasurableSpace (m : MeasurableSpace α) : DynkinSystem α
Has := m.MeasurableSet'
has_empty := m.measurableSet_empty
has_compl {a} := m.measurableSet_compl a
- has_unionᵢ_nat {f} _ hf := m.measurableSet_unionᵢ f hf
+ has_iUnion_nat {f} _ hf := m.measurableSet_iUnion f hf
#align measurable_space.dynkin_system.of_measurable_space MeasurableSpace.DynkinSystem.ofMeasurableSpace
theorem ofMeasurableSpace_le_ofMeasurableSpace_iff {m₁ m₂ : MeasurableSpace α} :
@@ -626,7 +626,7 @@ inductive GenerateHas (s : Set (Set α)) : Set α → Prop
| basic : ∀ t ∈ s, GenerateHas s t
| empty : GenerateHas s ∅
| compl : ∀ {a}, GenerateHas s a → GenerateHas s (aᶜ)
- | unionᵢ : ∀ {f : ℕ → Set α},
+ | iUnion : ∀ {f : ℕ → Set α},
Pairwise (Disjoint on f) → (∀ i, GenerateHas s (f i)) → GenerateHas s (⋃ i, f i)
#align measurable_space.dynkin_system.generate_has MeasurableSpace.DynkinSystem.GenerateHas
@@ -643,7 +643,7 @@ def generate (s : Set (Set α)) : DynkinSystem α
Has := GenerateHas s
has_empty := GenerateHas.empty
has_compl {_} := GenerateHas.compl
- has_unionᵢ_nat {_} := GenerateHas.unionᵢ
+ has_iUnion_nat {_} := GenerateHas.iUnion
#align measurable_space.dynkin_system.generate MeasurableSpace.DynkinSystem.generate
theorem generateHas_def {C : Set (Set α)} : (generate C).Has = GenerateHas C :=
@@ -659,10 +659,10 @@ def toMeasurableSpace (h_inter : ∀ s₁ s₂, d.Has s₁ → d.Has s₂ → d.
MeasurableSet' := d.Has
measurableSet_empty := d.has_empty
measurableSet_compl s h := d.has_compl h
- measurableSet_unionᵢ f hf := by
- rw [← unionᵢ_disjointed]
+ measurableSet_iUnion f hf := by
+ rw [← iUnion_disjointed]
exact
- d.has_unionᵢ (disjoint_disjointed _) fun n =>
+ d.has_iUnion (disjoint_disjointed _) fun n =>
disjointedRec (fun (t : Set α) i h => h_inter _ _ h <| d.has_compl <| hf i) (hf n)
#align measurable_space.dynkin_system.to_measurable_space MeasurableSpace.DynkinSystem.toMeasurableSpace
@@ -684,15 +684,15 @@ def restrictOn {s : Set α} (h : d.Has s) : DynkinSystem α where
exact
d.has_diff (d.has_compl hts) (d.has_compl h)
(compl_subset_compl.mpr <| inter_subset_right _ _)
- has_unionᵢ_nat {f} hd hf := by
+ has_iUnion_nat {f} hd hf := by
simp only []
- rw [unionᵢ_inter]
- refine' d.has_unionᵢ_nat _ hf
+ rw [iUnion_inter]
+ refine' d.has_iUnion_nat _ hf
exact hd.mono fun i j => Disjoint.mono (inter_subset_left _ _) (inter_subset_left _ _)
#align measurable_space.dynkin_system.restrict_on MeasurableSpace.DynkinSystem.restrictOn
theorem generate_le {s : Set (Set α)} (h : ∀ t ∈ s, d.Has t) : generate s ≤ d := fun _ ht =>
- ht.recOn h d.has_empty (fun {_} _ h => d.has_compl h) fun {_} hd _ hf => d.has_unionᵢ hd hf
+ ht.recOn h d.has_empty (fun {_} _ h => d.has_compl h) fun {_} hd _ hf => d.has_iUnion hd hf
#align measurable_space.dynkin_system.generate_le MeasurableSpace.DynkinSystem.generate_le
theorem generate_has_subset_generate_measurable {C : Set (Set α)} {s : Set α}
by
s! (#3825)
This PR puts, with one exception, every single remaining by
that lies all by itself on its own line to the previous line, thus matching the current behaviour of start-port.sh
. The exception is when the by
begins the second or later argument to a tuple or anonymous constructor; see https://github.com/leanprover-community/mathlib4/pull/3825#discussion_r1186702599.
Essentially this is s/\n *by$/ by/g
, but with manual editing to satisfy the linter's max-100-char-line requirement. The Python style linter is also modified to catch these "isolated by
s".
@@ -317,8 +317,7 @@ For a total union version, see `mem_generatePiSystem_unionᵢ_elim`. -/
theorem mem_generatePiSystem_unionᵢ_elim' {α β} {g : β → Set (Set α)} {s : Set β}
(h_pi : ∀ b ∈ s, IsPiSystem (g b)) (t : Set α) (h_t : t ∈ generatePiSystem (⋃ b ∈ s, g b)) :
∃ (T : Finset β) (f : β → Set α), ↑T ⊆ s ∧ (t = ⋂ b ∈ T, f b) ∧ ∀ b ∈ T, f b ∈ g b := by
- have : t ∈ generatePiSystem (⋃ b : Subtype s, (g ∘ Subtype.val) b) :=
- by
+ have : t ∈ generatePiSystem (⋃ b : Subtype s, (g ∘ Subtype.val) b) := by
suffices h1 : (⋃ b : Subtype s, (g ∘ Subtype.val) b) = ⋃ b ∈ s, g b
· rwa [h1]
ext x
@@ -433,8 +432,7 @@ theorem isPiSystem_piUnionᵢInter (π : ι → Set (Set α)) (hpi : ∀ x, IsPi
have hp_union_ss : ↑(p1 ∪ p2) ⊆ S := by
simp only [hp1S, hp2S, Finset.coe_union, union_subset_iff, and_self_iff]
use p1 ∪ p2, hp_union_ss, g
- have h_inter_eq : t1 ∩ t2 = ⋂ i ∈ p1 ∪ p2, g i :=
- by
+ have h_inter_eq : t1 ∩ t2 = ⋂ i ∈ p1 ∪ p2, g i := by
rw [ht1_eq, ht2_eq]
simp_rw [← Set.inf_eq_inter]
ext1 x
@@ -589,8 +587,8 @@ theorem has_union {s₁ s₂ : Set α} (h₁ : d.Has s₁) (h₂ : d.Has s₂) (
exact d.has_unionᵢ (pairwise_disjoint_on_bool.2 h) (Bool.forall_bool.2 ⟨h₂, h₁⟩)
#align measurable_space.dynkin_system.has_union MeasurableSpace.DynkinSystem.has_union
-theorem has_diff {s₁ s₂ : Set α} (h₁ : d.Has s₁) (h₂ : d.Has s₂) (h : s₂ ⊆ s₁) : d.Has (s₁ \ s₂) :=
- by
+theorem has_diff {s₁ s₂ : Set α} (h₁ : d.Has s₁) (h₂ : d.Has s₂) (h : s₂ ⊆ s₁) :
+ d.Has (s₁ \ s₂) := by
apply d.has_compl_iff.1
simp [diff_eq, compl_inter]
exact d.has_union (d.has_compl h₁) h₂ (disjoint_compl_left.mono_right h)
closes #3680, see https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/Stepping.20through.20simp_rw/near/326712986
@@ -340,7 +340,7 @@ theorem mem_generatePiSystem_unionᵢ_elim' {α β} {g : β → Set (Set α)} {s
rw [Subtype.val_injective.extend_apply]
apply id
· intros b h_b
- simp_rw [Finset.mem_image, exists_prop, Subtype.exists, exists_and_right, exists_eq_right]
+ simp_rw [Finset.mem_image, Subtype.exists, exists_and_right, exists_eq_right]
at h_b
cases' h_b with h_b_w h_b_h
have h_b_alt : b = (Subtype.mk b h_b_w).val := rfl
@@ -404,15 +404,10 @@ theorem piUnionᵢInter_singleton_left (s : ι → Set α) (S : Set ι) :
simp_rw [piUnionᵢInter, Set.mem_singleton_iff, exists_prop, Set.mem_setOf_eq]
refine' ⟨fun h => _, fun ⟨t, htS, h_eq⟩ => ⟨t, htS, s, fun _ _ => rfl, h_eq⟩⟩
obtain ⟨t, htS, f, hft_eq, rfl⟩ := h
- -- Porting note: Here was `congr'`.
- refine' ⟨t, htS, Set.interᵢ_congr fun i => Set.ext fun x => _⟩
- simp_rw [Set.mem_interᵢ]
- exact
- ⟨fun h hit => by
- rw [← hft_eq i hit]
- exact h hit, fun h hit => by
- rw [hft_eq i hit]
- exact h hit⟩
+ refine' ⟨t, htS, _⟩
+ congr! 3
+ apply hft_eq
+ assumption
#align pi_Union_Inter_singleton_left piUnionᵢInter_singleton_left
theorem generateFrom_piUnionᵢInter_singleton_left (s : ι → Set α) (S : Set ι) :
@@ -686,7 +686,7 @@ def restrictOn {s : Set α} (h : d.Has s) : DynkinSystem α where
has_empty := by simp [d.has_empty]
has_compl {t} hts := by
simp only []
- have : tᶜ ∩ s = (t ∩ s)ᶜ \ sᶜ := Set.ext fun x => by by_cases x ∈ s <;> simp [h]
+ have : tᶜ ∩ s = (t ∩ s)ᶜ \ sᶜ := Set.ext fun x => by by_cases h : x ∈ s <;> simp [h]
rw [this]
exact
d.has_diff (d.has_compl hts) (d.has_compl h)
The unported dependencies are