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 is, 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 is, 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 α] [ : Nonempty ι] {a : α} :
⨆ (x : ι), a = a
@[simp]
theorem ciInf_const {α : Type u_1} {ι : Sort u_4} [ConditionallyCompletePartialOrderInf α] [ : 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)