Documentation

Mathlib.Order.ConditionallyCompletePartialOrder.Indexed

Indexed sup / inf in conditionally complete lattices #

This file proves lemmas about iSup and iInf for functions valued in a conditionally complete partial order, as opposed to a conditionally complete lattice.

TODO #

theorem Directed.isLUB_ciSup {α : Type u_1} {ι : Sort u_4} [ConditionallyCompletePartialOrderSup α] [Nonempty ι] {f : ι → α} (hd : Directed (fun (x1 x2 : α) => x1 ≤ x2) f) (H : BddAbove (Set.range f)) :
IsLUB (Set.range f) (⨆ (i : ι), f i)
theorem Directed.isGLB_ciInf {α : Type u_1} {ι : Sort u_4} [ConditionallyCompletePartialOrderInf α] [Nonempty ι] {f : ι → α} (hd : Directed (fun (x1 x2 : α) => x2 ≤ x1) f) (H : BddBelow (Set.range f)) :
IsGLB (Set.range f) (⨅ (i : ι), f i)
theorem DirectedOn.isLUB_ciSup_set {α : Type u_1} {β : Type u_2} [ConditionallyCompletePartialOrderSup α] {f : β → α} {s : Set β} (hd : DirectedOn (fun (x1 x2 : α) => x1 ≤ x2) (f '' s)) (H : BddAbove (f '' s)) (Hne : s.Nonempty) :
IsLUB (f '' s) (⨆ (i : ↑s), f ↑i)
theorem DirectedOn.isGLB_ciInf_set {α : Type u_1} {β : Type u_2} [ConditionallyCompletePartialOrderInf α] {f : β → α} {s : Set β} (hd : DirectedOn (fun (x1 x2 : α) => x2 ≤ x1) (f '' s)) (H : BddBelow (f '' s)) (Hne : s.Nonempty) :
IsGLB (f '' s) (⨅ (i : ↑s), f ↑i)
theorem Directed.ciSup_le_iff {α : Type u_1} {ι : Sort u_4} [ConditionallyCompletePartialOrderSup α] [Nonempty ι] {f : ι → α} {a : α} (hd : Directed (fun (x1 x2 : α) => x1 ≤ x2) f) (hf : BddAbove (Set.range f)) :
iSup f ≤ a ↔ ∀ (i : ι), f i ≤ a
theorem Directed.le_ciInf_iff {α : Type u_1} {ι : Sort u_4} [ConditionallyCompletePartialOrderInf α] [Nonempty ι] {f : ι → α} {a : α} (hd : Directed (fun (x1 x2 : α) => x2 ≤ x1) f) (hf : BddBelow (Set.range f)) :
a ≤ iInf f ↔ ∀ (i : ι), a ≤ f i
theorem DirectedOn.ciSup_set_le_iff {α : Type u_1} [ConditionallyCompletePartialOrderSup α] {ι : Type u_5} {s : Set ι} {f : ι → α} {a : α} (hs : s.Nonempty) (hd : DirectedOn (fun (x1 x2 : α) => x1 ≤ x2) (f '' s)) (hf : BddAbove (f '' s)) :
⨆ (i : ↑s), f ↑i ≤ a ↔ ∀ i ∈ s, f i ≤ a
theorem DirectedOn.le_ciInf_set_iff {α : Type u_1} [ConditionallyCompletePartialOrderInf α] {ι : Type u_5} {s : Set ι} {f : ι → α} {a : α} (hs : s.Nonempty) (hd : DirectedOn (fun (x1 x2 : α) => x2 ≤ x1) (f '' s)) (hf : BddBelow (f '' s)) :
a ≤ ⨅ (i : ↑s), f ↑i ↔ ∀ i ∈ s, a ≤ f i
theorem Directed.le_ciSup_of_le {α : Type u_1} {ι : Sort u_4} [ConditionallyCompletePartialOrderSup α] {a : α} {f : ι → α} (hd : Directed (fun (x1 x2 : α) => x1 ≤ x2) f) (H : BddAbove (Set.range f)) (c : ι) (h : a ≤ f c) :
a ≤ iSup f
theorem Directed.ciInf_le_of_le {α : Type u_1} {ι : Sort u_4} [ConditionallyCompletePartialOrderInf α] {a : α} {f : ι → α} (hd : Directed (fun (x1 x2 : α) => x2 ≤ x1) f) (H : BddBelow (Set.range f)) (c : ι) (h : f c ≤ a) :
iInf f ≤ a
theorem Directed.ciSup_mono {α : Type u_1} {ι : Sort u_4} [ConditionallyCompletePartialOrderSup α] {f g : ι → α} (hdf : Directed (fun (x1 x2 : α) => x1 ≤ x2) f) (hdg : Directed (fun (x1 x2 : α) => x1 ≤ x2) 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 Directed.ciInf_mono {α : Type u_1} {ι : Sort u_4} [ConditionallyCompletePartialOrderInf α] {f g : ι → α} (hdf : Directed (fun (x1 x2 : α) => x2 ≤ x1) f) (hdg : Directed (fun (x1 x2 : α) => x2 ≤ x1) 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 DirectedOn.le_ciSup_set {α : Type u_1} {β : Type u_2} [ConditionallyCompletePartialOrderSup α] {f : β → α} {s : Set β} (hd : DirectedOn (fun (x1 x2 : α) => x1 ≤ x2) (f '' s)) (H : BddAbove (f '' s)) {c : β} (hc : c ∈ s) :
f c ≤ ⨆ (i : ↑s), f ↑i
theorem DirectedOn.ciInf_set_le {α : Type u_1} {β : Type u_2} [ConditionallyCompletePartialOrderInf α] {f : β → α} {s : Set β} (hd : DirectedOn (fun (x1 x2 : α) => x2 ≤ x1) (f '' s)) (H : BddBelow (f '' s)) {c : β} (hc : c ∈ s) :
⨅ (i : ↑s), f ↑i ≤ f c
@[simp]
theorem ciSup_const {α : Type u_1} {ι : Sort u_4} [ConditionallyCompletePartialOrderSup α] [hι : Nonempty ι] {a : α} :
⨆ (x : ι), a = a
@[simp]
theorem ciInf_const {α : Type u_1} {ι : Sort u_4} [ConditionallyCompletePartialOrderInf α] [hι : Nonempty ι] {a : α} :
⨅ (x : ι), a = a
@[simp]
theorem ciSup_unique {α : Type u_1} {ι : Sort u_4} [ConditionallyCompletePartialOrderSup α] [Unique ι] {s : ι → α} :
⨆ (i : ι), s i = s default
@[simp]
theorem ciInf_unique {α : Type u_1} {ι : Sort u_4} [ConditionallyCompletePartialOrderInf α] [Unique ι] {s : ι → α} :
⨅ (i : ι), s i = s default
theorem ciSup_subsingleton {α : Type u_1} {ι : Sort u_4} [ConditionallyCompletePartialOrderSup α] [Subsingleton ι] (i : ι) (s : ι → α) :
⨆ (i : ι), s i = s i
theorem ciInf_subsingleton {α : Type u_1} {ι : Sort u_4} [ConditionallyCompletePartialOrderInf α] [Subsingleton ι] (i : ι) (s : ι → α) :
⨅ (i : ι), s i = s i
theorem ciSup_pos {α : Type u_1} [ConditionallyCompletePartialOrderSup α] {p : Prop} {f : p → α} (hp : p) :
⨆ (h : p), f h = f hp
theorem ciInf_pos {α : Type u_1} [ConditionallyCompletePartialOrderInf α] {p : Prop} {f : p → α} (hp : p) :
⨅ (h : p), f h = f hp
theorem ciSup_neg {α : Type u_1} [ConditionallyCompletePartialOrderSup α] {p : Prop} {f : p → α} (hp : ¬p) :
⨆ (h : p), f h = sSup ∅
theorem ciInf_neg {α : Type u_1} [ConditionallyCompletePartialOrderInf α] {p : Prop} {f : p → α} (hp : ¬p) :
⨅ (h : p), f h = sInf ∅
theorem ciSup_eq_ite {α : Type u_1} [ConditionallyCompletePartialOrderSup α] {p : Prop} [Decidable p] {f : p → α} :
⨆ (h : p), f h = if h : p then f h else sSup ∅
theorem ciInf_eq_ite {α : Type u_1} [ConditionallyCompletePartialOrderInf α] {p : Prop} [Decidable p] {f : p → α} :
⨅ (h : p), f h = if h : p then f h else sInf ∅
theorem cbiSup_eq_of_forall {α : Type u_1} {ι : Sort u_4} [ConditionallyCompletePartialOrderSup α] {p : ι → Prop} {f : Subtype p → α} (hp : ∀ (i : ι), p i) :
⨆ (i : ι), ⨆ (h : p i), f ⟨i, h⟩ = iSup f
theorem cbiInf_eq_of_forall {α : Type u_1} {ι : Sort u_4} [ConditionallyCompletePartialOrderInf α] {p : ι → Prop} {f : Subtype p → α} (hp : ∀ (i : ι), p i) :
⨅ (i : ι), ⨅ (h : p i), f ⟨i, h⟩ = iInf f
theorem Directed.ciSup_eq_of_forall_le_of_forall_lt_exists_gt {α : Type u_1} {ι : Sort u_4} [ConditionallyCompletePartialOrderSup α] {b : α} [Nonempty ι] {f : ι → α} (hd : Directed (fun (x1 x2 : α) => x1 ≤ x2) 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 Directed.ciInf_eq_of_forall_ge_of_forall_gt_exists_lt {α : Type u_1} {ι : Sort u_4} [ConditionallyCompletePartialOrderInf α] {b : α} [Nonempty ι] {f : ι → α} (hd : Directed (fun (x1 x2 : α) => x2 ≤ x1) 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 Monotone.ciSup_mem_iInter_Icc_of_antitone {α : Type u_1} {β : Type u_2} [ConditionallyCompletePartialOrderSup α] [Preorder β] [IsDirectedOrder β] {f g : β → α} (hf : Monotone f) (hg : Antitone g) (h : f ≤ g) :
⨆ (n : β), f n ∈ ⋂ (n : β), Set.Icc (f n) (g n)

Nested intervals lemma: if f is a monotone sequence, g is an antitone sequence, and f n ≤ g n for all n, then ⨆ n, f n belongs to all the intervals [f n, g n].

theorem ciSup_mem_iInter_Icc_of_antitone_Icc {α : Type u_1} {β : Type u_2} [ConditionallyCompletePartialOrderSup α] [Preorder β] [IsDirectedOrder β] {f g : β → α} (h : Antitone fun (n : β) => Set.Icc (f n) (g n)) (h' : ∀ (n : β), f n ≤ g n) :
⨆ (n : β), f n ∈ ⋂ (n : β), Set.Icc (f n) (g n)

Nested intervals lemma: if [f n, g n] is an antitone sequence of nonempty closed intervals, then ⨆ n, f n belongs to all the intervals [f n, g n].

theorem Directed.Ici_ciSup {α : Type u_1} {ι : Sort u_4} [ConditionallyCompletePartialOrderSup α] [Nonempty ι] {f : ι → α} (hd : Directed (fun (x1 x2 : α) => x1 ≤ x2) f) (hf : BddAbove (Set.range f)) :
Set.Ici (⨆ (i : ι), f i) = ⋂ (i : ι), Set.Ici (f i)
theorem Directed.Iic_ciInf {α : Type u_1} {ι : Sort u_4} [ConditionallyCompletePartialOrderInf α] [Nonempty ι] {f : ι → α} (hd : Directed (fun (x1 x2 : α) => x2 ≤ x1) f) (hf : BddBelow (Set.range f)) :
Set.Iic (⨅ (i : ι), f i) = ⋂ (i : ι), Set.Iic (f i)
theorem ciSup_Iic {α : Type u_1} {β : Type u_2} [ConditionallyCompletePartialOrderSup α] [Preorder β] {f : β → α} (a : β) (hf : Monotone f) :
⨆ (x : ↑(Set.Iic a)), f ↑x = f a
theorem ciInf_Ici {α : Type u_1} {β : Type u_2} [ConditionallyCompletePartialOrderInf α] [Preorder β] {f : β → α} (a : β) (hf : Monotone f) :
⨅ (x : ↑(Set.Ici a)), f ↑x = f a
theorem Directed.ciInf_le_ciSup {α : Type u_1} {ι : Sort u_4} [ConditionallyCompletePartialOrder α] [Nonempty ι] {f : ι → α} (hd : Directed (fun (x1 x2 : α) => x1 ≥ x2) f) (hf : BddBelow (Set.range f)) (hd' : Directed (fun (x1 x2 : α) => x1 ≤ x2) f) (hf' : BddAbove (Set.range f)) :
⨅ (i : ι), f i ≤ ⨆ (i : ι), f i
theorem GaloisConnection.l_csSup_of_directedOn' {α : Type u_1} {β : Type u_2} [ConditionallyCompletePartialOrderSup α] [ConditionallyCompletePartialOrderSup β] {l : α → β} {u : β → α} (gc : GaloisConnection l u) {s : Set α} (hd : DirectedOn (fun (x1 x2 : α) => x1 ≤ x2) s) (hne : s.Nonempty) (hbdd : BddAbove s) :
l (sSup s) = sSup (l '' s)
theorem GaloisConnection.l_csSup_of_directedOn {α : Type u_1} {β : Type u_2} [ConditionallyCompletePartialOrderSup α] [ConditionallyCompletePartialOrderSup β] {l : α → β} {u : β → α} (gc : GaloisConnection l u) {s : Set α} (hd : DirectedOn (fun (x1 x2 : α) => x1 ≤ x2) s) (hne : s.Nonempty) (hbdd : BddAbove s) :
l (sSup s) = ⨆ (x : ↑s), l ↑x
theorem GaloisConnection.l_ciSup_of_directed {α : Type u_1} {β : Type u_2} {ι : Sort u_4} [ConditionallyCompletePartialOrderSup α] [ConditionallyCompletePartialOrderSup β] [Nonempty ι] {l : α → β} {u : β → α} (gc : GaloisConnection l u) {f : ι → α} (hd : Directed (fun (x1 x2 : α) => x1 ≤ x2) f) (hf : BddAbove (Set.range f)) :
l (⨆ (i : ι), f i) = ⨆ (i : ι), l (f i)
theorem GaloisConnection.l_ciSup_set_of_directedOn {α : Type u_1} {β : Type u_2} {γ : Type u_3} [ConditionallyCompletePartialOrderSup α] [ConditionallyCompletePartialOrderSup β] {l : α → β} {u : β → α} (gc : GaloisConnection l u) {s : Set γ} {f : γ → α} (hd : DirectedOn (fun (x1 x2 : α) => x1 ≤ x2) (f '' s)) (hf : BddAbove (f '' s)) (hne : s.Nonempty) :
l (⨆ (i : ↑s), f ↑i) = ⨆ (i : ↑s), l (f ↑i)
theorem GaloisConnection.u_csInf_of_directedOn {α : Type u_1} {β : Type u_2} [ConditionallyCompletePartialOrderInf α] [ConditionallyCompletePartialOrderInf β] {l : α → β} {u : β → α} (gc : GaloisConnection l u) {s : Set β} (hd : DirectedOn (fun (x1 x2 : β) => x1 ≥ x2) s) (hne : s.Nonempty) (hbdd : BddBelow s) :
u (sInf s) = ⨅ (x : ↑s), u ↑x
theorem GaloisConnection.u_csInf_of_directedOn' {α : Type u_1} {β : Type u_2} [ConditionallyCompletePartialOrderInf α] [ConditionallyCompletePartialOrderInf β] {l : α → β} {u : β → α} (gc : GaloisConnection l u) {s : Set β} (hd : DirectedOn (fun (x1 x2 : β) => x1 ≥ x2) s) (hne : s.Nonempty) (hbdd : BddBelow s) :
u (sInf s) = sInf (u '' s)
theorem GaloisConnection.u_ciInf_of_directed {α : Type u_1} {β : Type u_2} {ι : Sort u_4} [ConditionallyCompletePartialOrderInf α] [ConditionallyCompletePartialOrderInf β] [Nonempty ι] {l : α → β} {u : β → α} (gc : GaloisConnection l u) {f : ι → β} (hd : Directed (fun (x1 x2 : β) => x1 ≥ x2) f) (hf : BddBelow (Set.range f)) :
u (⨅ (i : ι), f i) = ⨅ (i : ι), u (f i)
theorem GaloisConnection.u_ciInf_set_of_directedOn {α : Type u_1} {β : Type u_2} {γ : Type u_3} [ConditionallyCompletePartialOrderInf α] [ConditionallyCompletePartialOrderInf β] {l : α → β} {u : β → α} (gc : GaloisConnection l u) {s : Set γ} {f : γ → β} (hd : DirectedOn (fun (x1 x2 : β) => x1 ≥ x2) (f '' s)) (hf : BddBelow (f '' s)) (hne : s.Nonempty) :
u (⨅ (i : ↑s), f ↑i) = ⨅ (i : ↑s), u (f ↑i)
theorem OrderIso.map_csSup_of_directedOn {α : Type u_1} {β : Type u_2} [ConditionallyCompletePartialOrderSup α] [ConditionallyCompletePartialOrderSup β] (e : α ≃o β) {s : Set α} (hd : DirectedOn (fun (x1 x2 : α) => x1 ≤ x2) s) (hne : s.Nonempty) (hbdd : BddAbove s) :
e (sSup s) = ⨆ (x : ↑s), e ↑x
theorem OrderIso.map_csSup_of_directedOn' {α : Type u_1} {β : Type u_2} [ConditionallyCompletePartialOrderSup α] [ConditionallyCompletePartialOrderSup β] (e : α ≃o β) {s : Set α} (hd : DirectedOn (fun (x1 x2 : α) => x1 ≤ x2) s) (hne : s.Nonempty) (hbdd : BddAbove s) :
e (sSup s) = sSup (⇑e '' s)
theorem OrderIso.map_ciSup_of_directed {α : Type u_1} {β : Type u_2} {ι : Sort u_4} [ConditionallyCompletePartialOrderSup α] [ConditionallyCompletePartialOrderSup β] [Nonempty ι] (e : α ≃o β) {f : ι → α} (hd : Directed (fun (x1 x2 : α) => x1 ≤ x2) f) (hf : BddAbove (Set.range f)) :
e (⨆ (i : ι), f i) = ⨆ (i : ι), e (f i)
theorem OrderIso.map_ciSup_set_of_directedOn {α : Type u_1} {β : Type u_2} {γ : Type u_3} [ConditionallyCompletePartialOrderSup α] [ConditionallyCompletePartialOrderSup β] (e : α ≃o β) {s : Set γ} {f : γ → α} (hd : DirectedOn (fun (x1 x2 : α) => x1 ≤ x2) (f '' s)) (hf : BddAbove (f '' s)) (hne : s.Nonempty) :
e (⨆ (i : ↑s), f ↑i) = ⨆ (i : ↑s), e (f ↑i)
theorem OrderIso.map_csInf_of_directedOn {α : Type u_1} {β : Type u_2} [ConditionallyCompletePartialOrderInf α] [ConditionallyCompletePartialOrderInf β] (e : α ≃o β) {s : Set α} (hd : DirectedOn (fun (x1 x2 : α) => x1 ≥ x2) s) (hne : s.Nonempty) (hbdd : BddBelow s) :
e (sInf s) = ⨅ (x : ↑s), e ↑x
theorem OrderIso.map_csInf_of_directedOn' {α : Type u_1} {β : Type u_2} [ConditionallyCompletePartialOrderInf α] [ConditionallyCompletePartialOrderInf β] (e : α ≃o β) {s : Set α} (hd : DirectedOn (fun (x1 x2 : α) => x1 ≥ x2) s) (hne : s.Nonempty) (hbdd : BddBelow s) :
e (sInf s) = sInf (⇑e '' s)
theorem OrderIso.map_ciInf_of_directed {α : Type u_1} {β : Type u_2} {ι : Sort u_4} [ConditionallyCompletePartialOrderInf α] [ConditionallyCompletePartialOrderInf β] [Nonempty ι] (e : α ≃o β) {f : ι → α} (hd : Directed (fun (x1 x2 : α) => x1 ≥ x2) f) (hf : BddBelow (Set.range f)) :
e (⨅ (i : ι), f i) = ⨅ (i : ι), e (f i)
theorem OrderIso.map_ciInf_set_of_directedOn {α : Type u_1} {β : Type u_2} {γ : Type u_3} [ConditionallyCompletePartialOrderInf α] [ConditionallyCompletePartialOrderInf β] (e : α ≃o β) {s : Set γ} {f : γ → α} (hd : DirectedOn (fun (x1 x2 : α) => x1 ≥ x2) (f '' s)) (hf : BddBelow (f '' s)) (hne : s.Nonempty) :
e (⨅ (i : ↑s), f ↑i) = ⨅ (i : ↑s), e (f ↑i)