Documentation

Mathlib.Data.Set.Intervals.Disjoint

Extra lemmas about intervals #

This file contains lemmas about intervals that cannot be included into Data.Set.Intervals.Basic because this would create an import cycle. Namely, lemmas in this file can use definitions from Data.Set.Lattice, including Disjoint.

@[simp]
theorem Set.Iic_disjoint_Ioi {α : Type v} [Preorder α] {a : α} {b : α} (h : a b) :
@[simp]
theorem Set.Iio_disjoint_Ici {α : Type v} [Preorder α] {a : α} {b : α} (h : a b) :
@[simp]
theorem Set.Iic_disjoint_Ioc {α : Type v} [Preorder α] {a : α} {b : α} {c : α} (h : a b) :
@[simp]
theorem Set.Ioc_disjoint_Ioc_same {α : Type v} [Preorder α] {a : α} {b : α} {c : α} :
@[simp]
theorem Set.Ico_disjoint_Ico_same {α : Type v} [Preorder α] {a : α} {b : α} {c : α} :
@[simp]
theorem Set.Ici_disjoint_Iic {α : Type v} [Preorder α] {a : α} {b : α} :
@[simp]
theorem Set.Iic_disjoint_Ici {α : Type v} [Preorder α] {a : α} {b : α} :
@[simp]
theorem Set.Ioc_disjoint_Ioi {α : Type v} [Preorder α] {a : α} {b : α} {c : α} (h : b c) :
theorem Set.Ioc_disjoint_Ioi_same {α : Type v} [Preorder α] {a : α} {b : α} :
@[simp]
theorem Set.iUnion_Iic {α : Type v} [Preorder α] :
⋃ (a : α), Set.Iic a = Set.univ
@[simp]
theorem Set.iUnion_Ici {α : Type v} [Preorder α] :
⋃ (a : α), Set.Ici a = Set.univ
@[simp]
theorem Set.iUnion_Icc_right {α : Type v} [Preorder α] (a : α) :
⋃ (b : α), Set.Icc a b = Set.Ici a
@[simp]
theorem Set.iUnion_Ioc_right {α : Type v} [Preorder α] (a : α) :
⋃ (b : α), Set.Ioc a b = Set.Ioi a
@[simp]
theorem Set.iUnion_Icc_left {α : Type v} [Preorder α] (b : α) :
⋃ (a : α), Set.Icc a b = Set.Iic b
@[simp]
theorem Set.iUnion_Ico_left {α : Type v} [Preorder α] (b : α) :
⋃ (a : α), Set.Ico a b = Set.Iio b
@[simp]
theorem Set.iUnion_Iio {α : Type v} [Preorder α] [NoMaxOrder α] :
⋃ (a : α), Set.Iio a = Set.univ
@[simp]
theorem Set.iUnion_Ioi {α : Type v} [Preorder α] [NoMinOrder α] :
⋃ (a : α), Set.Ioi a = Set.univ
@[simp]
theorem Set.iUnion_Ico_right {α : Type v} [Preorder α] [NoMaxOrder α] (a : α) :
⋃ (b : α), Set.Ico a b = Set.Ici a
@[simp]
theorem Set.iUnion_Ioo_right {α : Type v} [Preorder α] [NoMaxOrder α] (a : α) :
⋃ (b : α), Set.Ioo a b = Set.Ioi a
@[simp]
theorem Set.iUnion_Ioc_left {α : Type v} [Preorder α] [NoMinOrder α] (b : α) :
⋃ (a : α), Set.Ioc a b = Set.Iic b
@[simp]
theorem Set.iUnion_Ioo_left {α : Type v} [Preorder α] [NoMinOrder α] (b : α) :
⋃ (a : α), Set.Ioo a b = Set.Iio b
@[simp]
theorem Set.Ico_disjoint_Ico {α : Type v} [LinearOrder α] {a₁ : α} {a₂ : α} {b₁ : α} {b₂ : α} :
Disjoint (Set.Ico a₁ a₂) (Set.Ico b₁ b₂) min a₂ b₂ max a₁ b₁
@[simp]
theorem Set.Ioc_disjoint_Ioc {α : Type v} [LinearOrder α] {a₁ : α} {a₂ : α} {b₁ : α} {b₂ : α} :
Disjoint (Set.Ioc a₁ a₂) (Set.Ioc b₁ b₂) min a₂ b₂ max a₁ b₁
theorem Set.eq_of_Ico_disjoint {α : Type v} [LinearOrder α] {x₁ : α} {x₂ : α} {y₁ : α} {y₂ : α} (h : Disjoint (Set.Ico x₁ x₂) (Set.Ico y₁ y₂)) (hx : x₁ < x₂) (h2 : x₂ Set.Ico y₁ y₂) :
y₁ = x₂

If two half-open intervals are disjoint and the endpoint of one lies in the other, then it must be equal to the endpoint of the other.

@[simp]
theorem Set.iUnion_Ico_eq_Iio_self_iff {ι : Sort u} {α : Type v} [LinearOrder α] {f : ια} {a : α} :
⋃ (i : ι), Set.Ico (f i) a = Set.Iio a x < a, ∃ (i : ι), f i x
@[simp]
theorem Set.iUnion_Ioc_eq_Ioi_self_iff {ι : Sort u} {α : Type v} [LinearOrder α] {f : ια} {a : α} :
⋃ (i : ι), Set.Ioc a (f i) = Set.Ioi a ∀ (x : α), a < x∃ (i : ι), x f i
@[simp]
theorem Set.biUnion_Ico_eq_Iio_self_iff {ι : Sort u} {α : Type v} [LinearOrder α] {p : ιProp} {f : (i : ι) → p iα} {a : α} :
⋃ (i : ι), ⋃ (hi : p i), Set.Ico (f i hi) a = Set.Iio a x < a, ∃ (i : ι) (hi : p i), f i hi x
@[simp]
theorem Set.biUnion_Ioc_eq_Ioi_self_iff {ι : Sort u} {α : Type v} [LinearOrder α] {p : ιProp} {f : (i : ι) → p iα} {a : α} :
⋃ (i : ι), ⋃ (hi : p i), Set.Ioc a (f i hi) = Set.Ioi a ∀ (x : α), a < x∃ (i : ι) (hi : p i), x f i hi
theorem IsGLB.biUnion_Ioi_eq {α : Type v} [LinearOrder α] {s : Set α} {a : α} (h : IsGLB s a) :
⋃ x ∈ s, Set.Ioi x = Set.Ioi a
theorem IsGLB.iUnion_Ioi_eq {ι : Sort u} {α : Type v} [LinearOrder α] {a : α} {f : ια} (h : IsGLB (Set.range f) a) :
⋃ (x : ι), Set.Ioi (f x) = Set.Ioi a
theorem IsLUB.biUnion_Iio_eq {α : Type v} [LinearOrder α] {s : Set α} {a : α} (h : IsLUB s a) :
⋃ x ∈ s, Set.Iio x = Set.Iio a
theorem IsLUB.iUnion_Iio_eq {ι : Sort u} {α : Type v} [LinearOrder α] {a : α} {f : ια} (h : IsLUB (Set.range f) a) :
⋃ (x : ι), Set.Iio (f x) = Set.Iio a
theorem IsGLB.biUnion_Ici_eq_Ioi {α : Type v} [LinearOrder α] {s : Set α} {a : α} (a_glb : IsGLB s a) (a_not_mem : as) :
⋃ x ∈ s, Set.Ici x = Set.Ioi a
theorem IsGLB.biUnion_Ici_eq_Ici {α : Type v} [LinearOrder α] {s : Set α} {a : α} (a_glb : IsGLB s a) (a_mem : a s) :
⋃ x ∈ s, Set.Ici x = Set.Ici a
theorem IsLUB.biUnion_Iic_eq_Iio {α : Type v} [LinearOrder α] {s : Set α} {a : α} (a_lub : IsLUB s a) (a_not_mem : as) :
⋃ x ∈ s, Set.Iic x = Set.Iio a
theorem IsLUB.biUnion_Iic_eq_Iic {α : Type v} [LinearOrder α] {s : Set α} {a : α} (a_lub : IsLUB s a) (a_mem : a s) :
⋃ x ∈ s, Set.Iic x = Set.Iic a
theorem iUnion_Ici_eq_Ioi_iInf {ι : Sort u} {R : Type u_1} [CompleteLinearOrder R] {f : ιR} (no_least_elem : ⨅ (i : ι), f iSet.range f) :
⋃ (i : ι), Set.Ici (f i) = Set.Ioi (⨅ (i : ι), f i)
theorem iUnion_Iic_eq_Iio_iSup {ι : Sort u} {R : Type u_1} [CompleteLinearOrder R] {f : ιR} (no_greatest_elem : ⨆ (i : ι), f iSet.range f) :
⋃ (i : ι), Set.Iic (f i) = Set.Iio (⨆ (i : ι), f i)
theorem iUnion_Ici_eq_Ici_iInf {ι : Sort u} {R : Type u_1} [CompleteLinearOrder R] {f : ιR} (has_least_elem : ⨅ (i : ι), f i Set.range f) :
⋃ (i : ι), Set.Ici (f i) = Set.Ici (⨅ (i : ι), f i)
theorem iUnion_Iic_eq_Iic_iSup {ι : Sort u} {R : Type u_1} [CompleteLinearOrder R] {f : ιR} (has_greatest_elem : ⨆ (i : ι), f i Set.range f) :
⋃ (i : ι), Set.Iic (f i) = Set.Iic (⨆ (i : ι), f i)