Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Merged by Bors] - chore(Set/Finset): standardize names of distributivity laws #11572

Closed
wants to merge 14 commits into from
2 changes: 1 addition & 1 deletion Archive/Imo/Imo2021Q1.lean
Original file line number Diff line number Diff line change
Expand Up @@ -124,7 +124,7 @@ theorem imo2021_q1 :
have hBsub : B ⊆ Finset.Icc n (2 * n) := by
intro c hcB; simpa only [Finset.mem_Icc] using h₂ c hcB
have hB' : 2 * 1 < (B ∩ (Finset.Icc n (2 * n) \ A) ∪ B ∩ A).card := by
rw [← inter_distrib_left, sdiff_union_self_eq_union, union_eq_left.2 hA,
rw [← inter_union_distrib_left, sdiff_union_self_eq_union, union_eq_left.2 hA,
inter_eq_left.2 hBsub]
exact Nat.succ_le_iff.mp hB
-- Since B has cardinality greater or equal to 3, there must exist a subset C ⊆ B such that
Expand Down
2 changes: 1 addition & 1 deletion Counterexamples/Phillips.lean
Original file line number Diff line number Diff line change
Expand Up @@ -374,7 +374,7 @@ def continuousPart (f : BoundedAdditiveMeasure α) : BoundedAdditiveMeasure α :
theorem eq_add_parts (f : BoundedAdditiveMeasure α) (s : Set α) :
f s = f.discretePart s + f.continuousPart s := by
simp only [discretePart, continuousPart, restrict_apply]
rw [← f.additive, ← inter_distrib_right]
rw [← f.additive, ← union_inter_distrib_right]
· simp only [union_univ, union_diff_self, univ_inter]
· have : Disjoint f.discreteSupport (univ \ f.discreteSupport) := disjoint_sdiff_self_right
exact this.mono (inter_subset_left _ _) (inter_subset_left _ _)
Expand Down
2 changes: 1 addition & 1 deletion Mathlib/Combinatorics/Additive/SalemSpencer.lean
Original file line number Diff line number Diff line change
Expand Up @@ -380,7 +380,7 @@ theorem mulRothNumber_union_le (s t : Finset α) :
let ⟨u, hus, hcard, hu⟩ := mulRothNumber_spec (s ∪ t)
calc
mulRothNumber (s ∪ t) = u.card := hcard.symm
_ = (u ∩ s ∪ u ∩ t).card := by rw [← inter_distrib_left, inter_eq_left.2 hus]
_ = (u ∩ s ∪ u ∩ t).card := by rw [← inter_union_distrib_left, inter_eq_left.2 hus]
_ ≤ (u ∩ s).card + (u ∩ t).card := (card_union_le _ _)
_ ≤ mulRothNumber s + mulRothNumber t := _root_.add_le_add
((hu.mono <| inter_subset_left _ _).le_mulRothNumber <| inter_subset_right _ _)
Expand Down
5 changes: 3 additions & 2 deletions Mathlib/Combinatorics/SetFamily/FourFunctions.lean
Original file line number Diff line number Diff line change
Expand Up @@ -229,8 +229,9 @@ lemma sum_collapse (h𝒜 : 𝒜 ⊆ (insert a u).powerset) (hu : a ∉ u) :
· rw [insert_erase (erase_ne_self.1 fun hs ↦ ?_)]
rw [hs] at h
exact h.2 h.1
· rw [← sum_union (disjoint_sdiff_self_right.mono inf_le_left inf_le_left), ← inter_distrib_right,
union_sdiff_of_subset (powerset_mono.2 <| subset_insert _ _), inter_eq_right.2 h𝒜]
· rw [← sum_union (disjoint_sdiff_self_right.mono inf_le_left inf_le_left),
← union_inter_distrib_right, union_sdiff_of_subset (powerset_mono.2 <| subset_insert _ _),
inter_eq_right.2 h𝒜]

/-- The **Four Functions Theorem** on a powerset algebra. See `four_functions_theorem` for the
finite distributive lattice generalisation. -/
Expand Down
28 changes: 17 additions & 11 deletions Mathlib/Data/Finset/Basic.lean
Original file line number Diff line number Diff line change
Expand Up @@ -1803,21 +1803,27 @@ theorem inter_left_idem (s t : Finset α) : s ∩ (s ∩ t) = s ∩ t := inf_lef
theorem inter_right_idem (s t : Finset α) : s ∩ t ∩ t = s ∩ t := inf_right_idem _ _
#align finset.inter_right_idem Finset.inter_right_idem

theorem inter_distrib_left (s t u : Finset α) : s ∩ (t ∪ u) = s ∩ t ∪ s ∩ u :=
theorem inter_union_distrib_left (s t u : Finset α) : s ∩ (t ∪ u) = s ∩ t ∪ s ∩ u :=
inf_sup_left _ _ _
#align finset.inter_distrib_left Finset.inter_distrib_left
#align finset.inter_distrib_left Finset.inter_union_distrib_left

theorem inter_distrib_right (s t u : Finset α) : (s ∪ t) ∩ u = s ∩ u ∪ t ∩ u :=
inf_sup_right _ _ _
#align finset.inter_distrib_right Finset.inter_distrib_right
theorem inter_union_distrib_right (s t u : Finset α) : s ∩ t ∪ u = (s ∪ u) ∩ (t ∪ u) :=
sup_inf_right _ _ _
#align finset.union_distrib_right Finset.inter_union_distrib_right

theorem union_distrib_left (s t u : Finset α) : s ∪ t ∩ u = (s ∪ t) ∩ (s ∪ u) :=
theorem union_inter_distrib_left (s t u : Finset α) : s ∪ t ∩ u = (s ∪ t) ∩ (s ∪ u) :=
sup_inf_left _ _ _
#align finset.union_distrib_left Finset.union_distrib_left
#align finset.union_distrib_left Finset.union_inter_distrib_left

theorem union_distrib_right (s t u : Finset α) : s ∩ t ∪ u = (s ∪ u) ∩ (t ∪ u) :=
sup_inf_right _ _ _
#align finset.union_distrib_right Finset.union_distrib_right
theorem union_inter_distrib_right (s t u : Finset α) : (s ∪ t) ∩ u = s ∩ u ∪ t ∩ u :=
inf_sup_right _ _ _
#align finset.inter_distrib_right Finset.union_inter_distrib_right
FordUniver marked this conversation as resolved.
Show resolved Hide resolved

-- 2024-03-22
@[deprecated] alias inter_distrib_left := inter_union_distrib_left
@[deprecated] alias union_distrib_right := inter_union_distrib_right
@[deprecated] alias union_distrib_left := union_inter_distrib_left
@[deprecated] alias inter_distrib_right := union_inter_distrib_right

theorem union_union_distrib_left (s t u : Finset α) : s ∪ (t ∪ u) = s ∪ t ∪ (s ∪ u) :=
sup_sup_distrib_left _ _ _
Expand Down Expand Up @@ -2372,7 +2378,7 @@ theorem erase_union_distrib (s t : Finset α) (a : α) : (s ∪ t).erase a = s.e
#align finset.erase_union_distrib Finset.erase_union_distrib

theorem insert_inter_distrib (s t : Finset α) (a : α) :
insert a (s ∩ t) = insert a s ∩ insert a t := by simp_rw [insert_eq, union_distrib_left]
insert a (s ∩ t) = insert a s ∩ insert a t := by simp_rw [insert_eq, union_inter_distrib_left]
#align finset.insert_inter_distrib Finset.insert_inter_distrib

theorem erase_sdiff_distrib (s t : Finset α) (a : α) : (s \ t).erase a = s.erase a \ t.erase a :=
Expand Down
2 changes: 1 addition & 1 deletion Mathlib/Data/Finset/Sups.lean
Original file line number Diff line number Diff line change
Expand Up @@ -445,7 +445,7 @@ variable {𝒜 ℬ : Finset (Finset α)} {s t : Finset α} {a : α}
ext u
simp only [mem_sups, mem_powerset, le_eq_subset, sup_eq_union]
refine ⟨fun h ↦ ⟨_, inter_subset_left _ u, _, inter_subset_left _ u, ?_⟩, ?_⟩
· rwa [← inter_distrib_right, inter_eq_right]
· rwa [← union_inter_distrib_right, inter_eq_right]
· rintro ⟨v, hv, w, hw, rfl⟩
exact union_subset_union hv hw

Expand Down
4 changes: 2 additions & 2 deletions Mathlib/Data/Matroid/Dual.lean
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ section dual
← inter_eq_self_of_subset_left hB''.subset_ground, inter_right_comm, inter_assoc]

calc _ ⊆ _ := inter_subset_inter_right _ hssJ
_ ⊆ _ := by rw [inter_distrib_left, hdj.symm.inter_eq, union_empty]
_ ⊆ _ := by rw [inter_union_distrib_left, hdj.symm.inter_eq, union_empty]
_ ⊆ _ := inter_subset_right _ _

obtain ⟨B₁,hB₁,hI'B₁,hB₁I⟩ := (hB'.indep.subset hI').exists_base_subset_union_base hB''
Expand Down Expand Up @@ -188,7 +188,7 @@ theorem Base.compl_inter_basis_of_inter_basis (hB : M.Base B) (hBX : M.Basis (B
and_iff_left ((inter_subset_left _ _).trans (diff_subset _ _))]
refine' fun B' hB' ↦ by_contra (fun hem ↦ _)
rw [nonempty_iff_ne_empty, not_ne_iff, ← union_singleton, diff_inter_diff,
inter_distrib_right, union_empty_iff, singleton_inter_eq_empty, diff_eq,
union_inter_distrib_right, union_empty_iff, singleton_inter_eq_empty, diff_eq,
inter_right_comm, inter_eq_self_of_subset_right hB'.subset_ground, ← diff_eq,
diff_eq_empty] at hem
obtain ⟨f, hfb, hBf⟩ := hB.exchange hB' ⟨he.2, hem.2⟩
Expand Down
2 changes: 1 addition & 1 deletion Mathlib/Data/PFun.lean
Original file line number Diff line number Diff line change
Expand Up @@ -516,7 +516,7 @@ theorem preimage_eq (f : α →. β) (s : Set β) : f.preimage s = f.core s ∩
#align pfun.preimage_eq PFun.preimage_eq

theorem core_eq (f : α →. β) (s : Set β) : f.core s = f.preimage s ∪ f.Domᶜ := by
rw [preimage_eq, Set.union_distrib_right, Set.union_comm (Dom f), Set.compl_union_self,
rw [preimage_eq, Set.inter_union_distrib_right, Set.union_comm (Dom f), Set.compl_union_self,
Set.inter_univ, Set.union_eq_self_of_subset_right (f.compl_dom_subset_core s)]
#align pfun.core_eq PFun.core_eq

Expand Down
45 changes: 17 additions & 28 deletions Mathlib/Data/Set/Basic.lean
Original file line number Diff line number Diff line change
Expand Up @@ -1021,38 +1021,27 @@ theorem setOf_inter_eq_sep (p : α → Prop) (s : Set α) : {a | p a} ∩ s = {a

/-! ### Distributivity laws -/


theorem inter_distrib_left (s t u : Set α) : s ∩ (t ∪ u) = s ∩ t ∪ s ∩ u :=
inf_sup_left _ _ _
#align set.inter_distrib_left Set.inter_distrib_left

theorem inter_union_distrib_left {s t u : Set α} : s ∩ (t ∪ u) = s ∩ t ∪ s ∩ u :=
theorem inter_union_distrib_left (s t u : Set α) : s ∩ (t ∪ u) = s ∩ t ∪ s ∩ u :=
inf_sup_left _ _ _
#align set.inter_union_distrib_left Set.inter_union_distrib_left

theorem inter_distrib_right (s t u : Set α) : (s ∪ t) ∩ u = s ∩ u ∪ t ∩ u :=
inf_sup_right _ _ _
#align set.inter_distrib_right Set.inter_distrib_right

theorem union_inter_distrib_right {s t u : Set α} : (s ∪ t) ∩ u = s ∩ u ∪ t ∩ u :=
inf_sup_right _ _ _
#align set.union_inter_distrib_right Set.union_inter_distrib_right
#align set.inter_distrib_left Set.inter_union_distrib_left

theorem union_distrib_left (s t u : Set α) : s t u = (s ∪ t) ∩ (s ∪ u) :=
sup_inf_left _ _ _
#align set.union_distrib_left Set.union_distrib_left
theorem inter_union_distrib_right (s t u : Set α) : s t u = (s ∪ u) ∩ (t ∪ u) :=
sup_inf_right _ _ _
#align set.union_distrib_right Set.inter_union_distrib_right

theorem union_inter_distrib_left {s t u : Set α} : s ∪ t ∩ u = (s ∪ t) ∩ (s ∪ u) :=
theorem union_inter_distrib_left (s t u : Set α) : s ∪ t ∩ u = (s ∪ t) ∩ (s ∪ u) :=
sup_inf_left _ _ _
#align set.union_inter_distrib_left Set.union_inter_distrib_left
#align set.union_distrib_left Set.union_inter_distrib_left

theorem union_distrib_right (s t u : Set α) : s ∩ t ∪ u = (s ∪ u) ∩ (t ∪ u) :=
sup_inf_right _ _ _
#align set.union_distrib_right Set.union_distrib_right
theorem union_inter_distrib_right (s t u : Set α) : (s ∪ t) ∩ u = s ∩ u ∪ t ∩ u :=
inf_sup_right _ _ _
#align set.inter_distrib_right Set.union_inter_distrib_right

theorem inter_union_distrib_right {s t u : Set α} : s ∩ t ∪ u = (s ∪ u) ∩ (t ∪ u) :=
sup_inf_right _ _ _
#align set.inter_union_distrib_right Set.inter_union_distrib_right
-- 2024-03-22
@[deprecated] alias inter_distrib_left := inter_union_distrib_left
@[deprecated] alias union_distrib_right := inter_union_distrib_right
@[deprecated] alias union_distrib_left := union_inter_distrib_left
@[deprecated] alias inter_distrib_right := union_inter_distrib_right

theorem union_union_distrib_left (s t u : Set α) : s ∪ (t ∪ u) = s ∪ t ∪ (s ∪ u) :=
sup_sup_distrib_left _ _ _
Expand Down Expand Up @@ -1448,7 +1437,7 @@ theorem sep_univ : { x ∈ (univ : Set α) | p x } = { x | p x } :=

@[simp]
theorem sep_union : { x | (x ∈ s ∨ x ∈ t) ∧ p x } = { x ∈ s | p x } ∪ { x ∈ t | p x } :=
union_inter_distrib_right
union_inter_distrib_right { x | x ∈ s } { x | x ∈ t } p
#align set.sep_union Set.sep_union

@[simp]
Expand All @@ -1463,7 +1452,7 @@ theorem sep_and : { x ∈ s | p x ∧ q x } = { x ∈ s | p x } ∩ { x ∈ s |

@[simp]
theorem sep_or : { x ∈ s | p x ∨ q x } = { x ∈ s | p x } ∪ { x ∈ s | q x } :=
inter_union_distrib_left
inter_union_distrib_left s p q
#align set.sep_or Set.sep_or

@[simp]
Expand Down
2 changes: 1 addition & 1 deletion Mathlib/Data/Set/Image.lean
Original file line number Diff line number Diff line change
Expand Up @@ -941,7 +941,7 @@ theorem compl_range_inr : (range (Sum.inr : β → Sum α β))ᶜ = range (Sum.i

theorem image_preimage_inl_union_image_preimage_inr (s : Set (Sum α β)) :
Sum.inl '' (Sum.inl ⁻¹' s) ∪ Sum.inr '' (Sum.inr ⁻¹' s) = s := by
rw [image_preimage_eq_inter_range, image_preimage_eq_inter_range, ← inter_distrib_left,
rw [image_preimage_eq_inter_range, image_preimage_eq_inter_range, ← inter_union_distrib_left,
range_inl_union_range_inr, inter_univ]
#align set.image_preimage_inl_union_image_preimage_inr Set.image_preimage_inl_union_image_preimage_inr

Expand Down
4 changes: 2 additions & 2 deletions Mathlib/MeasureTheory/Constructions/BorelSpace/Basic.lean
Original file line number Diff line number Diff line change
Expand Up @@ -1680,8 +1680,8 @@ theorem measure_eq_measure_preimage_add_measure_tsum_Ico_zpow [MeasurableSpace
∑' n : ℤ, μ (s ∩ f ⁻¹' Ico ((t : ℝ≥0∞) ^ n) ((t : ℝ≥0∞) ^ (n + 1))) := by
have A : μ s = μ (s ∩ f ⁻¹' {0}) + μ (s ∩ f ⁻¹' Ioi 0) := by
rw [← measure_union]
· rw [← inter_distrib_left, ← preimage_union, singleton_union, Ioi_insert, ← _root_.bot_eq_zero,
Ici_bot, preimage_univ, inter_univ]
· rw [← inter_union_distrib_left, ← preimage_union, singleton_union, Ioi_insert,
← _root_.bot_eq_zero, Ici_bot, preimage_univ, inter_univ]
· exact disjoint_singleton_left.mpr not_mem_Ioi_self
|>.preimage f |>.inter_right' s |>.inter_left' s
· exact hs.inter (hf measurableSet_Ioi)
Expand Down
4 changes: 2 additions & 2 deletions Mathlib/MeasureTheory/Covering/Differentiation.lean
Original file line number Diff line number Diff line change
Expand Up @@ -326,8 +326,8 @@ theorem exists_measurable_supersets_limRatio {p q : ℝ≥0} (hpq : p < q) :
(toMeasurable μ sᶜ ∪ ⋃ n, toMeasurable (ρ + μ) (w n)) ⊆
toMeasurable μ sᶜ ∪
⋃ (m) (n), toMeasurable (ρ + μ) (u m) ∩ toMeasurable (ρ + μ) (w n) := by
simp only [inter_distrib_left, inter_distrib_right, true_and_iff, subset_union_left,
union_subset_iff, inter_self]
simp only [inter_union_distrib_left, union_inter_distrib_right, true_and_iff,
subset_union_left, union_subset_iff, inter_self]
refine' ⟨_, _, _⟩
· exact (inter_subset_right _ _).trans (subset_union_left _ _)
· exact (inter_subset_left _ _).trans (subset_union_left _ _)
Expand Down
2 changes: 1 addition & 1 deletion Mathlib/MeasureTheory/MeasurableSpace/Basic.lean
Original file line number Diff line number Diff line change
Expand Up @@ -659,7 +659,7 @@ theorem MeasurableSet.of_union_cover {s t u : Set α} (hs : MeasurableSet s) (ht
(h : univ ⊆ s ∪ t) (hsu : MeasurableSet (((↑) : s → α) ⁻¹' u))
(htu : MeasurableSet (((↑) : t → α) ⁻¹' u)) : MeasurableSet u := by
convert (hs.subtype_image hsu).union (ht.subtype_image htu)
simp [image_preimage_eq_inter_range, ← inter_distrib_left, univ_subset_iff.1 h]
simp [image_preimage_eq_inter_range, ← inter_union_distrib_left, univ_subset_iff.1 h]

theorem measurable_of_measurable_union_cover {f : α → β} (s t : Set α) (hs : MeasurableSet s)
(ht : MeasurableSet t) (h : univ ⊆ s ∪ t) (hc : Measurable fun a : s => f a)
Expand Down
3 changes: 2 additions & 1 deletion Mathlib/Topology/Basic.lean
Original file line number Diff line number Diff line change
Expand Up @@ -715,7 +715,8 @@ theorem frontier_inter_subset (s t : Set X) :
frontier (s ∩ t) ⊆ frontier s ∩ closure t ∪ closure s ∩ frontier t := by
simp only [frontier_eq_closure_inter_closure, compl_inter, closure_union]
refine' (inter_subset_inter_left _ (closure_inter_subset_inter_closure s t)).trans_eq _
simp only [inter_distrib_left, inter_distrib_right, inter_assoc, inter_comm (closure t)]
simp only [inter_union_distrib_left, union_inter_distrib_right, inter_assoc,
inter_comm (closure t)]
#align frontier_inter_subset frontier_inter_subset

theorem frontier_union_subset (s t : Set X) :
Expand Down
4 changes: 2 additions & 2 deletions Mathlib/Topology/Connected/Basic.lean
Original file line number Diff line number Diff line change
Expand Up @@ -318,7 +318,7 @@ protected theorem IsPreconnected.image [TopologicalSpace β] {s : Set α} (H : I
replace huv : s ⊆ u' ∪ v' := by
rw [image_subset_iff, preimage_union] at huv
replace huv := subset_inter huv Subset.rfl
rw [inter_distrib_right, u'_eq, v'_eq, ← inter_distrib_right] at huv
rw [union_inter_distrib_right, u'_eq, v'_eq, ← union_inter_distrib_right] at huv
exact (subset_inter_iff.1 huv).1
-- Now `s ⊆ u' ∪ v'`, so we can apply `‹IsPreconnected s›`
obtain ⟨z, hz⟩ : (s ∩ (u' ∩ v')).Nonempty := by
Expand Down Expand Up @@ -1121,7 +1121,7 @@ theorem isPreconnected_iff_subset_of_fully_disjoint_closed {s : Set α} (hs : Is
rw [subset_inter_iff, subset_inter_iff] at H1
simp only [Subset.refl, and_true] at H1
apply H1 (hu.inter hs) (hv.inter hs)
· rw [← inter_distrib_right]
· rw [← union_inter_distrib_right]
exact subset_inter hss Subset.rfl
· rwa [disjoint_iff_inter_eq_empty, ← inter_inter_distrib_right, inter_comm]
#align is_preconnected_iff_subset_of_fully_disjoint_closed isPreconnected_iff_subset_of_fully_disjoint_closed
Expand Down
Loading