Documentation

Mathlib.Order.ConditionallyCompleteLattice.Indexed

Indexed sup / inf in conditionally complete lattices #

This file proves lemmas about iSup and iInf for functions valued in a conditionally complete, rather than complete, lattice. We add a prefix c to distinguish them from the versions for complete lattices, giving names ciSup_xxx or ciInf_xxx.

Extension of iSup and iInf from a preorder α to WithTop α and WithBot α

theorem WithTop.iInf_empty {α : Type u_1} {ι : Sort u_4} [Preorder α] [IsEmpty ι] [InfSet α] (f : ι → WithTop α) :
⨅ (i : ι), f i = ⊤
theorem WithBot.iSup_empty {α : Type u_1} {ι : Sort u_4} [Preorder α] [IsEmpty ι] [SupSet α] (f : ι → WithBot α) :
⨆ (i : ι), f i = ⊥
theorem WithTop.coe_iInf {α : Type u_1} {ι : Sort u_4} [Preorder α] [Nonempty ι] [InfSet α] {f : ι → α} (hf : BddBelow (Set.range f)) :
↑(⨅ (i : ι), f i) = ⨅ (i : ι), ↑(f i)
theorem WithBot.coe_iSup {α : Type u_1} {ι : Sort u_4} [Preorder α] [Nonempty ι] [SupSet α] {f : ι → α} (hf : BddAbove (Set.range f)) :
↑(⨆ (i : ι), f i) = ⨆ (i : ι), ↑(f i)
theorem WithTop.coe_iSup {α : Type u_1} {ι : Sort u_4} [Preorder α] [SupSet α] (f : ι → α) (h : BddAbove (Set.range f)) :
↑(⨆ (i : ι), f i) = ⨆ (i : ι), ↑(f i)
theorem WithBot.coe_iInf {α : Type u_1} {ι : Sort u_4} [Preorder α] [InfSet α] (f : ι → α) (h : BddBelow (Set.range f)) :
↑(⨅ (i : ι), f i) = ⨅ (i : ι), ↑(f i)
@[deprecated WithBot.iSup_empty (since := "2026-05-04")]
theorem WithBot.ciSup_empty {α : Type u_1} {ι : Sort u_4} [Preorder α] [IsEmpty ι] [SupSet α] (f : ι → WithBot α) :
⨆ (i : ι), f i = ⊥

Alias of WithBot.iSup_empty.

theorem WithBot.coe_biSup {ι : Type u_6} {s : Set ι} (hs : s.Nonempty) {α : Type u_7} [CompleteLattice α] (f : ι → α) :
↑(⨆ i ∈ s, f i) = ⨆ i ∈ s, ↑(f i)
theorem WithTop.coe_biInf {ι : Type u_6} {s : Set ι} (hs : s.Nonempty) {α : Type u_7} [CompleteLattice α] (f : ι → α) :
↑(⨅ i ∈ s, f i) = ⨅ i ∈ s, ↑(f i)
theorem WithBot.coe_biInf {ι : Type u_6} {s : Set ι} {α : Type u_7} [CompleteLattice α] (f : ι → α) :
↑(⨅ i ∈ s, f i) = ⨅ i ∈ s, ↑(f i)
theorem WithTop.coe_biSup {ι : Type u_6} {s : Set ι} {α : Type u_7} [CompleteLattice α] (f : ι → α) :
↑(⨆ i ∈ s, f i) = ⨆ i ∈ s, ↑(f i)
theorem isLUB_ciSup {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLattice α] [Nonempty ι] {f : ι → α} (H : BddAbove (Set.range f)) :
IsLUB (Set.range f) (⨆ (i : ι), f i)
theorem isGLB_ciInf {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLattice α] [Nonempty ι] {f : ι → α} (H : BddBelow (Set.range f)) :
IsGLB (Set.range f) (⨅ (i : ι), f i)
theorem isLUB_ciSup_set {α : Type u_1} {β : Type u_2} [ConditionallyCompleteLattice α] {f : β → α} {s : Set β} (H : BddAbove (f '' s)) (Hne : s.Nonempty) :
IsLUB (f '' s) (⨆ (i : ↑s), f ↑i)
theorem isGLB_ciInf_set {α : Type u_1} {β : Type u_2} [ConditionallyCompleteLattice α] {f : β → α} {s : Set β} (H : BddBelow (f '' s)) (Hne : s.Nonempty) :
IsGLB (f '' s) (⨅ (i : ↑s), f ↑i)
theorem ciSup_le_iff {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLattice α] [Nonempty ι] {f : ι → α} {a : α} (hf : BddAbove (Set.range f)) :
iSup f ≤ a ↔ ∀ (i : ι), f i ≤ a
theorem le_ciInf_iff {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLattice α] [Nonempty ι] {f : ι → α} {a : α} (hf : BddBelow (Set.range f)) :
a ≤ iInf f ↔ ∀ (i : ι), a ≤ f i
theorem ciSup_set_le_iff {α : Type u_1} [ConditionallyCompleteLattice α] {ι : Type u_6} {s : Set ι} {f : ι → α} {a : α} (hs : s.Nonempty) (hf : BddAbove (f '' s)) :
⨆ (i : ↑s), f ↑i ≤ a ↔ ∀ i ∈ s, f i ≤ a
theorem le_ciInf_set_iff {α : Type u_1} [ConditionallyCompleteLattice α] {ι : Type u_6} {s : Set ι} {f : ι → α} {a : α} (hs : s.Nonempty) (hf : BddBelow (f '' s)) :
a ≤ ⨅ (i : ↑s), f ↑i ↔ ∀ i ∈ s, a ≤ f i
theorem IsLUB.ciSup_eq {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLattice α] {a : α} [Nonempty ι] {f : ι → α} (H : IsLUB (Set.range f) a) :
⨆ (i : ι), f i = a
theorem IsGLB.ciInf_eq {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLattice α] {a : α} [Nonempty ι] {f : ι → α} (H : IsGLB (Set.range f) a) :
⨅ (i : ι), f i = a
theorem IsLUB.ciSup_set_eq {α : Type u_1} {β : Type u_2} [ConditionallyCompleteLattice α] {a : α} {s : Set β} {f : β → α} (H : IsLUB (f '' s) a) (Hne : s.Nonempty) :
⨆ (i : ↑s), f ↑i = a
theorem IsGLB.ciInf_set_eq {α : Type u_1} {β : Type u_2} [ConditionallyCompleteLattice α] {a : α} {s : Set β} {f : β → α} (H : IsGLB (f '' s) a) (Hne : s.Nonempty) :
⨅ (i : ↑s), f ↑i = a
theorem ciSup_le {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLattice α] [Nonempty ι] {f : ι → α} {c : α} (H : ∀ (x : ι), f x ≤ c) :
iSup f ≤ c

The indexed supremum of a function is bounded above by a uniform bound

theorem le_ciInf {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLattice α] [Nonempty ι] {f : ι → α} {c : α} (H : ∀ (x : ι), c ≤ f x) :
c ≤ iInf f

The indexed infimum of a function is bounded below by a uniform bound

theorem ciSup₂_le {α : Type u_1} {ι : Sort u_4} {κ : ι → Sort u_5} [ConditionallyCompleteLattice α] {a : α} [Nonempty ι] [∀ (i : ι), Nonempty (κ i)] {f : (i : ι) → κ i → α} (h : ∀ (i : ι) (j : κ i), f i j ≤ a) :
⨆ (i : ι), ⨆ (j : κ i), f i j ≤ a
theorem le_ciInf₂ {α : Type u_1} {ι : Sort u_4} {κ : ι → Sort u_5} [ConditionallyCompleteLattice α] {a : α} [Nonempty ι] [∀ (i : ι), Nonempty (κ i)] {f : (i : ι) → κ i → α} (h : ∀ (i : ι) (j : κ i), a ≤ f i j) :
a ≤ ⨅ (i : ι), ⨅ (j : κ i), f i j
theorem le_ciSup {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLattice α] {f : ι → α} (H : BddAbove (Set.range f)) (c : ι) :
f c ≤ iSup f

The indexed supremum of a function is bounded below by the value taken at one point

theorem ciInf_le {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLattice α] {f : ι → α} (H : BddBelow (Set.range f)) (c : ι) :
iInf f ≤ f c

The indexed infimum of a function is bounded above by the value taken at one point

theorem le_ciSup_of_le {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLattice α] {a : α} {f : ι → α} (H : BddAbove (Set.range f)) (c : ι) (h : a ≤ f c) :
a ≤ iSup f
theorem ciInf_le_of_le {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLattice α] {a : α} {f : ι → α} (H : BddBelow (Set.range f)) (c : ι) (h : f c ≤ a) :
iInf f ≤ a
theorem BddAbove.range_iSup_of_iUnion_range {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLattice α] {κ : ι → Sort u_6} {f : (i : ι) → κ i → α} (H : BddAbove (⋃ (i : ι), Set.range (f i))) :
BddAbove (Set.range fun (i : ι) => ⨆ (j : κ i), f i j)

If the set of all f i j is bounded above, then so is the set of the supremums of every row

theorem BddBelow.range_iInf_of_iUnion_range {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLattice α] {κ : ι → Sort u_6} {f : (i : ι) → κ i → α} (H : BddBelow (⋃ (i : ι), Set.range (f i))) :
BddBelow (Set.range fun (i : ι) => ⨅ (j : κ i), f i j)

If the set of all f i j is bounded below, then so is the set of the infimums of every row

theorem le_ciSup₂ {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLattice α] {κ : ι → Sort u_6} {f : (i : ι) → κ i → α} (H : BddAbove (⋃ (i : ι), Set.range (f i))) (i : ι) (j : κ i) :
f i j ≤ ⨆ (i : ι), ⨆ (j : κ i), f i j
theorem ciInf₂_le {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLattice α] {κ : ι → Sort u_6} {f : (i : ι) → κ i → α} (H : BddBelow (⋃ (i : ι), Set.range (f i))) (i : ι) (j : κ i) :
⨅ (i : ι), ⨅ (j : κ i), f i j ≤ f i j
theorem ciSup_mono {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLattice α] {f g : ι → α} (B : BddAbove (Set.range g)) (H : ∀ (x : ι), f x ≤ g x) :

The indexed suprema of two functions are comparable if the functions are pointwise comparable

theorem ciInf_mono {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLattice α] {f g : ι → α} (B : BddBelow (Set.range g)) (H : ∀ (x : ι), g x ≤ f x) :

The indexed infimum of two functions are comparable if the functions are pointwise comparable

theorem ciSup_sup_eq {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLattice α] {f g : ι → α} (Hf : BddAbove (Set.range f)) (Hg : BddAbove (Set.range g)) :
⨆ (x : ι), f x ⊔ g x = (⨆ (x : ι), f x) ⊔ ⨆ (x : ι), g x
theorem ciInf_inf_eq {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLattice α] {f g : ι → α} (Hf : BddBelow (Set.range f)) (Hg : BddBelow (Set.range g)) :
⨅ (x : ι), f x ⊓ g x = (⨅ (x : ι), f x) ⊓ ⨅ (x : ι), g x
theorem le_ciSup_set {α : Type u_1} {β : Type u_2} [ConditionallyCompleteLattice α] {f : β → α} {s : Set β} (H : BddAbove (f '' s)) {c : β} (hc : c ∈ s) :
f c ≤ ⨆ (i : ↑s), f ↑i
theorem ciInf_set_le {α : Type u_1} {β : Type u_2} [ConditionallyCompleteLattice α] {f : β → α} {s : Set β} (H : BddBelow (f '' s)) {c : β} (hc : c ∈ s) :
⨅ (i : ↑s), f ↑i ≤ f c
theorem ciSup_mono_of_forall_exists {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLattice α] {ι' : Sort u_6} [Nonempty ι] {f : ι → α} {g : ι' → α} (hg : BddAbove (Set.range g)) (h : ∀ (i : ι), ∃ (i' : ι'), f i ≤ g i') :
⨆ (i : ι), f i ≤ ⨆ (i' : ι'), g i'
theorem ciInf_mono_of_forall_exists {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLattice α] {ι' : Sort u_6} [Nonempty ι] {f : ι → α} {g : ι' → α} (hg : BddBelow (Set.range g)) (h : ∀ (i : ι), ∃ (i' : ι'), g i' ≤ f i) :
⨅ (i' : ι'), g i' ≤ ⨅ (i : ι), f i
theorem ciInf_le_ciSup {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLattice α] [Nonempty ι] {f : ι → α} (hf : BddBelow (Set.range f)) (hf' : BddAbove (Set.range f)) :
⨅ (i : ι), f i ≤ ⨆ (i : ι), f i
theorem ciSup_prod {α : Type u_1} {β : Type u_2} {γ : Type u_3} [ConditionallyCompleteLattice α] {f : β × γ → α} (hf : BddAbove (Set.range f)) :
⨆ (p : β × γ), f p = ⨆ (b : β), ⨆ (c : γ), f (b, c)
theorem ciInf_prod {α : Type u_1} {β : Type u_2} {γ : Type u_3} [ConditionallyCompleteLattice α] {f : β × γ → α} (hf : BddBelow (Set.range f)) :
⨅ (p : β × γ), f p = ⨅ (b : β), ⨅ (c : γ), f (b, c)
theorem ciSup_eq_of_forall_le_of_forall_lt_exists_gt {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLattice α] {b : α} [Nonempty ι] {f : ι → α} (h₁ : ∀ (i : ι), f i ≤ b) (h₂ : ∀ w < b, ∃ (i : ι), w < f i) :
⨆ (i : ι), f i = b

Introduction rule to prove that b is the supremum of f: it suffices to check that b is larger than f i for all i, and that this is not the case of any w<b. See iSup_eq_of_forall_le_of_forall_lt_exists_gt for a version in complete lattices.

theorem ciInf_eq_of_forall_ge_of_forall_gt_exists_lt {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLattice α] {b : α} [Nonempty ι] {f : ι → α} (h₁ : ∀ (i : ι), b ≤ f i) (h₂ : ∀ (w : α), b < w → ∃ (i : ι), f i < w) :
⨅ (i : ι), f i = b

Introduction rule to prove that b is the infimum of f: it suffices to check that b is smaller than f i for all i, and that this is not the case of any w>b. See iInf_eq_of_forall_ge_of_forall_gt_exists_lt for a version in complete lattices.

theorem Set.Iic_ciInf {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLattice α] [Nonempty ι] {f : ι → α} (hf : BddBelow (range f)) :
Iic (⨅ (i : ι), f i) = ⋂ (i : ι), Iic (f i)
theorem Set.Ici_ciSup {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLattice α] [Nonempty ι] {f : ι → α} (hf : BddAbove (range f)) :
Ici (⨆ (i : ι), f i) = ⋂ (i : ι), Ici (f i)
theorem ciSup_subtype {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLattice α] {p : ι → Prop} {f : Subtype p → α} (hf : BddAbove (Set.range f)) (hf' : sSup ∅ ≤ iSup f) :
iSup f = ⨆ (i : ι), ⨆ (h : p i), f ⟨i, h⟩
theorem ciInf_subtype {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLattice α] {p : ι → Prop} {f : Subtype p → α} (hf : BddBelow (Set.range f)) (hf' : iInf f ≤ sInf ∅) :
iInf f = ⨅ (i : ι), ⨅ (h : p i), f ⟨i, h⟩
theorem cbiSup_eq_ciSup_subtype {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLattice α] {p : ι → Prop} {f : (i : ι) → p i → α} (hf : BddAbove (Set.range fun (i : Subtype p) => f ↑i ⋯)) (hf' : sSup ∅ ≤ ⨆ (i : Subtype p), f ↑i ⋯) :
⨆ (i : ι), ⨆ (h : p i), f i h = ⨆ (x : Subtype p), f ↑x ⋯
theorem cbiInf_eq_ciInf_subtype {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLattice α] {p : ι → Prop} {f : (i : ι) → p i → α} (hf : BddBelow (Set.range fun (i : Subtype p) => f ↑i ⋯)) (hf' : ⨅ (i : Subtype p), f ↑i ⋯ ≤ sInf ∅) :
⨅ (i : ι), ⨅ (h : p i), f i h = ⨅ (x : Subtype p), f ↑x ⋯
@[deprecated cbiSup_eq_ciSup_subtype (since := "2026-04-04")]
theorem ciSup_subtype' {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLattice α] {p : ι → Prop} {f : (i : ι) → p i → α} (hf : BddAbove (Set.range fun (i : Subtype p) => f ↑i ⋯)) (hf' : sSup ∅ ≤ ⨆ (i : Subtype p), f ↑i ⋯) :
⨆ (i : ι), ⨆ (h : p i), f i h = ⨆ (x : Subtype p), f ↑x ⋯

Alias of cbiSup_eq_ciSup_subtype.

@[deprecated cbiInf_eq_ciInf_subtype (since := "2026-04-04")]
theorem ciInf_subtype' {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLattice α] {p : ι → Prop} {f : (i : ι) → p i → α} (hf : BddBelow (Set.range fun (i : Subtype p) => f ↑i ⋯)) (hf' : ⨅ (i : Subtype p), f ↑i ⋯ ≤ sInf ∅) :
⨅ (i : ι), ⨅ (h : p i), f i h = ⨅ (x : Subtype p), f ↑x ⋯

Alias of cbiInf_eq_ciInf_subtype.

theorem ciSup_subtype_fun {α : Type u_1} [ConditionallyCompleteLattice α] {ι : Type u_6} {s : Set ι} {f : ι → α} (hf : BddAbove (Set.range fun (i : ↑s) => f ↑i)) (hf' : sSup ∅ ≤ ⨆ (i : ↑s), f ↑i) :
⨆ (i : ↑s), f ↑i = ⨆ t ∈ s, f t
theorem ciInf_subtype_fun {α : Type u_1} [ConditionallyCompleteLattice α] {ι : Type u_6} {s : Set ι} {f : ι → α} (hf : BddBelow (Set.range fun (i : ↑s) => f ↑i)) (hf' : ⨅ (i : ↑s), f ↑i ≤ sInf ∅) :
⨅ (i : ↑s), f ↑i = ⨅ t ∈ s, f t
@[deprecated ciSup_subtype_fun (since := "2026-04-04")]
theorem ciSup_subtype'' {α : Type u_1} [ConditionallyCompleteLattice α] {ι : Type u_6} {s : Set ι} {f : ι → α} (hf : BddAbove (Set.range fun (i : ↑s) => f ↑i)) (hf' : sSup ∅ ≤ ⨆ (i : ↑s), f ↑i) :
⨆ (i : ↑s), f ↑i = ⨆ t ∈ s, f t

Alias of ciSup_subtype_fun.

@[deprecated ciInf_subtype_fun (since := "2026-04-04")]
theorem ciInf_subtype'' {α : Type u_1} [ConditionallyCompleteLattice α] {ι : Type u_6} {s : Set ι} {f : ι → α} (hf : BddBelow (Set.range fun (i : ↑s) => f ↑i)) (hf' : ⨅ (i : ↑s), f ↑i ≤ sInf ∅) :
⨅ (i : ↑s), f ↑i = ⨅ t ∈ s, f t

Alias of ciInf_subtype_fun.

theorem csSup_image {α : Type u_1} {β : Type u_2} [ConditionallyCompleteLattice α] {s : Set β} {f : β → α} (hf : BddAbove (Set.range fun (i : ↑s) => f ↑i)) (hf' : sSup ∅ ≤ ⨆ (i : ↑s), f ↑i) :
sSup (f '' s) = ⨆ a ∈ s, f a
theorem csInf_image {α : Type u_1} {β : Type u_2} [ConditionallyCompleteLattice α] {s : Set β} {f : β → α} (hf : BddBelow (Set.range fun (i : ↑s) => f ↑i)) (hf' : ⨅ (i : ↑s), f ↑i ≤ sInf ∅) :
sInf (f '' s) = ⨅ a ∈ s, f a
theorem cbiSup_id {α : Type u_1} [ConditionallyCompleteLattice α] {s : Set α} (hs : BddAbove s) (h : sSup ∅ ≤ sSup s) :
⨆ i ∈ s, i = sSup s
theorem cbiInf_id {α : Type u_1} [ConditionallyCompleteLattice α] {s : Set α} (hs : BddBelow s) (h : sInf s ≤ sInf ∅) :
⨅ i ∈ s, i = sInf s
theorem ciSup_image {α : Type u_1} [ConditionallyCompleteLattice α] {ι : Type u_6} {ι' : Type u_7} {s : Set ι} {f : ι → ι'} {g : ι' → α} (hf : BddAbove (Set.range fun (i : ↑s) => g (f ↑i))) (hg' : sSup ∅ ≤ ⨆ (i : ↑s), g (f ↑i)) :
⨆ i ∈ f '' s, g i = ⨆ x ∈ s, g (f x)
theorem ciInf_image {α : Type u_1} [ConditionallyCompleteLattice α] {ι : Type u_6} {ι' : Type u_7} {s : Set ι} {f : ι → ι'} {g : ι' → α} (hf : BddBelow (Set.range fun (i : ↑s) => g (f ↑i))) (hg' : ⨅ (i : ↑s), g (f ↑i) ≤ sInf ∅) :
⨅ i ∈ f '' s, g i = ⨅ x ∈ s, g (f x)
theorem le_ciSup_ciSup_eq_left {α : Type u_1} {β : Type u_2} [ConditionallyCompleteLattice α] {b : β} {f : (x : β) → x = b → α} :
f b ⋯ ≤ ⨆ (x : β), ⨆ (h : x = b), f x h
theorem ciInf_ciInf_eq_left_le {α : Type u_1} {β : Type u_2} [ConditionallyCompleteLattice α] {b : β} {f : (x : β) → x = b → α} :
⨅ (x : β), ⨅ (h : x = b), f x h ≤ f b ⋯
theorem le_ciSup_ciSup_eq_right {α : Type u_1} {β : Type u_2} [ConditionallyCompleteLattice α] {b : β} {f : (x : β) → b = x → α} :
f b ⋯ ≤ ⨆ (x : β), ⨆ (h : b = x), f x h
theorem ciInf_ciInf_eq_right_le {α : Type u_1} {β : Type u_2} [ConditionallyCompleteLattice α] {b : β} {f : (x : β) → b = x → α} :
⨅ (x : β), ⨅ (h : b = x), f x h ≤ f b ⋯
theorem ciSup_exists_le {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLattice α] {p : ι → Prop} {f : Exists p → α} :
⨆ (ih : Exists p), f ih ≤ ⨆ (i : ι), ⨆ (h : p i), f ⋯

Note that equality need not hold: consider ι := Bool, p := (·), α := ℤ, f := fun _ ↦ -1, then the LHS is -1 but the RHS is -1 ⊔ sSup ∅ = -1 ⊔ 0 = 0.

theorem le_ciInf_exists {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLattice α] {p : ι → Prop} {f : Exists p → α} :
⨅ (i : ι), ⨅ (h : p i), f ⋯ ≤ ⨅ (ih : Exists p), f ih
theorem ciSup_and {α : Type u_1} [ConditionallyCompleteLattice α] {p q : Prop} {f : p ∧ q → α} :
⨆ (ih : p ∧ q), f ih = ⨆ (h₁ : p), ⨆ (h₂ : q), f ⋯
theorem ciInf_and {α : Type u_1} [ConditionallyCompleteLattice α] {p q : Prop} {f : p ∧ q → α} :
⨅ (ih : p ∧ q), f ih = ⨅ (h₁ : p), ⨅ (h₂ : q), f ⋯
theorem ciSup_sup_le {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLinearOrder α] {f g : ι → α} :
⨆ (x : ι), max (f x) (g x) ≤ max (⨆ (x : ι), f x) (⨆ (x : ι), g x)
theorem ciInf_inf_le {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLinearOrder α] {f g : ι → α} :
min (⨅ (x : ι), f x) (⨅ (x : ι), g x) ≤ ⨅ (x : ι), min (f x) (g x)
theorem exists_lt_of_lt_ciSup {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLinearOrder α] {b : α} [Nonempty ι] {f : ι → α} (h : b < iSup f) :
∃ (i : ι), b < f i

Indexed version of exists_lt_of_lt_csSup. When b < iSup f, there is an element i such that b < f i.

theorem exists_lt_of_ciInf_lt {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLinearOrder α] {b : α} [Nonempty ι] {f : ι → α} (h : iInf f < b) :
∃ (i : ι), f i < b

Indexed version of exists_lt_of_csInf_lt. When iInf f < a, there is an element i such that f i < a.

theorem exists_lt_of_lt_ciSup₂ {α : Type u_1} {ι : Sort u_4} {κ : ι → Sort u_5} [ConditionallyCompleteLinearOrder α] {a : α} [Nonempty ι] [∀ (i : ι), Nonempty (κ i)] {f : (i : ι) → κ i → α} (h : a < ⨆ (i : ι), ⨆ (j : κ i), f i j) :
∃ (i : ι) (j : κ i), a < f i j
theorem exists_lt_of_ciInf₂_lt {α : Type u_1} {ι : Sort u_4} {κ : ι → Sort u_5} [ConditionallyCompleteLinearOrder α] {a : α} [Nonempty ι] [∀ (i : ι), Nonempty (κ i)] {f : (i : ι) → κ i → α} (h : ⨅ (i : ι), ⨅ (j : κ i), f i j < a) :
∃ (i : ι) (j : κ i), f i j < a
theorem lt_ciSup_iff {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLinearOrder α] {a : α} [Nonempty ι] {f : ι → α} (hb : BddAbove (Set.range f)) :
a < iSup f ↔ ∃ (i : ι), a < f i
theorem ciInf_lt_iff {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLinearOrder α] {a : α} [Nonempty ι] {f : ι → α} (hb : BddBelow (Set.range f)) :
iInf f < a ↔ ∃ (i : ι), f i < a
theorem cbiSup_of_not_bddAbove {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLinearOrder α] {p : ι → Prop} {f : (i : ι) → p i → α} (h : ¬BddAbove (Set.range fun (i : Subtype p) => f ↑i ⋯)) :
⨆ (i : ι), ⨆ (h : p i), f i h = sSup ∅
theorem cbiInf_of_not_bddBelow {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLinearOrder α] {p : ι → Prop} {f : (i : ι) → p i → α} (h : ¬BddBelow (Set.range fun (i : Subtype p) => f ↑i ⋯)) :
⨅ (i : ι), ⨅ (h : p i), f i h = sInf ∅
theorem cbiSup_eq_of_not_forall {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLinearOrder α] {p : ι → Prop} {f : Subtype p → α} (hp : ¬∀ (i : ι), p i) :
⨆ (i : ι), ⨆ (h : p i), f ⟨i, h⟩ = max (iSup f) (sSup ∅)
theorem cbiInf_eq_of_not_forall {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLinearOrder α] {p : ι → Prop} {f : Subtype p → α} (hp : ¬∀ (i : ι), p i) :
⨅ (i : ι), ⨅ (h : p i), f ⟨i, h⟩ = min (iInf f) (sInf ∅)
theorem ciSup_eq_top_of_top_mem {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLinearOrder α] [OrderTop α] {f : ι → α} (hs : ⊤ ∈ Set.range f) :
theorem ciInf_eq_bot_of_bot_mem {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLinearOrder α] [OrderBot α] {f : ι → α} (hs : ⊥ ∈ Set.range f) :
@[deprecated ciSup_eq_top_of_top_mem (since := "2026-04-05")]
theorem ciInf_eq_top_of_top_mem {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLinearOrder α] [OrderTop α] {f : ι → α} (hs : ⊤ ∈ Set.range f) :

Alias of ciSup_eq_top_of_top_mem.

theorem ciInf_mem {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLinearOrder α] [WellFoundedLT α] [Nonempty ι] (f : ι → α) :
theorem ciInf_eq_iff {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLinearOrder α] [WellFoundedLT α] [Nonempty ι] (f : ι → α) (n : α) :
⨅ (i : ι), f i = n ↔ (∃ (i : ι), f i = n) ∧ ∀ (i : ι), n ≤ f i

Lemmas about a conditionally complete linear order with bottom element #

In this case we have Sup ∅ = ⊥, so we can drop some Nonempty/Set.Nonempty assumptions.

theorem ciSup_of_empty {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLinearOrderBot α] [IsEmpty ι] (f : ι → α) :
⨆ (i : ι), f i = ⊥
theorem ciSup_false {α : Type u_1} [ConditionallyCompleteLinearOrderBot α] (f : False → α) :
⨆ (i : False), f i = ⊥
theorem le_ciSup_iff' {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLinearOrderBot α] {s : ι → α} {a : α} (h : BddAbove (Set.range s)) :
a ≤ iSup s ↔ ∀ (b : α), (∀ (i : ι), s i ≤ b) → a ≤ b
theorem le_ciInf_iff' {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLinearOrderBot α] [Nonempty ι] {f : ι → α} {a : α} :
a ≤ iInf f ↔ ∀ (i : ι), a ≤ f i
theorem ciInf_le' {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLinearOrderBot α] (f : ι → α) (i : ι) :
iInf f ≤ f i
theorem ciInf_le_of_le' {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLinearOrderBot α] {f : ι → α} {a : α} (c : ι) :
f c ≤ a → iInf f ≤ a
theorem ciSup_le_iff' {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLinearOrderBot α] {f : ι → α} (h : BddAbove (Set.range f)) {a : α} :
⨆ (i : ι), f i ≤ a ↔ ∀ (i : ι), f i ≤ a

In conditionally complete orders with a bottom element, the nonempty condition can be omitted from ciSup_le_iff.

theorem ciSup_le' {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLinearOrderBot α] {f : ι → α} {a : α} (h : ∀ (i : ι), f i ≤ a) :
⨆ (i : ι), f i ≤ a
theorem ciSup₂_le' {α : Type u_1} {ι : Sort u_4} {κ : ι → Sort u_5} [ConditionallyCompleteLinearOrderBot α] {a : α} {f : (i : ι) → κ i → α} (h : ∀ (i : ι) (j : κ i), f i j ≤ a) :
⨆ (i : ι), ⨆ (j : κ i), f i j ≤ a
@[simp]
theorem ciSup_bot {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLinearOrderBot α] :
⨆ (x : ι), ⊥ = ⊥
theorem lt_ciSup_iff' {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLinearOrderBot α] {a : α} {f : ι → α} (h : BddAbove (Set.range f)) :
a < iSup f ↔ ∃ (i : ι), a < f i

In conditionally complete orders with a bottom element, the nonempty condition can be omitted from lt_ciSup_iff.

theorem exists_lt_of_lt_ciSup' {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLinearOrderBot α] {f : ι → α} {a : α} (h : a < ⨆ (i : ι), f i) :
∃ (i : ι), a < f i
theorem exists_lt_of_lt_ciSup₂' {α : Type u_1} {ι : Sort u_4} {κ : ι → Sort u_5} [ConditionallyCompleteLinearOrderBot α] {a : α} {f : (i : ι) → κ i → α} (h : a < ⨆ (i : ι), ⨆ (j : κ i), f i j) :
∃ (i : ι) (j : κ i), a < f i j
theorem ciSup_mono_of_forall_exists' {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLinearOrderBot α] {ι' : Sort u_6} {f : ι → α} {g : ι' → α} (hg : BddAbove (Set.range g)) (h : ∀ (i : ι), ∃ (i' : ι'), f i ≤ g i') :
⨆ (i : ι), f i ≤ ⨆ (i' : ι'), g i'
@[deprecated ciSup_mono_of_forall_exists' (since := "2026-05-03")]
theorem ciSup_mono' {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLinearOrderBot α] {ι' : Sort u_6} {f : ι → α} {g : ι' → α} (hg : BddAbove (Set.range g)) (h : ∀ (i : ι), ∃ (i' : ι'), f i ≤ g i') :
⨆ (i : ι), f i ≤ ⨆ (i' : ι'), g i'

Alias of ciSup_mono_of_forall_exists'.

theorem ciSup_exists {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLinearOrderBot α] {p : ι → Prop} {f : Exists p → α} :
⨆ (ih : Exists p), f ih = ⨆ (i : ι), ⨆ (h : p i), f ⋯
@[simp]
theorem ciSup_ciSup_eq_left {α : Type u_1} {β : Type u_2} [ConditionallyCompleteLinearOrderBot α] {b : β} {f : (x : β) → x = b → α} :
⨆ (x : β), ⨆ (h : x = b), f x h = f b ⋯
@[simp]
theorem ciSup_ciSup_eq_right {α : Type u_1} {β : Type u_2} [ConditionallyCompleteLinearOrderBot α] {b : β} {f : (x : β) → b = x → α} :
⨆ (x : β), ⨆ (h : b = x), f x h = f b ⋯
theorem ciSup_or' {α : Type u_1} [ConditionallyCompleteLinearOrderBot α] (p q : Prop) (f : p ∨ q → α) :
⨆ (h : p ∨ q), f h = max (⨆ (h : p), f ⋯) (⨆ (h : q), f ⋯)
theorem GaloisConnection.l_csSup {α : Type u_1} {β : Type u_2} [ConditionallyCompleteLattice α] [ConditionallyCompleteLattice β] {l : α → β} {u : β → α} (gc : GaloisConnection l u) {s : Set α} (hne : s.Nonempty) (hbdd : BddAbove s) :
l (sSup s) = ⨆ (x : ↑s), l ↑x
theorem GaloisConnection.u_csInf {α : Type u_1} {β : Type u_2} [ConditionallyCompleteLattice α] [ConditionallyCompleteLattice β] {l : α → β} {u : β → α} (gc : GaloisConnection u l) {s : Set α} (hne : s.Nonempty) (hbdd : BddBelow s) :
l (sInf s) = ⨅ (x : ↑s), l ↑x
theorem GaloisConnection.l_csSup' {α : Type u_1} {β : Type u_2} [ConditionallyCompleteLattice α] [ConditionallyCompleteLattice β] {l : α → β} {u : β → α} (gc : GaloisConnection l u) {s : Set α} (hne : s.Nonempty) (hbdd : BddAbove s) :
l (sSup s) = sSup (l '' s)
theorem GaloisConnection.u_csInf' {α : Type u_1} {β : Type u_2} [ConditionallyCompleteLattice α] [ConditionallyCompleteLattice β] {l : α → β} {u : β → α} (gc : GaloisConnection u l) {s : Set α} (hne : s.Nonempty) (hbdd : BddBelow s) :
l (sInf s) = sInf (l '' s)
theorem GaloisConnection.l_ciSup {α : Type u_1} {β : Type u_2} {ι : Sort u_4} [ConditionallyCompleteLattice α] [ConditionallyCompleteLattice β] [Nonempty ι] {l : α → β} {u : β → α} (gc : GaloisConnection l u) {f : ι → α} (hf : BddAbove (Set.range f)) :
l (⨆ (i : ι), f i) = ⨆ (i : ι), l (f i)
theorem GaloisConnection.u_ciInf {α : Type u_1} {β : Type u_2} {ι : Sort u_4} [ConditionallyCompleteLattice α] [ConditionallyCompleteLattice β] [Nonempty ι] {l : α → β} {u : β → α} (gc : GaloisConnection u l) {f : ι → α} (hf : BddBelow (Set.range f)) :
l (⨅ (i : ι), f i) = ⨅ (i : ι), l (f i)
theorem GaloisConnection.l_ciSup_set {α : Type u_1} {β : Type u_2} {γ : Type u_3} [ConditionallyCompleteLattice α] [ConditionallyCompleteLattice β] {l : α → β} {u : β → α} (gc : GaloisConnection l u) {s : Set γ} {f : γ → α} (hf : BddAbove (f '' s)) (hne : s.Nonempty) :
l (⨆ (i : ↑s), f ↑i) = ⨆ (i : ↑s), l (f ↑i)
theorem GaloisConnection.u_ciInf_set {α : Type u_1} {β : Type u_2} {γ : Type u_3} [ConditionallyCompleteLattice α] [ConditionallyCompleteLattice β] {l : α → β} {u : β → α} (gc : GaloisConnection u l) {s : Set γ} {f : γ → α} (hf : BddBelow (f '' s)) (hne : s.Nonempty) :
l (⨅ (i : ↑s), f ↑i) = ⨅ (i : ↑s), l (f ↑i)
theorem OrderIso.map_csSup {α : Type u_1} {β : Type u_2} [ConditionallyCompleteLattice α] [ConditionallyCompleteLattice β] (e : α ≃o β) {s : Set α} (hne : s.Nonempty) (hbdd : BddAbove s) :
e (sSup s) = ⨆ (x : ↑s), e ↑x
theorem OrderIso.map_csInf {α : Type u_1} {β : Type u_2} [ConditionallyCompleteLattice α] [ConditionallyCompleteLattice β] (e : α ≃o β) {s : Set α} (hne : s.Nonempty) (hbdd : BddBelow s) :
e (sInf s) = ⨅ (x : ↑s), e ↑x
theorem OrderIso.map_csSup' {α : Type u_1} {β : Type u_2} [ConditionallyCompleteLattice α] [ConditionallyCompleteLattice β] (e : α ≃o β) {s : Set α} (hne : s.Nonempty) (hbdd : BddAbove s) :
e (sSup s) = sSup (⇑e '' s)
theorem OrderIso.map_csInf' {α : Type u_1} {β : Type u_2} [ConditionallyCompleteLattice α] [ConditionallyCompleteLattice β] (e : α ≃o β) {s : Set α} (hne : s.Nonempty) (hbdd : BddBelow s) :
e (sInf s) = sInf (⇑e '' s)
theorem OrderIso.map_ciSup {α : Type u_1} {β : Type u_2} {ι : Sort u_4} [ConditionallyCompleteLattice α] [ConditionallyCompleteLattice β] [Nonempty ι] (e : α ≃o β) {f : ι → α} (hf : BddAbove (Set.range f)) :
e (⨆ (i : ι), f i) = ⨆ (i : ι), e (f i)
theorem OrderIso.map_ciInf {α : Type u_1} {β : Type u_2} {ι : Sort u_4} [ConditionallyCompleteLattice α] [ConditionallyCompleteLattice β] [Nonempty ι] (e : α ≃o β) {f : ι → α} (hf : BddBelow (Set.range f)) :
e (⨅ (i : ι), f i) = ⨅ (i : ι), e (f i)
theorem OrderIso.map_ciSup_set {α : Type u_1} {β : Type u_2} {γ : Type u_3} [ConditionallyCompleteLattice α] [ConditionallyCompleteLattice β] (e : α ≃o β) {s : Set γ} {f : γ → α} (hf : BddAbove (f '' s)) (hne : s.Nonempty) :
e (⨆ (i : ↑s), f ↑i) = ⨆ (i : ↑s), e (f ↑i)
theorem OrderIso.map_ciInf_set {α : Type u_1} {β : Type u_2} {γ : Type u_3} [ConditionallyCompleteLattice α] [ConditionallyCompleteLattice β] (e : α ≃o β) {s : Set γ} {f : γ → α} (hf : BddBelow (f '' s)) (hne : s.Nonempty) :
e (⨅ (i : ↑s), f ↑i) = ⨅ (i : ↑s), e (f ↑i)
@[simp]
theorem OrderIso.map_ciSup' {α : Type u_1} {β : Type u_2} {ι : Sort u_4} [ConditionallyCompleteLinearOrderBot α] [ConditionallyCompleteLinearOrderBot β] (e : α ≃o β) (f : ι → α) :
e (⨆ (i : ι), f i) = ⨆ (i : ι), e (f i)
theorem WithTop.iSup_coe_eq_top {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLinearOrderBot α] {f : ι → α} :
⨆ (x : ι), ↑(f x) = ⊤ ↔ ¬BddAbove (Set.range f)
theorem WithTop.iSup_coe_lt_top {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLinearOrderBot α] {f : ι → α} :
⨆ (x : ι), ↑(f x) < ⊤ ↔ BddAbove (Set.range f)
theorem WithTop.iInf_coe_eq_top {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLinearOrderBot α] {f : ι → α} :
⨅ (x : ι), ↑(f x) = ⊤ ↔ IsEmpty ι
theorem WithTop.iInf_coe_lt_top {α : Type u_1} {ι : Sort u_4} [ConditionallyCompleteLinearOrderBot α] {f : ι → α} :
⨅ (i : ι), ↑(f i) < ⊤ ↔ Nonempty ι