Documentation

Mathlib.Order.CompleteLattice

Theory of complete lattices #

Main definitions #

Naming conventions #

In lemma names,

Notation #

class SupSet (α : Type u_9) :
Type u_9
  • sSup : Set αα

    Supremum of a set

Class for the sSup operator

Instances
    class InfSet (α : Type u_9) :
    Type u_9
    • sInf : Set αα

      Infimum of a set

    Class for the sInf operator

    Instances
      def iSup {α : Type u_1} [SupSet α] {ι : Sort u_9} (s : ια) :
      α

      Indexed supremum

      Equations
      Instances For
        def iInf {α : Type u_1} [InfSet α] {ι : Sort u_9} (s : ια) :
        α

        Indexed infimum

        Equations
        Instances For

          Indexed supremum.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            Equations
            • One or more equations did not get rendered due to their size.
            Instances For

              Indexed infimum.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  instance OrderDual.supSet (α : Type u_9) [InfSet α] :
                  Equations
                  instance OrderDual.infSet (α : Type u_9) [SupSet α] :
                  Equations
                  class CompleteSemilatticeSup (α : Type u_9) extends PartialOrder , SupSet :
                  Type u_9
                  • le : ααProp
                  • lt : ααProp
                  • le_refl : ∀ (a : α), a a
                  • le_trans : ∀ (a b c : α), a bb ca c
                  • lt_iff_le_not_le : ∀ (a b : α), a < b a b ¬b a
                  • le_antisymm : ∀ (a b : α), a bb aa = b
                  • sSup : Set αα
                  • le_sSup : ∀ (s_1 : Set α) (a : α), a s_1a sSup s_1

                    Any element of a set is less than the set supremum.

                  • sSup_le : ∀ (s_1 : Set α) (a : α), (∀ (b : α), b s_1b a) → sSup s_1 a

                    Any upper bound is more than the set supremum.

                  Note that we rarely use CompleteSemilatticeSup (in fact, any such object is always a CompleteLattice, so it's usually best to start there).

                  Nevertheless it is sometimes a useful intermediate step in constructions.

                  Instances
                    theorem le_sSup {α : Type u_1} [CompleteSemilatticeSup α] {s : Set α} {a : α} :
                    a sa sSup s
                    theorem sSup_le {α : Type u_1} [CompleteSemilatticeSup α] {s : Set α} {a : α} :
                    (∀ (b : α), b sb a) → sSup s a
                    theorem isLUB_sSup {α : Type u_1} [CompleteSemilatticeSup α] (s : Set α) :
                    IsLUB s (sSup s)
                    theorem IsLUB.sSup_eq {α : Type u_1} [CompleteSemilatticeSup α] {s : Set α} {a : α} (h : IsLUB s a) :
                    sSup s = a
                    theorem le_sSup_of_le {α : Type u_1} [CompleteSemilatticeSup α] {s : Set α} {a : α} {b : α} (hb : b s) (h : a b) :
                    a sSup s
                    theorem sSup_le_sSup {α : Type u_1} [CompleteSemilatticeSup α] {s : Set α} {t : Set α} (h : s t) :
                    @[simp]
                    theorem sSup_le_iff {α : Type u_1} [CompleteSemilatticeSup α] {s : Set α} {a : α} :
                    sSup s a ∀ (b : α), b sb a
                    theorem le_sSup_iff {α : Type u_1} [CompleteSemilatticeSup α] {s : Set α} {a : α} :
                    a sSup s ∀ (b : α), b upperBounds sa b
                    theorem le_iSup_iff {α : Type u_1} {ι : Sort u_5} [CompleteSemilatticeSup α] {a : α} {s : ια} :
                    a iSup s ∀ (b : α), (∀ (i : ι), s i b) → a b
                    theorem sSup_le_sSup_of_forall_exists_le {α : Type u_1} [CompleteSemilatticeSup α] {s : Set α} {t : Set α} (h : ∀ (x : α), x sy, y t x y) :
                    theorem sSup_singleton {α : Type u_1} [CompleteSemilatticeSup α] {a : α} :
                    sSup {a} = a
                    class CompleteSemilatticeInf (α : Type u_9) extends PartialOrder , InfSet :
                    Type u_9
                    • le : ααProp
                    • lt : ααProp
                    • le_refl : ∀ (a : α), a a
                    • le_trans : ∀ (a b c : α), a bb ca c
                    • lt_iff_le_not_le : ∀ (a b : α), a < b a b ¬b a
                    • le_antisymm : ∀ (a b : α), a bb aa = b
                    • sInf : Set αα
                    • sInf_le : ∀ (s_1 : Set α) (a : α), a s_1sInf s_1 a

                      Any element of a set is more than the set infimum.

                    • le_sInf : ∀ (s_1 : Set α) (a : α), (∀ (b : α), b s_1a b) → a sInf s_1

                      Any lower bound is less than the set infimum.

                    Note that we rarely use CompleteSemilatticeInf (in fact, any such object is always a CompleteLattice, so it's usually best to start there).

                    Nevertheless it is sometimes a useful intermediate step in constructions.

                    Instances
                      theorem sInf_le {α : Type u_1} [CompleteSemilatticeInf α] {s : Set α} {a : α} :
                      a ssInf s a
                      theorem le_sInf {α : Type u_1} [CompleteSemilatticeInf α] {s : Set α} {a : α} :
                      (∀ (b : α), b sa b) → a sInf s
                      theorem isGLB_sInf {α : Type u_1} [CompleteSemilatticeInf α] (s : Set α) :
                      IsGLB s (sInf s)
                      theorem IsGLB.sInf_eq {α : Type u_1} [CompleteSemilatticeInf α] {s : Set α} {a : α} (h : IsGLB s a) :
                      sInf s = a
                      theorem sInf_le_of_le {α : Type u_1} [CompleteSemilatticeInf α] {s : Set α} {a : α} {b : α} (hb : b s) (h : b a) :
                      sInf s a
                      theorem sInf_le_sInf {α : Type u_1} [CompleteSemilatticeInf α] {s : Set α} {t : Set α} (h : s t) :
                      @[simp]
                      theorem le_sInf_iff {α : Type u_1} [CompleteSemilatticeInf α] {s : Set α} {a : α} :
                      a sInf s ∀ (b : α), b sa b
                      theorem sInf_le_iff {α : Type u_1} [CompleteSemilatticeInf α] {s : Set α} {a : α} :
                      sInf s a ∀ (b : α), b lowerBounds sb a
                      theorem iInf_le_iff {α : Type u_1} {ι : Sort u_5} [CompleteSemilatticeInf α] {a : α} {s : ια} :
                      iInf s a ∀ (b : α), (∀ (i : ι), b s i) → b a
                      theorem sInf_le_sInf_of_forall_exists_le {α : Type u_1} [CompleteSemilatticeInf α] {s : Set α} {t : Set α} (h : ∀ (x : α), x sy, y t y x) :
                      theorem sInf_singleton {α : Type u_1} [CompleteSemilatticeInf α] {a : α} :
                      sInf {a} = a
                      class CompleteLattice (α : Type u_9) extends Lattice , SupSet , InfSet , Top , Bot :
                      Type u_9
                      • sup : ααα
                      • le : ααProp
                      • lt : ααProp
                      • le_refl : ∀ (a : α), a a
                      • le_trans : ∀ (a b c : α), a bb ca c
                      • lt_iff_le_not_le : ∀ (a b : α), a < b a b ¬b a
                      • le_antisymm : ∀ (a b : α), a bb aa = b
                      • le_sup_left : ∀ (a b : α), a a b
                      • le_sup_right : ∀ (a b : α), b a b
                      • sup_le : ∀ (a b c : α), a cb ca b c
                      • inf : ααα
                      • inf_le_left : ∀ (a b : α), a b a
                      • inf_le_right : ∀ (a b : α), a b b
                      • le_inf : ∀ (a b c : α), a ba ca b c
                      • sSup : Set αα
                      • le_sSup : ∀ (s_1 : Set α) (a : α), a s_1a sSup s_1

                        Any element of a set is less than the set supremum.

                      • sSup_le : ∀ (s_1 : Set α) (a : α), (∀ (b : α), b s_1b a) → sSup s_1 a

                        Any upper bound is more than the set supremum.

                      • sInf : Set αα
                      • sInf_le : ∀ (s_1 : Set α) (a : α), a s_1sInf s_1 a

                        Any element of a set is more than the set infimum.

                      • le_sInf : ∀ (s_1 : Set α) (a : α), (∀ (b : α), b s_1a b) → a sInf s_1

                        Any lower bound is less than the set infimum.

                      • top : α
                      • bot : α
                      • le_top : ∀ (x : α), x

                        Any element is less than the top one.

                      • bot_le : ∀ (x : α), x

                        Any element is more than the bottom one.

                      A complete lattice is a bounded lattice which has suprema and infima for every subset.

                      Instances
                        Equations
                        • CompleteLattice.toBoundedOrder = BoundedOrder.mk
                        def completeLatticeOfInf (α : Type u_9) [H1 : PartialOrder α] [H2 : InfSet α] (isGLB_sInf : ∀ (s : Set α), IsGLB s (sInf s)) :

                        Create a CompleteLattice from a PartialOrder and InfSet that returns the greatest lower bound of a set. Usually this constructor provides poor definitional equalities. If other fields are known explicitly, they should be provided; for example, if inf is known explicitly, construct the CompleteLattice instance as

                        instance : CompleteLattice my_T :=
                          { inf := better_inf,
                            le_inf := ...,
                            inf_le_right := ...,
                            inf_le_left := ...
                            -- don't care to fix sup, sSup, bot, top
                            ..completeLatticeOfInf my_T _ }
                        
                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For

                          Any CompleteSemilatticeInf is in fact a CompleteLattice.

                          Note that this construction has bad definitional properties: see the doc-string on completeLatticeOfInf.

                          Equations
                          Instances For
                            def completeLatticeOfSup (α : Type u_9) [H1 : PartialOrder α] [H2 : SupSet α] (isLUB_sSup : ∀ (s : Set α), IsLUB s (sSup s)) :

                            Create a CompleteLattice from a PartialOrder and SupSet that returns the least upper bound of a set. Usually this constructor provides poor definitional equalities. If other fields are known explicitly, they should be provided; for example, if inf is known explicitly, construct the CompleteLattice instance as

                            instance : CompleteLattice my_T :=
                              { inf := better_inf,
                                le_inf := ...,
                                inf_le_right := ...,
                                inf_le_left := ...
                                -- don't care to fix sup, sInf, bot, top
                                ..completeLatticeOfSup my_T _ }
                            
                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For

                              Any CompleteSemilatticeSup is in fact a CompleteLattice.

                              Note that this construction has bad definitional properties: see the doc-string on completeLatticeOfSup.

                              Equations
                              Instances For
                                class CompleteLinearOrder (α : Type u_9) extends CompleteLattice :
                                Type u_9
                                • sup : ααα
                                • le : ααProp
                                • lt : ααProp
                                • le_refl : ∀ (a : α), a a
                                • le_trans : ∀ (a b c : α), a bb ca c
                                • lt_iff_le_not_le : ∀ (a b : α), a < b a b ¬b a
                                • le_antisymm : ∀ (a b : α), a bb aa = b
                                • le_sup_left : ∀ (a b : α), a a b
                                • le_sup_right : ∀ (a b : α), b a b
                                • sup_le : ∀ (a b c : α), a cb ca b c
                                • inf : ααα
                                • inf_le_left : ∀ (a b : α), a b a
                                • inf_le_right : ∀ (a b : α), a b b
                                • le_inf : ∀ (a b c : α), a ba ca b c
                                • sSup : Set αα
                                • le_sSup : ∀ (s_1 : Set α) (a : α), a s_1a sSup s_1
                                • sSup_le : ∀ (s_1 : Set α) (a : α), (∀ (b : α), b s_1b a) → sSup s_1 a
                                • sInf : Set αα
                                • sInf_le : ∀ (s_1 : Set α) (a : α), a s_1sInf s_1 a
                                • le_sInf : ∀ (s_1 : Set α) (a : α), (∀ (b : α), b s_1a b) → a sInf s_1
                                • top : α
                                • bot : α
                                • le_top : ∀ (x : α), x
                                • bot_le : ∀ (x : α), x
                                • le_total : ∀ (a b : α), a b b a

                                  A linear order is total.

                                • decidableLE : DecidableRel fun x x_1 => x x_1

                                  In a linearly ordered type, we assume the order relations are all decidable.

                                • decidableEq : DecidableEq α

                                  In a linearly ordered type, we assume the order relations are all decidable.

                                • decidableLT : DecidableRel fun x x_1 => x < x_1

                                  In a linearly ordered type, we assume the order relations are all decidable.

                                A complete linear order is a linear order whose lattice structure is complete.

                                Instances
                                  Equations
                                  • CompleteLinearOrder.toLinearOrder = LinearOrder.mk (_ : ∀ (a b : α), a b b a) CompleteLinearOrder.decidableLE CompleteLinearOrder.decidableEq CompleteLinearOrder.decidableLT
                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  @[simp]
                                  theorem toDual_sSup {α : Type u_1} [CompleteLattice α] (s : Set α) :
                                  OrderDual.toDual (sSup s) = sInf (OrderDual.ofDual ⁻¹' s)
                                  @[simp]
                                  theorem toDual_sInf {α : Type u_1} [CompleteLattice α] (s : Set α) :
                                  OrderDual.toDual (sInf s) = sSup (OrderDual.ofDual ⁻¹' s)
                                  @[simp]
                                  theorem ofDual_sSup {α : Type u_1} [CompleteLattice α] (s : Set αᵒᵈ) :
                                  OrderDual.ofDual (sSup s) = sInf (OrderDual.toDual ⁻¹' s)
                                  @[simp]
                                  theorem ofDual_sInf {α : Type u_1} [CompleteLattice α] (s : Set αᵒᵈ) :
                                  OrderDual.ofDual (sInf s) = sSup (OrderDual.toDual ⁻¹' s)
                                  @[simp]
                                  theorem toDual_iSup {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] (f : ια) :
                                  OrderDual.toDual (⨆ (i : ι), f i) = ⨅ (i : ι), OrderDual.toDual (f i)
                                  @[simp]
                                  theorem toDual_iInf {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] (f : ια) :
                                  OrderDual.toDual (⨅ (i : ι), f i) = ⨆ (i : ι), OrderDual.toDual (f i)
                                  @[simp]
                                  theorem ofDual_iSup {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] (f : ιαᵒᵈ) :
                                  OrderDual.ofDual (⨆ (i : ι), f i) = ⨅ (i : ι), OrderDual.ofDual (f i)
                                  @[simp]
                                  theorem ofDual_iInf {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] (f : ιαᵒᵈ) :
                                  OrderDual.ofDual (⨅ (i : ι), f i) = ⨆ (i : ι), OrderDual.ofDual (f i)
                                  theorem sInf_le_sSup {α : Type u_1} [CompleteLattice α] {s : Set α} (hs : Set.Nonempty s) :
                                  theorem sSup_union {α : Type u_1} [CompleteLattice α] {s : Set α} {t : Set α} :
                                  sSup (s t) = sSup s sSup t
                                  theorem sInf_union {α : Type u_1} [CompleteLattice α] {s : Set α} {t : Set α} :
                                  sInf (s t) = sInf s sInf t
                                  theorem sSup_inter_le {α : Type u_1} [CompleteLattice α] {s : Set α} {t : Set α} :
                                  sSup (s t) sSup s sSup t
                                  theorem le_sInf_inter {α : Type u_1} [CompleteLattice α] {s : Set α} {t : Set α} :
                                  sInf s sInf t sInf (s t)
                                  @[simp]
                                  theorem sSup_empty {α : Type u_1} [CompleteLattice α] :
                                  @[simp]
                                  theorem sInf_empty {α : Type u_1} [CompleteLattice α] :
                                  @[simp]
                                  theorem sSup_univ {α : Type u_1} [CompleteLattice α] :
                                  sSup Set.univ =
                                  @[simp]
                                  theorem sInf_univ {α : Type u_1} [CompleteLattice α] :
                                  sInf Set.univ =
                                  @[simp]
                                  theorem sSup_insert {α : Type u_1} [CompleteLattice α] {a : α} {s : Set α} :
                                  sSup (insert a s) = a sSup s
                                  @[simp]
                                  theorem sInf_insert {α : Type u_1} [CompleteLattice α] {a : α} {s : Set α} :
                                  sInf (insert a s) = a sInf s
                                  theorem sSup_le_sSup_of_subset_insert_bot {α : Type u_1} [CompleteLattice α] {s : Set α} {t : Set α} (h : s insert t) :
                                  theorem sInf_le_sInf_of_subset_insert_top {α : Type u_1} [CompleteLattice α] {s : Set α} {t : Set α} (h : s insert t) :
                                  @[simp]
                                  theorem sSup_diff_singleton_bot {α : Type u_1} [CompleteLattice α] (s : Set α) :
                                  sSup (s \ {}) = sSup s
                                  @[simp]
                                  theorem sInf_diff_singleton_top {α : Type u_1} [CompleteLattice α] (s : Set α) :
                                  sInf (s \ {}) = sInf s
                                  theorem sSup_pair {α : Type u_1} [CompleteLattice α] {a : α} {b : α} :
                                  sSup {a, b} = a b
                                  theorem sInf_pair {α : Type u_1} [CompleteLattice α] {a : α} {b : α} :
                                  sInf {a, b} = a b
                                  @[simp]
                                  theorem sSup_eq_bot {α : Type u_1} [CompleteLattice α] {s : Set α} :
                                  sSup s = ∀ (a : α), a sa =
                                  @[simp]
                                  theorem sInf_eq_top {α : Type u_1} [CompleteLattice α] {s : Set α} :
                                  sInf s = ∀ (a : α), a sa =
                                  theorem eq_singleton_bot_of_sSup_eq_bot_of_nonempty {α : Type u_1} [CompleteLattice α] {s : Set α} (h_sup : sSup s = ) (hne : Set.Nonempty s) :
                                  s = {}
                                  theorem sSup_eq_of_forall_le_of_forall_lt_exists_gt {α : Type u_1} [CompleteLattice α] {s : Set α} {b : α} (h₁ : ∀ (a : α), a sa b) (h₂ : ∀ (w : α), w < ba, a s w < a) :
                                  sSup s = b

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

                                  theorem sInf_eq_of_forall_ge_of_forall_gt_exists_lt {α : Type u_1} [CompleteLattice α] {s : Set α} {b : α} :
                                  (∀ (a : α), a sb a) → (∀ (w : α), b < wa, a s a < w) → sInf s = b

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

                                  theorem lt_sSup_iff {α : Type u_1} [CompleteLinearOrder α] {s : Set α} {b : α} :
                                  b < sSup s a, a s b < a
                                  theorem sInf_lt_iff {α : Type u_1} [CompleteLinearOrder α] {s : Set α} {b : α} :
                                  sInf s < b a, a s a < b
                                  theorem sSup_eq_top {α : Type u_1} [CompleteLinearOrder α] {s : Set α} :
                                  sSup s = ∀ (b : α), b < a, a s b < a
                                  theorem sInf_eq_bot {α : Type u_1} [CompleteLinearOrder α] {s : Set α} :
                                  sInf s = ∀ (b : α), b > a, a s a < b
                                  theorem lt_iSup_iff {α : Type u_1} {ι : Sort u_5} [CompleteLinearOrder α] {a : α} {f : ια} :
                                  a < iSup f i, a < f i
                                  theorem iInf_lt_iff {α : Type u_1} {ι : Sort u_5} [CompleteLinearOrder α] {a : α} {f : ια} :
                                  iInf f < a i, f i < a
                                  theorem sSup_range {α : Type u_1} {ι : Sort u_5} [SupSet α] {f : ια} :
                                  theorem sSup_eq_iSup' {α : Type u_1} [SupSet α] (s : Set α) :
                                  sSup s = ⨆ (a : s), a
                                  theorem iSup_congr {α : Type u_1} {ι : Sort u_5} [SupSet α] {f : ια} {g : ια} (h : ∀ (i : ι), f i = g i) :
                                  ⨆ (i : ι), f i = ⨆ (i : ι), g i
                                  theorem Function.Surjective.iSup_comp {α : Type u_1} {ι : Sort u_5} {ι' : Sort u_6} [SupSet α] {f : ιι'} (hf : Function.Surjective f) (g : ι'α) :
                                  ⨆ (x : ι), g (f x) = ⨆ (y : ι'), g y
                                  theorem Equiv.iSup_comp {α : Type u_1} {ι : Sort u_5} {ι' : Sort u_6} [SupSet α] {g : ι'α} (e : ι ι') :
                                  ⨆ (x : ι), g (e x) = ⨆ (y : ι'), g y
                                  theorem Function.Surjective.iSup_congr {α : Type u_1} {ι : Sort u_5} {ι' : Sort u_6} [SupSet α] {f : ια} {g : ι'α} (h : ιι') (h1 : Function.Surjective h) (h2 : ∀ (x : ι), g (h x) = f x) :
                                  ⨆ (x : ι), f x = ⨆ (y : ι'), g y
                                  theorem Equiv.iSup_congr {α : Type u_1} {ι : Sort u_5} {ι' : Sort u_6} [SupSet α] {f : ια} {g : ι'α} (e : ι ι') (h : ∀ (x : ι), g (e x) = f x) :
                                  ⨆ (x : ι), f x = ⨆ (y : ι'), g y
                                  theorem iSup_congr_Prop {α : Type u_1} [SupSet α] {p : Prop} {q : Prop} {f₁ : pα} {f₂ : qα} (pq : p q) (f : ∀ (x : q), f₁ (pq.mpr x) = f₂ x) :
                                  iSup f₁ = iSup f₂
                                  theorem iSup_plift_up {α : Type u_1} {ι : Sort u_5} [SupSet α] (f : PLift ια) :
                                  ⨆ (i : ι), f { down := i } = ⨆ (i : PLift ι), f i
                                  theorem iSup_plift_down {α : Type u_1} {ι : Sort u_5} [SupSet α] (f : ια) :
                                  ⨆ (i : PLift ι), f i.down = ⨆ (i : ι), f i
                                  theorem iSup_range' {α : Type u_1} {β : Type u_2} {ι : Sort u_5} [SupSet α] (g : βα) (f : ιβ) :
                                  ⨆ (b : ↑(Set.range f)), g b = ⨆ (i : ι), g (f i)
                                  theorem sSup_image' {α : Type u_1} {β : Type u_2} [SupSet α] {s : Set β} {f : βα} :
                                  sSup (f '' s) = ⨆ (a : s), f a
                                  theorem sInf_range {α : Type u_1} {ι : Sort u_5} [InfSet α] {f : ια} :
                                  theorem sInf_eq_iInf' {α : Type u_1} [InfSet α] (s : Set α) :
                                  sInf s = ⨅ (a : s), a
                                  theorem iInf_congr {α : Type u_1} {ι : Sort u_5} [InfSet α] {f : ια} {g : ια} (h : ∀ (i : ι), f i = g i) :
                                  ⨅ (i : ι), f i = ⨅ (i : ι), g i
                                  theorem Function.Surjective.iInf_comp {α : Type u_1} {ι : Sort u_5} {ι' : Sort u_6} [InfSet α] {f : ιι'} (hf : Function.Surjective f) (g : ι'α) :
                                  ⨅ (x : ι), g (f x) = ⨅ (y : ι'), g y
                                  theorem Equiv.iInf_comp {α : Type u_1} {ι : Sort u_5} {ι' : Sort u_6} [InfSet α] {g : ι'α} (e : ι ι') :
                                  ⨅ (x : ι), g (e x) = ⨅ (y : ι'), g y
                                  theorem Function.Surjective.iInf_congr {α : Type u_1} {ι : Sort u_5} {ι' : Sort u_6} [InfSet α] {f : ια} {g : ι'α} (h : ιι') (h1 : Function.Surjective h) (h2 : ∀ (x : ι), g (h x) = f x) :
                                  ⨅ (x : ι), f x = ⨅ (y : ι'), g y
                                  theorem Equiv.iInf_congr {α : Type u_1} {ι : Sort u_5} {ι' : Sort u_6} [InfSet α] {f : ια} {g : ι'α} (e : ι ι') (h : ∀ (x : ι), g (e x) = f x) :
                                  ⨅ (x : ι), f x = ⨅ (y : ι'), g y
                                  theorem iInf_congr_Prop {α : Type u_1} [InfSet α] {p : Prop} {q : Prop} {f₁ : pα} {f₂ : qα} (pq : p q) (f : ∀ (x : q), f₁ (pq.mpr x) = f₂ x) :
                                  iInf f₁ = iInf f₂
                                  theorem iInf_plift_up {α : Type u_1} {ι : Sort u_5} [InfSet α] (f : PLift ια) :
                                  ⨅ (i : ι), f { down := i } = ⨅ (i : PLift ι), f i
                                  theorem iInf_plift_down {α : Type u_1} {ι : Sort u_5} [InfSet α] (f : ια) :
                                  ⨅ (i : PLift ι), f i.down = ⨅ (i : ι), f i
                                  theorem iInf_range' {α : Type u_1} {β : Type u_2} {ι : Sort u_5} [InfSet α] (g : βα) (f : ιβ) :
                                  ⨅ (b : ↑(Set.range f)), g b = ⨅ (i : ι), g (f i)
                                  theorem sInf_image' {α : Type u_1} {β : Type u_2} [InfSet α] {s : Set β} {f : βα} :
                                  sInf (f '' s) = ⨅ (a : s), f a
                                  theorem le_iSup {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] (f : ια) (i : ι) :
                                  f i iSup f
                                  theorem iInf_le {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] (f : ια) (i : ι) :
                                  iInf f f i
                                  theorem le_iSup' {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] (f : ια) (i : ι) :
                                  f i iSup f
                                  theorem iInf_le' {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] (f : ια) (i : ι) :
                                  iInf f f i
                                  theorem isLUB_iSup {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {f : ια} :
                                  IsLUB (Set.range f) (⨆ (j : ι), f j)
                                  theorem isGLB_iInf {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {f : ια} :
                                  IsGLB (Set.range f) (⨅ (j : ι), f j)
                                  theorem IsLUB.iSup_eq {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {f : ια} {a : α} (h : IsLUB (Set.range f) a) :
                                  ⨆ (j : ι), f j = a
                                  theorem IsGLB.iInf_eq {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {f : ια} {a : α} (h : IsGLB (Set.range f) a) :
                                  ⨅ (j : ι), f j = a
                                  theorem le_iSup_of_le {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {f : ια} {a : α} (i : ι) (h : a f i) :
                                  a iSup f
                                  theorem iInf_le_of_le {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {f : ια} {a : α} (i : ι) (h : f i a) :
                                  iInf f a
                                  theorem le_iSup₂ {α : Type u_1} {ι : Sort u_5} {κ : ιSort u_7} [CompleteLattice α] {f : (i : ι) → κ iα} (i : ι) (j : κ i) :
                                  f i j ⨆ (i : ι) (j : κ i), f i j
                                  theorem iInf₂_le {α : Type u_1} {ι : Sort u_5} {κ : ιSort u_7} [CompleteLattice α] {f : (i : ι) → κ iα} (i : ι) (j : κ i) :
                                  ⨅ (i : ι) (j : κ i), f i j f i j
                                  theorem le_iSup₂_of_le {α : Type u_1} {ι : Sort u_5} {κ : ιSort u_7} [CompleteLattice α] {a : α} {f : (i : ι) → κ iα} (i : ι) (j : κ i) (h : a f i j) :
                                  a ⨆ (i : ι) (j : κ i), f i j
                                  theorem iInf₂_le_of_le {α : Type u_1} {ι : Sort u_5} {κ : ιSort u_7} [CompleteLattice α] {a : α} {f : (i : ι) → κ iα} (i : ι) (j : κ i) (h : f i j a) :
                                  ⨅ (i : ι) (j : κ i), f i j a
                                  theorem iSup_le {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {f : ια} {a : α} (h : ∀ (i : ι), f i a) :
                                  iSup f a
                                  theorem le_iInf {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {f : ια} {a : α} (h : ∀ (i : ι), a f i) :
                                  a iInf f
                                  theorem iSup₂_le {α : Type u_1} {ι : Sort u_5} {κ : ιSort u_7} [CompleteLattice α] {a : α} {f : (i : ι) → κ iα} (h : ∀ (i : ι) (j : κ i), f i j a) :
                                  ⨆ (i : ι) (j : κ i), f i j a
                                  theorem le_iInf₂ {α : Type u_1} {ι : Sort u_5} {κ : ιSort u_7} [CompleteLattice α] {a : α} {f : (i : ι) → κ iα} (h : ∀ (i : ι) (j : κ i), a f i j) :
                                  a ⨅ (i : ι) (j : κ i), f i j
                                  theorem iSup₂_le_iSup {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] (κ : ιSort u_9) (f : ια) :
                                  ⨆ (i : ι) (x : κ i), f i ⨆ (i : ι), f i
                                  theorem iInf_le_iInf₂ {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] (κ : ιSort u_9) (f : ια) :
                                  ⨅ (i : ι), f i ⨅ (i : ι) (x : κ i), f i
                                  theorem iSup_mono {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {f : ια} {g : ια} (h : ∀ (i : ι), f i g i) :
                                  theorem iInf_mono {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {f : ια} {g : ια} (h : ∀ (i : ι), f i g i) :
                                  theorem iSup₂_mono {α : Type u_1} {ι : Sort u_5} {κ : ιSort u_7} [CompleteLattice α] {f : (i : ι) → κ iα} {g : (i : ι) → κ iα} (h : ∀ (i : ι) (j : κ i), f i j g i j) :
                                  ⨆ (i : ι) (j : κ i), f i j ⨆ (i : ι) (j : κ i), g i j
                                  theorem iInf₂_mono {α : Type u_1} {ι : Sort u_5} {κ : ιSort u_7} [CompleteLattice α] {f : (i : ι) → κ iα} {g : (i : ι) → κ iα} (h : ∀ (i : ι) (j : κ i), f i j g i j) :
                                  ⨅ (i : ι) (j : κ i), f i j ⨅ (i : ι) (j : κ i), g i j
                                  theorem iSup_mono' {α : Type u_1} {ι : Sort u_5} {ι' : Sort u_6} [CompleteLattice α] {f : ια} {g : ι'α} (h : ∀ (i : ι), i', f i g i') :
                                  theorem iInf_mono' {α : Type u_1} {ι : Sort u_5} {ι' : Sort u_6} [CompleteLattice α] {f : ια} {g : ι'α} (h : ∀ (i' : ι'), i, f i g i') :
                                  theorem iSup₂_mono' {α : Type u_1} {ι : Sort u_5} {ι' : Sort u_6} {κ : ιSort u_7} {κ' : ι'Sort u_8} [CompleteLattice α] {f : (i : ι) → κ iα} {g : (i' : ι') → κ' i'α} (h : ∀ (i : ι) (j : κ i), i' j', f i j g i' j') :
                                  ⨆ (i : ι) (j : κ i), f i j ⨆ (i : ι') (j : κ' i), g i j
                                  theorem iInf₂_mono' {α : Type u_1} {ι : Sort u_5} {ι' : Sort u_6} {κ : ιSort u_7} {κ' : ι'Sort u_8} [CompleteLattice α] {f : (i : ι) → κ iα} {g : (i' : ι') → κ' i'α} (h : ∀ (i : ι') (j : κ' i), i' j', f i' j' g i j) :
                                  ⨅ (i : ι) (j : κ i), f i j ⨅ (i : ι') (j : κ' i), g i j
                                  theorem iSup_const_mono {α : Type u_1} {ι : Sort u_5} {ι' : Sort u_6} [CompleteLattice α] {a : α} (h : ιι') :
                                  ⨆ (x : ι), a ⨆ (x : ι'), a
                                  theorem iInf_const_mono {α : Type u_1} {ι : Sort u_5} {ι' : Sort u_6} [CompleteLattice α] {a : α} (h : ι'ι) :
                                  ⨅ (x : ι), a ⨅ (x : ι'), a
                                  theorem iSup_iInf_le_iInf_iSup {α : Type u_1} {ι : Sort u_5} {ι' : Sort u_6} [CompleteLattice α] (f : ιι'α) :
                                  ⨆ (i : ι), ⨅ (j : ι'), f i j ⨅ (j : ι'), ⨆ (i : ι), f i j
                                  theorem biSup_mono {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {f : ια} {p : ιProp} {q : ιProp} (hpq : (i : ι) → p iq i) :
                                  ⨆ (i : ι) (x : p i), f i ⨆ (i : ι) (x : q i), f i
                                  theorem biInf_mono {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {f : ια} {p : ιProp} {q : ιProp} (hpq : (i : ι) → p iq i) :
                                  ⨅ (i : ι) (x : q i), f i ⨅ (i : ι) (x : p i), f i
                                  @[simp]
                                  theorem iSup_le_iff {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {f : ια} {a : α} :
                                  iSup f a ∀ (i : ι), f i a
                                  @[simp]
                                  theorem le_iInf_iff {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {f : ια} {a : α} :
                                  a iInf f ∀ (i : ι), a f i
                                  theorem iSup₂_le_iff {α : Type u_1} {ι : Sort u_5} {κ : ιSort u_7} [CompleteLattice α] {a : α} {f : (i : ι) → κ iα} :
                                  ⨆ (i : ι) (j : κ i), f i j a ∀ (i : ι) (j : κ i), f i j a
                                  theorem le_iInf₂_iff {α : Type u_1} {ι : Sort u_5} {κ : ιSort u_7} [CompleteLattice α] {a : α} {f : (i : ι) → κ iα} :
                                  a ⨅ (i : ι) (j : κ i), f i j ∀ (i : ι) (j : κ i), a f i j
                                  theorem iSup_lt_iff {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {f : ια} {a : α} :
                                  iSup f < a b, b < a ∀ (i : ι), f i b
                                  theorem lt_iInf_iff {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {f : ια} {a : α} :
                                  a < iInf f b, a < b ∀ (i : ι), b f i
                                  theorem sSup_eq_iSup {α : Type u_1} [CompleteLattice α] {s : Set α} :
                                  sSup s = ⨆ (a : α) (_ : a s), a
                                  theorem sInf_eq_iInf {α : Type u_1} [CompleteLattice α] {s : Set α} :
                                  sInf s = ⨅ (a : α) (_ : a s), a
                                  theorem Monotone.le_map_iSup {α : Type u_1} {β : Type u_2} {ι : Sort u_5} [CompleteLattice α] {s : ια} [CompleteLattice β] {f : αβ} (hf : Monotone f) :
                                  ⨆ (i : ι), f (s i) f (iSup s)
                                  theorem Antitone.le_map_iInf {α : Type u_1} {β : Type u_2} {ι : Sort u_5} [CompleteLattice α] {s : ια} [CompleteLattice β] {f : αβ} (hf : Antitone f) :
                                  ⨆ (i : ι), f (s i) f (iInf s)
                                  theorem Monotone.le_map_iSup₂ {α : Type u_1} {β : Type u_2} {ι : Sort u_5} {κ : ιSort u_7} [CompleteLattice α] [CompleteLattice β] {f : αβ} (hf : Monotone f) (s : (i : ι) → κ iα) :
                                  ⨆ (i : ι) (j : κ i), f (s i j) f (⨆ (i : ι) (j : κ i), s i j)
                                  theorem Antitone.le_map_iInf₂ {α : Type u_1} {β : Type u_2} {ι : Sort u_5} {κ : ιSort u_7} [CompleteLattice α] [CompleteLattice β] {f : αβ} (hf : Antitone f) (s : (i : ι) → κ iα) :
                                  ⨆ (i : ι) (j : κ i), f (s i j) f (⨅ (i : ι) (j : κ i), s i j)
                                  theorem Monotone.le_map_sSup {α : Type u_1} {β : Type u_2} [CompleteLattice α] [CompleteLattice β] {s : Set α} {f : αβ} (hf : Monotone f) :
                                  ⨆ (a : α) (_ : a s), f a f (sSup s)
                                  theorem Antitone.le_map_sInf {α : Type u_1} {β : Type u_2} [CompleteLattice α] [CompleteLattice β] {s : Set α} {f : αβ} (hf : Antitone f) :
                                  ⨆ (a : α) (_ : a s), f a f (sInf s)
                                  theorem OrderIso.map_iSup {α : Type u_1} {β : Type u_2} {ι : Sort u_5} [CompleteLattice α] [CompleteLattice β] (f : α ≃o β) (x : ια) :
                                  f (⨆ (i : ι), x i) = ⨆ (i : ι), f (x i)
                                  theorem OrderIso.map_iInf {α : Type u_1} {β : Type u_2} {ι : Sort u_5} [CompleteLattice α] [CompleteLattice β] (f : α ≃o β) (x : ια) :
                                  f (⨅ (i : ι), x i) = ⨅ (i : ι), f (x i)
                                  theorem OrderIso.map_sSup {α : Type u_1} {β : Type u_2} [CompleteLattice α] [CompleteLattice β] (f : α ≃o β) (s : Set α) :
                                  f (sSup s) = ⨆ (a : α) (_ : a s), f a
                                  theorem OrderIso.map_sInf {α : Type u_1} {β : Type u_2} [CompleteLattice α] [CompleteLattice β] (f : α ≃o β) (s : Set α) :
                                  f (sInf s) = ⨅ (a : α) (_ : a s), f a
                                  theorem iSup_comp_le {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {ι' : Sort u_9} (f : ι'α) (g : ιι') :
                                  ⨆ (x : ι), f (g x) ⨆ (y : ι'), f y
                                  theorem le_iInf_comp {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {ι' : Sort u_9} (f : ι'α) (g : ιι') :
                                  ⨅ (y : ι'), f y ⨅ (x : ι), f (g x)
                                  theorem Monotone.iSup_comp_eq {α : Type u_1} {β : Type u_2} {ι : Sort u_5} [CompleteLattice α] [Preorder β] {f : βα} (hf : Monotone f) {s : ιβ} (hs : ∀ (x : β), i, x s i) :
                                  ⨆ (x : ι), f (s x) = ⨆ (y : β), f y
                                  theorem Monotone.iInf_comp_eq {α : Type u_1} {β : Type u_2} {ι : Sort u_5} [CompleteLattice α] [Preorder β] {f : βα} (hf : Monotone f) {s : ιβ} (hs : ∀ (x : β), i, s i x) :
                                  ⨅ (x : ι), f (s x) = ⨅ (y : β), f y
                                  theorem Antitone.map_iSup_le {α : Type u_1} {β : Type u_2} {ι : Sort u_5} [CompleteLattice α] {s : ια} [CompleteLattice β] {f : αβ} (hf : Antitone f) :
                                  f (iSup s) ⨅ (i : ι), f (s i)
                                  theorem Monotone.map_iInf_le {α : Type u_1} {β : Type u_2} {ι : Sort u_5} [CompleteLattice α] {s : ια} [CompleteLattice β] {f : αβ} (hf : Monotone f) :
                                  f (iInf s) ⨅ (i : ι), f (s i)
                                  theorem Antitone.map_iSup₂_le {α : Type u_1} {β : Type u_2} {ι : Sort u_5} {κ : ιSort u_7} [CompleteLattice α] [CompleteLattice β] {f : αβ} (hf : Antitone f) (s : (i : ι) → κ iα) :
                                  f (⨆ (i : ι) (j : κ i), s i j) ⨅ (i : ι) (j : κ i), f (s i j)
                                  theorem Monotone.map_iInf₂_le {α : Type u_1} {β : Type u_2} {ι : Sort u_5} {κ : ιSort u_7} [CompleteLattice α] [CompleteLattice β] {f : αβ} (hf : Monotone f) (s : (i : ι) → κ iα) :
                                  f (⨅ (i : ι) (j : κ i), s i j) ⨅ (i : ι) (j : κ i), f (s i j)
                                  theorem Antitone.map_sSup_le {α : Type u_1} {β : Type u_2} [CompleteLattice α] [CompleteLattice β] {s : Set α} {f : αβ} (hf : Antitone f) :
                                  f (sSup s) ⨅ (a : α) (_ : a s), f a
                                  theorem Monotone.map_sInf_le {α : Type u_1} {β : Type u_2} [CompleteLattice α] [CompleteLattice β] {s : Set α} {f : αβ} (hf : Monotone f) :
                                  f (sInf s) ⨅ (a : α) (_ : a s), f a
                                  theorem iSup_const_le {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {a : α} :
                                  ⨆ (x : ι), a a
                                  theorem le_iInf_const {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {a : α} :
                                  a ⨅ (x : ι), a
                                  theorem iSup_const {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {a : α} [Nonempty ι] :
                                  ⨆ (x : ι), a = a
                                  theorem iInf_const {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {a : α} [Nonempty ι] :
                                  ⨅ (x : ι), a = a
                                  @[simp]
                                  theorem iSup_bot {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] :
                                  ⨆ (x : ι), =
                                  @[simp]
                                  theorem iInf_top {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] :
                                  ⨅ (x : ι), =
                                  @[simp]
                                  theorem iSup_eq_bot {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {s : ια} :
                                  iSup s = ∀ (i : ι), s i =
                                  @[simp]
                                  theorem iInf_eq_top {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {s : ια} :
                                  iInf s = ∀ (i : ι), s i =
                                  theorem iSup₂_eq_bot {α : Type u_1} {ι : Sort u_5} {κ : ιSort u_7} [CompleteLattice α] {f : (i : ι) → κ iα} :
                                  ⨆ (i : ι) (j : κ i), f i j = ∀ (i : ι) (j : κ i), f i j =
                                  theorem iInf₂_eq_top {α : Type u_1} {ι : Sort u_5} {κ : ιSort u_7} [CompleteLattice α] {f : (i : ι) → κ iα} :
                                  ⨅ (i : ι) (j : κ i), f i j = ∀ (i : ι) (j : κ i), f i j =
                                  @[simp]
                                  theorem iSup_pos {α : Type u_1} [CompleteLattice α] {p : Prop} {f : pα} (hp : p) :
                                  ⨆ (h : p), f h = f hp
                                  @[simp]
                                  theorem iInf_pos {α : Type u_1} [CompleteLattice α] {p : Prop} {f : pα} (hp : p) :
                                  ⨅ (h : p), f h = f hp
                                  @[simp]
                                  theorem iSup_neg {α : Type u_1} [CompleteLattice α] {p : Prop} {f : pα} (hp : ¬p) :
                                  ⨆ (h : p), f h =
                                  @[simp]
                                  theorem iInf_neg {α : Type u_1} [CompleteLattice α] {p : Prop} {f : pα} (hp : ¬p) :
                                  ⨅ (h : p), f h =
                                  theorem iSup_eq_of_forall_le_of_forall_lt_exists_gt {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {b : α} {f : ια} (h₁ : ∀ (i : ι), f i b) (h₂ : ∀ (w : α), w < bi, 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. See ciSup_eq_of_forall_le_of_forall_lt_exists_gt for a version in conditionally complete lattices.

                                  theorem iInf_eq_of_forall_ge_of_forall_gt_exists_lt {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {f : ια} {b : α} :
                                  (∀ (i : ι), b f i) → (∀ (w : α), b < wi, 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 ciInf_eq_of_forall_ge_of_forall_gt_exists_lt for a version in conditionally complete lattices.

                                  theorem iSup_eq_dif {α : Type u_1} [CompleteLattice α] {p : Prop} [Decidable p] (a : pα) :
                                  ⨆ (h : p), a h = if h : p then a h else
                                  theorem iSup_eq_if {α : Type u_1} [CompleteLattice α] {p : Prop} [Decidable p] (a : α) :
                                  ⨆ (x : p), a = if p then a else
                                  theorem iInf_eq_dif {α : Type u_1} [CompleteLattice α] {p : Prop} [Decidable p] (a : pα) :
                                  ⨅ (h : p), a h = if h : p then a h else
                                  theorem iInf_eq_if {α : Type u_1} [CompleteLattice α] {p : Prop} [Decidable p] (a : α) :
                                  ⨅ (x : p), a = if p then a else
                                  theorem iSup_comm {α : Type u_1} {ι : Sort u_5} {ι' : Sort u_6} [CompleteLattice α] {f : ιι'α} :
                                  ⨆ (i : ι) (j : ι'), f i j = ⨆ (j : ι') (i : ι), f i j
                                  theorem iInf_comm {α : Type u_1} {ι : Sort u_5} {ι' : Sort u_6} [CompleteLattice α] {f : ιι'α} :
                                  ⨅ (i : ι) (j : ι'), f i j = ⨅ (j : ι') (i : ι), f i j
                                  theorem iSup₂_comm {α : Type u_1} [CompleteLattice α] {ι₁ : Sort u_9} {ι₂ : Sort u_10} {κ₁ : ι₁Sort u_11} {κ₂ : ι₂Sort u_12} (f : (i₁ : ι₁) → κ₁ i₁(i₂ : ι₂) → κ₂ i₂α) :
                                  ⨆ (i₁ : ι₁) (j₁ : κ₁ i₁) (i₂ : ι₂) (j₂ : κ₂ i₂), f i₁ j₁ i₂ j₂ = ⨆ (i₂ : ι₂) (j₂ : κ₂ i₂) (i₁ : ι₁) (j₁ : κ₁ i₁), f i₁ j₁ i₂ j₂
                                  theorem iInf₂_comm {α : Type u_1} [CompleteLattice α] {ι₁ : Sort u_9} {ι₂ : Sort u_10} {κ₁ : ι₁Sort u_11} {κ₂ : ι₂Sort u_12} (f : (i₁ : ι₁) → κ₁ i₁(i₂ : ι₂) → κ₂ i₂α) :
                                  ⨅ (i₁ : ι₁) (j₁ : κ₁ i₁) (i₂ : ι₂) (j₂ : κ₂ i₂), f i₁ j₁ i₂ j₂ = ⨅ (i₂ : ι₂) (j₂ : κ₂ i₂) (i₁ : ι₁) (j₁ : κ₁ i₁), f i₁ j₁ i₂ j₂
                                  @[simp]
                                  theorem iSup_iSup_eq_left {α : Type u_1} {β : Type u_2} [CompleteLattice α] {b : β} {f : (x : β) → x = bα} :
                                  ⨆ (x : β) (h : x = b), f x h = f b (_ : b = b)
                                  @[simp]
                                  theorem iInf_iInf_eq_left {α : Type u_1} {β : Type u_2} [CompleteLattice α] {b : β} {f : (x : β) → x = bα} :
                                  ⨅ (x : β) (h : x = b), f x h = f b (_ : b = b)
                                  @[simp]
                                  theorem iSup_iSup_eq_right {α : Type u_1} {β : Type u_2} [CompleteLattice α] {b : β} {f : (x : β) → b = xα} :
                                  ⨆ (x : β) (h : b = x), f x h = f b (_ : b = b)
                                  @[simp]
                                  theorem iInf_iInf_eq_right {α : Type u_1} {β : Type u_2} [CompleteLattice α] {b : β} {f : (x : β) → b = xα} :
                                  ⨅ (x : β) (h : b = x), f x h = f b (_ : b = b)
                                  theorem iSup_subtype {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {p : ιProp} {f : Subtype pα} :
                                  iSup f = ⨆ (i : ι) (h : p i), f { val := i, property := h }
                                  theorem iInf_subtype {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {p : ιProp} {f : Subtype pα} :
                                  iInf f = ⨅ (i : ι) (h : p i), f { val := i, property := h }
                                  theorem iSup_subtype' {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {p : ιProp} {f : (i : ι) → p iα} :
                                  ⨆ (i : ι) (h : p i), f i h = ⨆ (x : Subtype p), f (x) x.property
                                  theorem iInf_subtype' {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {p : ιProp} {f : (i : ι) → p iα} :
                                  ⨅ (i : ι) (h : p i), f i h = ⨅ (x : Subtype p), f (x) x.property
                                  theorem iSup_subtype'' {α : Type u_1} [CompleteLattice α] {ι : Type u_9} (s : Set ι) (f : ια) :
                                  ⨆ (i : s), f i = ⨆ (t : ι) (_ : t s), f t
                                  theorem iInf_subtype'' {α : Type u_1} [CompleteLattice α] {ι : Type u_9} (s : Set ι) (f : ια) :
                                  ⨅ (i : s), f i = ⨅ (t : ι) (_ : t s), f t
                                  theorem biSup_const {α : Type u_1} [CompleteLattice α] {ι : Type u_9} {a : α} {s : Set ι} (hs : Set.Nonempty s) :
                                  ⨆ (i : ι) (_ : i s), a = a
                                  theorem biInf_const {α : Type u_1} [CompleteLattice α] {ι : Type u_9} {a : α} {s : Set ι} (hs : Set.Nonempty s) :
                                  ⨅ (i : ι) (_ : i s), a = a
                                  theorem iSup_sup_eq {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {f : ια} {g : ια} :
                                  ⨆ (x : ι), f x g x = (⨆ (x : ι), f x) ⨆ (x : ι), g x
                                  theorem iInf_inf_eq {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {f : ια} {g : ια} :
                                  ⨅ (x : ι), f x g x = (⨅ (x : ι), f x) ⨅ (x : ι), g x
                                  theorem iSup_sup {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] [Nonempty ι] {f : ια} {a : α} :
                                  (⨆ (x : ι), f x) a = ⨆ (x : ι), f x a
                                  theorem iInf_inf {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] [Nonempty ι] {f : ια} {a : α} :
                                  (⨅ (x : ι), f x) a = ⨅ (x : ι), f x a
                                  theorem sup_iSup {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] [Nonempty ι] {f : ια} {a : α} :
                                  a ⨆ (x : ι), f x = ⨆ (x : ι), a f x
                                  theorem inf_iInf {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] [Nonempty ι] {f : ια} {a : α} :
                                  a ⨅ (x : ι), f x = ⨅ (x : ι), a f x
                                  theorem biSup_sup {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {p : ιProp} {f : (i : ι) → p iα} {a : α} (h : i, p i) :
                                  (⨆ (i : ι) (h : p i), f i h) a = ⨆ (i : ι) (h : p i), f i h a
                                  theorem sup_biSup {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {p : ιProp} {f : (i : ι) → p iα} {a : α} (h : i, p i) :
                                  a ⨆ (i : ι) (h : p i), f i h = ⨆ (i : ι) (h : p i), a f i h
                                  theorem biInf_inf {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {p : ιProp} {f : (i : ι) → p iα} {a : α} (h : i, p i) :
                                  (⨅ (i : ι) (h : p i), f i h) a = ⨅ (i : ι) (h : p i), f i h a
                                  theorem inf_biInf {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {p : ιProp} {f : (i : ι) → p iα} {a : α} (h : i, p i) :
                                  a ⨅ (i : ι) (h : p i), f i h = ⨅ (i : ι) (h : p i), a f i h

                                  iSup and iInf under Prop #

                                  theorem iSup_false {α : Type u_1} [CompleteLattice α] {s : Falseα} :
                                  theorem iInf_false {α : Type u_1} [CompleteLattice α] {s : Falseα} :
                                  theorem iSup_true {α : Type u_1} [CompleteLattice α] {s : Trueα} :
                                  theorem iInf_true {α : Type u_1} [CompleteLattice α] {s : Trueα} :
                                  @[simp]
                                  theorem iSup_exists {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {p : ιProp} {f : Exists pα} :
                                  ⨆ (x : Exists p), f x = ⨆ (i : ι) (h : p i), f (_ : Exists p)
                                  @[simp]
                                  theorem iInf_exists {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] {p : ιProp} {f : Exists pα} :
                                  ⨅ (x : Exists p), f x = ⨅ (i : ι) (h : p i), f (_ : Exists p)
                                  theorem iSup_and {α : Type u_1} [CompleteLattice α] {p : Prop} {q : Prop} {s : p qα} :
                                  iSup s = ⨆ (h₁ : p) (h₂ : q), s (_ : p q)
                                  theorem iInf_and {α : Type u_1} [CompleteLattice α] {p : Prop} {q : Prop} {s : p qα} :
                                  iInf s = ⨅ (h₁ : p) (h₂ : q), s (_ : p q)
                                  theorem iSup_and' {α : Type u_1} [CompleteLattice α] {p : Prop} {q : Prop} {s : pqα} :
                                  ⨆ (h₁ : p) (h₂ : q), s h₁ h₂ = ⨆ (h : p q), s h.left h.right

                                  The symmetric case of iSup_and, useful for rewriting into a supremum over a conjunction

                                  theorem iInf_and' {α : Type u_1} [CompleteLattice α] {p : Prop} {q : Prop} {s : pqα} :
                                  ⨅ (h₁ : p) (h₂ : q), s h₁ h₂ = ⨅ (h : p q), s h.left h.right

                                  The symmetric case of iInf_and, useful for rewriting into an infimum over a conjunction

                                  theorem iSup_or {α : Type u_1} [CompleteLattice α] {p : Prop} {q : Prop} {s : p qα} :
                                  ⨆ (x : p q), s x = (⨆ (i : p), s (_ : p q)) ⨆ (j : q), s (_ : p q)
                                  theorem iInf_or {α : Type u_1} [CompleteLattice α] {p : Prop} {q : Prop} {s : p qα} :
                                  ⨅ (x : p q), s x = (⨅ (i : p), s (_ : p q)) ⨅ (j : q), s (_ : p q)
                                  theorem iSup_dite {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] (p : ιProp) [DecidablePred p] (f : (i : ι) → p iα) (g : (i : ι) → ¬p iα) :
                                  (⨆ (i : ι), if h : p i then f i h else g i h) = (⨆ (i : ι) (h : p i), f i h) ⨆ (i : ι) (h : ¬p i), g i h
                                  theorem iInf_dite {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] (p : ιProp) [DecidablePred p] (f : (i : ι) → p iα) (g : (i : ι) → ¬p iα) :
                                  (⨅ (i : ι), if h : p i then f i h else g i h) = (⨅ (i : ι) (h : p i), f i h) ⨅ (i : ι) (h : ¬p i), g i h
                                  theorem iSup_ite {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] (p : ιProp) [DecidablePred p] (f : ια) (g : ια) :
                                  (⨆ (i : ι), if p i then f i else g i) = (⨆ (i : ι) (x : p i), f i) ⨆ (i : ι) (_ : ¬p i), g i
                                  theorem iInf_ite {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] (p : ιProp) [DecidablePred p] (f : ια) (g : ια) :
                                  (⨅ (i : ι), if p i then f i else g i) = (⨅ (i : ι) (x : p i), f i) ⨅ (i : ι) (_ : ¬p i), g i
                                  theorem iSup_range {α : Type u_1} {β : Type u_2} {ι : Sort u_5} [CompleteLattice α] {g : βα} {f : ιβ} :
                                  ⨆ (b : β) (_ : b Set.range f), g b = ⨆ (i : ι), g (f i)
                                  theorem iInf_range {α : Type u_1} {β : Type u_2} {ι : Sort u_5} [CompleteLattice α] {g : βα} {f : ιβ} :
                                  ⨅ (b : β) (_ : b Set.range f), g b = ⨅ (i : ι), g (f i)
                                  theorem sSup_image {α : Type u_1} {β : Type u_2} [CompleteLattice α] {s : Set β} {f : βα} :
                                  sSup (f '' s) = ⨆ (a : β) (_ : a s), f a
                                  theorem sInf_image {α : Type u_1} {β : Type u_2} [CompleteLattice α] {s : Set β} {f : βα} :
                                  sInf (f '' s) = ⨅ (a : β) (_ : a s), f a
                                  theorem iSup_emptyset {α : Type u_1} {β : Type u_2} [CompleteLattice α] {f : βα} :
                                  ⨆ (x : β) (_ : x ), f x =
                                  theorem iInf_emptyset {α : Type u_1} {β : Type u_2} [CompleteLattice α] {f : βα} :
                                  ⨅ (x : β) (_ : x ), f x =
                                  theorem iSup_univ {α : Type u_1} {β : Type u_2} [CompleteLattice α] {f : βα} :
                                  ⨆ (x : β) (_ : x Set.univ), f x = ⨆ (x : β), f x
                                  theorem iInf_univ {α : Type u_1} {β : Type u_2} [CompleteLattice α] {f : βα} :
                                  ⨅ (x : β) (_ : x Set.univ), f x = ⨅ (x : β), f x
                                  theorem iSup_union {α : Type u_1} {β : Type u_2} [CompleteLattice α] {f : βα} {s : Set β} {t : Set β} :
                                  ⨆ (x : β) (_ : x s t), f x = (⨆ (x : β) (_ : x s), f x) ⨆ (x : β) (_ : x t), f x
                                  theorem iInf_union {α : Type u_1} {β : Type u_2} [CompleteLattice α] {f : βα} {s : Set β} {t : Set β} :
                                  ⨅ (x : β) (_ : x s t), f x = (⨅ (x : β) (_ : x s), f x) ⨅ (x : β) (_ : x t), f x
                                  theorem iSup_split {α : Type u_1} {β : Type u_2} [CompleteLattice α] (f : βα) (p : βProp) :
                                  ⨆ (i : β), f i = (⨆ (i : β) (x : p i), f i) ⨆ (i : β) (_ : ¬p i), f i
                                  theorem iInf_split {α : Type u_1} {β : Type u_2} [CompleteLattice α] (f : βα) (p : βProp) :
                                  ⨅ (i : β), f i = (⨅ (i : β) (x : p i), f i) ⨅ (i : β) (_ : ¬p i), f i
                                  theorem iSup_split_single {α : Type u_1} {β : Type u_2} [CompleteLattice α] (f : βα) (i₀ : β) :
                                  ⨆ (i : β), f i = f i₀ ⨆ (i : β) (_ : i i₀), f i
                                  theorem iInf_split_single {α : Type u_1} {β : Type u_2} [CompleteLattice α] (f : βα) (i₀ : β) :
                                  ⨅ (i : β), f i = f i₀ ⨅ (i : β) (_ : i i₀), f i
                                  theorem iSup_le_iSup_of_subset {α : Type u_1} {β : Type u_2} [CompleteLattice α] {f : βα} {s : Set β} {t : Set β} :
                                  s t⨆ (x : β) (_ : x s), f x ⨆ (x : β) (_ : x t), f x
                                  theorem iInf_le_iInf_of_subset {α : Type u_1} {β : Type u_2} [CompleteLattice α] {f : βα} {s : Set β} {t : Set β} :
                                  s t⨅ (x : β) (_ : x t), f x ⨅ (x : β) (_ : x s), f x
                                  theorem iSup_insert {α : Type u_1} {β : Type u_2} [CompleteLattice α] {f : βα} {s : Set β} {b : β} :
                                  ⨆ (x : β) (_ : x insert b s), f x = f b ⨆ (x : β) (_ : x s), f x
                                  theorem iInf_insert {α : Type u_1} {β : Type u_2} [CompleteLattice α] {f : βα} {s : Set β} {b : β} :
                                  ⨅ (x : β) (_ : x insert b s), f x = f b ⨅ (x : β) (_ : x s), f x
                                  theorem iSup_singleton {α : Type u_1} {β : Type u_2} [CompleteLattice α] {f : βα} {b : β} :
                                  ⨆ (x : β) (_ : x {b}), f x = f b
                                  theorem iInf_singleton {α : Type u_1} {β : Type u_2} [CompleteLattice α] {f : βα} {b : β} :
                                  ⨅ (x : β) (_ : x {b}), f x = f b
                                  theorem iSup_pair {α : Type u_1} {β : Type u_2} [CompleteLattice α] {f : βα} {a : β} {b : β} :
                                  ⨆ (x : β) (_ : x {a, b}), f x = f a f b
                                  theorem iInf_pair {α : Type u_1} {β : Type u_2} [CompleteLattice α] {f : βα} {a : β} {b : β} :
                                  ⨅ (x : β) (_ : x {a, b}), f x = f a f b
                                  theorem iSup_image {α : Type u_1} {β : Type u_2} [CompleteLattice α] {γ : Type u_9} {f : βγ} {g : γα} {t : Set β} :
                                  ⨆ (c : γ) (_ : c f '' t), g c = ⨆ (b : β) (_ : b t), g (f b)
                                  theorem iInf_image {α : Type u_1} {β : Type u_2} [CompleteLattice α] {γ : Type u_9} {f : βγ} {g : γα} {t : Set β} :
                                  ⨅ (c : γ) (_ : c f '' t), g c = ⨅ (b : β) (_ : b t), g (f b)
                                  theorem iSup_extend_bot {α : Type u_1} {β : Type u_2} {ι : Sort u_5} [CompleteLattice α] {e : ιβ} (he : Function.Injective e) (f : ια) :
                                  ⨆ (j : β), Function.extend e f j = ⨆ (i : ι), f i
                                  theorem iInf_extend_top {α : Type u_1} {β : Type u_2} {ι : Sort u_5} [CompleteLattice α] {e : ιβ} (he : Function.Injective e) (f : ια) :
                                  ⨅ (j : β), Function.extend e f j = iInf f

                                  iSup and iInf under Type #

                                  theorem iSup_of_empty' {α : Type u_9} {ι : Sort u_10} [SupSet α] [IsEmpty ι] (f : ια) :
                                  theorem iInf_of_empty' {α : Type u_9} {ι : Sort u_10} [InfSet α] [IsEmpty ι] (f : ια) :
                                  theorem iSup_of_empty {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] [IsEmpty ι] (f : ια) :
                                  theorem iInf_of_empty {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] [IsEmpty ι] (f : ια) :
                                  theorem iSup_bool_eq {α : Type u_1} [CompleteLattice α] {f : Boolα} :
                                  ⨆ (b : Bool), f b = f true f false
                                  theorem iInf_bool_eq {α : Type u_1} [CompleteLattice α] {f : Boolα} :
                                  ⨅ (b : Bool), f b = f true f false
                                  theorem sup_eq_iSup {α : Type u_1} [CompleteLattice α] (x : α) (y : α) :
                                  x y = ⨆ (b : Bool), bif b then x else y
                                  theorem inf_eq_iInf {α : Type u_1} [CompleteLattice α] (x : α) (y : α) :
                                  x y = ⨅ (b : Bool), bif b then x else y
                                  theorem isGLB_biInf {α : Type u_1} {β : Type u_2} [CompleteLattice α] {s : Set β} {f : βα} :
                                  IsGLB (f '' s) (⨅ (x : β) (_ : x s), f x)
                                  theorem isLUB_biSup {α : Type u_1} {β : Type u_2} [CompleteLattice α] {s : Set β} {f : βα} :
                                  IsLUB (f '' s) (⨆ (x : β) (_ : x s), f x)
                                  theorem iSup_sigma {α : Type u_1} {β : Type u_2} [CompleteLattice α] {p : βType u_9} {f : Sigma pα} :
                                  ⨆ (x : Sigma p), f x = ⨆ (i : β) (j : p i), f { fst := i, snd := j }
                                  theorem iInf_sigma {α : Type u_1} {β : Type u_2} [CompleteLattice α] {p : βType u_9} {f : Sigma pα} :
                                  ⨅ (x : Sigma p), f x = ⨅ (i : β) (j : p i), f { fst := i, snd := j }
                                  theorem iSup_sigma' {α : Type u_1} {β : Type u_2} [CompleteLattice α] {κ : βType u_9} (f : (i : β) → κ iα) :
                                  ⨆ (i : β) (j : κ i), f i j = ⨆ (x : (i : β) × κ i), f x.fst x.snd
                                  theorem iInf_sigma' {α : Type u_1} {β : Type u_2} [CompleteLattice α] {κ : βType u_9} (f : (i : β) → κ iα) :
                                  ⨅ (i : β) (j : κ i), f i j = ⨅ (x : (i : β) × κ i), f x.fst x.snd
                                  theorem iSup_prod {α : Type u_1} {β : Type u_2} {γ : Type u_4} [CompleteLattice α] {f : β × γα} :
                                  ⨆ (x : β × γ), f x = ⨆ (i : β) (j : γ), f (i, j)
                                  theorem iInf_prod {α : Type u_1} {β : Type u_2} {γ : Type u_4} [CompleteLattice α] {f : β × γα} :
                                  ⨅ (x : β × γ), f x = ⨅ (i : β) (j : γ), f (i, j)
                                  theorem iSup_prod' {α : Type u_1} {β : Type u_2} {γ : Type u_4} [CompleteLattice α] (f : βγα) :
                                  ⨆ (i : β) (j : γ), f i j = ⨆ (x : β × γ), f x.fst x.snd
                                  theorem iInf_prod' {α : Type u_1} {β : Type u_2} {γ : Type u_4} [CompleteLattice α] (f : βγα) :
                                  ⨅ (i : β) (j : γ), f i j = ⨅ (x : β × γ), f x.fst x.snd
                                  theorem biSup_prod {α : Type u_1} {β : Type u_2} {γ : Type u_4} [CompleteLattice α] {f : β × γα} {s : Set β} {t : Set γ} :
                                  ⨆ (x : β × γ) (_ : x s ×ˢ t), f x = ⨆ (a : β) (_ : a s) (b : γ) (_ : b t), f (a, b)
                                  theorem biInf_prod {α : Type u_1} {β : Type u_2} {γ : Type u_4} [CompleteLattice α] {f : β × γα} {s : Set β} {t : Set γ} :
                                  ⨅ (x : β × γ) (_ : x s ×ˢ t), f x = ⨅ (a : β) (_ : a s) (b : γ) (_ : b t), f (a, b)
                                  theorem iSup_sum {α : Type u_1} {β : Type u_2} {γ : Type u_4} [CompleteLattice α] {f : β γα} :
                                  ⨆ (x : β γ), f x = (⨆ (i : β), f (Sum.inl i)) ⨆ (j : γ), f (Sum.inr j)
                                  theorem iInf_sum {α : Type u_1} {β : Type u_2} {γ : Type u_4} [CompleteLattice α] {f : β γα} :
                                  ⨅ (x : β γ), f x = (⨅ (i : β), f (Sum.inl i)) ⨅ (j : γ), f (Sum.inr j)
                                  theorem iSup_option {α : Type u_1} {β : Type u_2} [CompleteLattice α] (f : Option βα) :
                                  ⨆ (o : Option β), f o = f none ⨆ (b : β), f (some b)
                                  theorem iInf_option {α : Type u_1} {β : Type u_2} [CompleteLattice α] (f : Option βα) :
                                  ⨅ (o : Option β), f o = f none ⨅ (b : β), f (some b)
                                  theorem iSup_option_elim {α : Type u_1} {β : Type u_2} [CompleteLattice α] (a : α) (f : βα) :
                                  ⨆ (o : Option β), Option.elim o a f = a ⨆ (b : β), f b

                                  A version of iSup_option useful for rewriting right-to-left.

                                  theorem iInf_option_elim {α : Type u_1} {β : Type u_2} [CompleteLattice α] (a : α) (f : βα) :
                                  ⨅ (o : Option β), Option.elim o a f = a ⨅ (b : β), f b

                                  A version of iInf_option useful for rewriting right-to-left.

                                  theorem iSup_ne_bot_subtype {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] (f : ια) :
                                  ⨆ (i : { i // f i }), f i = ⨆ (i : ι), f i

                                  When taking the supremum of f : ι → α, the elements of ι on which f gives can be dropped, without changing the result.

                                  theorem iInf_ne_top_subtype {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] (f : ια) :
                                  ⨅ (i : { i // f i }), f i = ⨅ (i : ι), f i

                                  When taking the infimum of f : ι → α, the elements of ι on which f gives can be dropped, without changing the result.

                                  theorem sSup_image2 {α : Type u_1} {β : Type u_2} {γ : Type u_4} [CompleteLattice α] {f : βγα} {s : Set β} {t : Set γ} :
                                  sSup (Set.image2 f s t) = ⨆ (a : β) (_ : a s) (b : γ) (_ : b t), f a b
                                  theorem sInf_image2 {α : Type u_1} {β : Type u_2} {γ : Type u_4} [CompleteLattice α] {f : βγα} {s : Set β} {t : Set γ} :
                                  sInf (Set.image2 f s t) = ⨅ (a : β) (_ : a s) (b : γ) (_ : b t), f a b

                                  iSup and iInf under #

                                  theorem iSup_ge_eq_iSup_nat_add {α : Type u_1} [CompleteLattice α] (u : α) (n : ) :
                                  ⨆ (i : ) (_ : i n), u i = ⨆ (i : ), u (i + n)
                                  theorem iInf_ge_eq_iInf_nat_add {α : Type u_1} [CompleteLattice α] (u : α) (n : ) :
                                  ⨅ (i : ) (_ : i n), u i = ⨅ (i : ), u (i + n)
                                  theorem Monotone.iSup_nat_add {α : Type u_1} [CompleteLattice α] {f : α} (hf : Monotone f) (k : ) :
                                  ⨆ (n : ), f (n + k) = ⨆ (n : ), f n
                                  theorem Antitone.iInf_nat_add {α : Type u_1} [CompleteLattice α] {f : α} (hf : Antitone f) (k : ) :
                                  ⨅ (n : ), f (n + k) = ⨅ (n : ), f n
                                  theorem iSup_iInf_ge_nat_add {α : Type u_1} [CompleteLattice α] (f : α) (k : ) :
                                  ⨆ (n : ), ⨅ (i : ) (_ : i n), f (i + k) = ⨆ (n : ), ⨅ (i : ) (_ : i n), f i
                                  theorem iInf_iSup_ge_nat_add {α : Type u_1} [CompleteLattice α] (f : α) (k : ) :
                                  ⨅ (n : ), ⨆ (i : ) (_ : i n), f (i + k) = ⨅ (n : ), ⨆ (i : ) (_ : i n), f i
                                  theorem sup_iSup_nat_succ {α : Type u_1} [CompleteLattice α] (u : α) :
                                  u 0 ⨆ (i : ), u (i + 1) = ⨆ (i : ), u i
                                  theorem inf_iInf_nat_succ {α : Type u_1} [CompleteLattice α] (u : α) :
                                  u 0 ⨅ (i : ), u (i + 1) = ⨅ (i : ), u i
                                  theorem iInf_nat_gt_zero_eq {α : Type u_1} [CompleteLattice α] (f : α) :
                                  ⨅ (i : ) (_ : i > 0), f i = ⨅ (i : ), f (i + 1)
                                  theorem iSup_nat_gt_zero_eq {α : Type u_1} [CompleteLattice α] (f : α) :
                                  ⨆ (i : ) (_ : i > 0), f i = ⨆ (i : ), f (i + 1)
                                  theorem iSup_eq_top {α : Type u_1} {ι : Sort u_5} [CompleteLinearOrder α] (f : ια) :
                                  iSup f = ∀ (b : α), b < i, b < f i
                                  theorem iInf_eq_bot {α : Type u_1} {ι : Sort u_5} [CompleteLinearOrder α] (f : ια) :
                                  iInf f = ∀ (b : α), b > i, f i < b

                                  Instances #

                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  @[simp]
                                  theorem sSup_Prop_eq {s : Set Prop} :
                                  sSup s = p, p s p
                                  @[simp]
                                  theorem sInf_Prop_eq {s : Set Prop} :
                                  sInf s = ∀ (p : Prop), p sp
                                  @[simp]
                                  theorem iSup_Prop_eq {ι : Sort u_5} {p : ιProp} :
                                  ⨆ (i : ι), p i = i, p i
                                  @[simp]
                                  theorem iInf_Prop_eq {ι : Sort u_5} {p : ιProp} :
                                  ⨅ (i : ι), p i = ((i : ι) → p i)
                                  instance Pi.supSet {α : Type u_9} {β : αType u_10} [(i : α) → SupSet (β i)] :
                                  SupSet ((i : α) → β i)
                                  Equations
                                  • Pi.supSet = { sSup := fun s i => ⨆ (f : s), f i }
                                  instance Pi.infSet {α : Type u_9} {β : αType u_10} [(i : α) → InfSet (β i)] :
                                  InfSet ((i : α) → β i)
                                  Equations
                                  • Pi.infSet = { sInf := fun s i => ⨅ (f : s), f i }
                                  instance Pi.completeLattice {α : Type u_9} {β : αType u_10} [(i : α) → CompleteLattice (β i)] :
                                  CompleteLattice ((i : α) → β i)
                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  theorem sSup_apply {α : Type u_9} {β : αType u_10} [(i : α) → SupSet (β i)] {s : Set ((a : α) → β a)} {a : α} :
                                  sSup ((a : α) → β a) Pi.supSet s a = ⨆ (f : s), f a
                                  theorem sInf_apply {α : Type u_9} {β : αType u_10} [(i : α) → InfSet (β i)] {s : Set ((a : α) → β a)} {a : α} :
                                  sInf ((a : α) → β a) Pi.infSet s a = ⨅ (f : s), f a
                                  @[simp]
                                  theorem iSup_apply {α : Type u_9} {β : αType u_10} {ι : Sort u_11} [(i : α) → SupSet (β i)] {f : ι(a : α) → β a} {a : α} :
                                  iSup ((a : α) → β a) Pi.supSet ι (fun i => f i) a = ⨆ (i : ι), f i a
                                  @[simp]
                                  theorem iInf_apply {α : Type u_9} {β : αType u_10} {ι : Sort u_11} [(i : α) → InfSet (β i)] {f : ι(a : α) → β a} {a : α} :
                                  iInf ((a : α) → β a) Pi.infSet ι (fun i => f i) a = ⨅ (i : ι), f i a
                                  theorem unary_relation_sSup_iff {α : Type u_9} (s : Set (αProp)) {a : α} :
                                  sSup s a r, r s r a
                                  theorem unary_relation_sInf_iff {α : Type u_9} (s : Set (αProp)) {a : α} :
                                  sInf s a (r : αProp) → r sr a
                                  theorem binary_relation_sSup_iff {α : Type u_9} {β : Type u_10} (s : Set (αβProp)) {a : α} {b : β} :
                                  sSup s a b r, r s r a b
                                  theorem binary_relation_sInf_iff {α : Type u_9} {β : Type u_10} (s : Set (αβProp)) {a : α} {b : β} :
                                  sInf s a b (r : αβProp) → r sr a b
                                  theorem monotone_sSup_of_monotone {α : Type u_1} {β : Type u_2} [Preorder α] [CompleteLattice β] {s : Set (αβ)} (m_s : ∀ (f : αβ), f sMonotone f) :
                                  theorem monotone_sInf_of_monotone {α : Type u_1} {β : Type u_2} [Preorder α] [CompleteLattice β] {s : Set (αβ)} (m_s : ∀ (f : αβ), f sMonotone f) :
                                  instance Prod.supSet (α : Type u_1) (β : Type u_2) [SupSet α] [SupSet β] :
                                  SupSet (α × β)
                                  Equations
                                  instance Prod.infSet (α : Type u_1) (β : Type u_2) [InfSet α] [InfSet β] :
                                  InfSet (α × β)
                                  Equations
                                  theorem Prod.fst_sInf {α : Type u_1} {β : Type u_2} [InfSet α] [InfSet β] (s : Set (α × β)) :
                                  (sInf s).fst = sInf (Prod.fst '' s)
                                  theorem Prod.snd_sInf {α : Type u_1} {β : Type u_2} [InfSet α] [InfSet β] (s : Set (α × β)) :
                                  (sInf s).snd = sInf (Prod.snd '' s)
                                  theorem Prod.swap_sInf {α : Type u_1} {β : Type u_2} [InfSet α] [InfSet β] (s : Set (α × β)) :
                                  Prod.swap (sInf s) = sInf (Prod.swap '' s)
                                  theorem Prod.fst_sSup {α : Type u_1} {β : Type u_2} [SupSet α] [SupSet β] (s : Set (α × β)) :
                                  (sSup s).fst = sSup (Prod.fst '' s)
                                  theorem Prod.snd_sSup {α : Type u_1} {β : Type u_2} [SupSet α] [SupSet β] (s : Set (α × β)) :
                                  (sSup s).snd = sSup (Prod.snd '' s)
                                  theorem Prod.swap_sSup {α : Type u_1} {β : Type u_2} [SupSet α] [SupSet β] (s : Set (α × β)) :
                                  Prod.swap (sSup s) = sSup (Prod.swap '' s)
                                  theorem Prod.fst_iInf {α : Type u_1} {β : Type u_2} {ι : Sort u_5} [InfSet α] [InfSet β] (f : ια × β) :
                                  (iInf f).fst = ⨅ (i : ι), (f i).fst
                                  theorem Prod.snd_iInf {α : Type u_1} {β : Type u_2} {ι : Sort u_5} [InfSet α] [InfSet β] (f : ια × β) :
                                  (iInf f).snd = ⨅ (i : ι), (f i).snd
                                  theorem Prod.swap_iInf {α : Type u_1} {β : Type u_2} {ι : Sort u_5} [InfSet α] [InfSet β] (f : ια × β) :
                                  Prod.swap (iInf f) = ⨅ (i : ι), Prod.swap (f i)
                                  theorem Prod.iInf_mk {α : Type u_1} {β : Type u_2} {ι : Sort u_5} [InfSet α] [InfSet β] (f : ια) (g : ιβ) :
                                  ⨅ (i : ι), (f i, g i) = (⨅ (i : ι), f i, ⨅ (i : ι), g i)
                                  theorem Prod.fst_iSup {α : Type u_1} {β : Type u_2} {ι : Sort u_5} [SupSet α] [SupSet β] (f : ια × β) :
                                  (iSup f).fst = ⨆ (i : ι), (f i).fst
                                  theorem Prod.snd_iSup {α : Type u_1} {β : Type u_2} {ι : Sort u_5} [SupSet α] [SupSet β] (f : ια × β) :
                                  (iSup f).snd = ⨆ (i : ι), (f i).snd
                                  theorem Prod.swap_iSup {α : Type u_1} {β : Type u_2} {ι : Sort u_5} [SupSet α] [SupSet β] (f : ια × β) :
                                  Prod.swap (iSup f) = ⨆ (i : ι), Prod.swap (f i)
                                  theorem Prod.iSup_mk {α : Type u_1} {β : Type u_2} {ι : Sort u_5} [SupSet α] [SupSet β] (f : ια) (g : ιβ) :
                                  ⨆ (i : ι), (f i, g i) = (⨆ (i : ι), f i, ⨆ (i : ι), g i)
                                  instance Prod.completeLattice (α : Type u_1) (β : Type u_2) [CompleteLattice α] [CompleteLattice β] :
                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  theorem sInf_prod {α : Type u_1} {β : Type u_2} [InfSet α] [InfSet β] {s : Set α} {t : Set β} (hs : Set.Nonempty s) (ht : Set.Nonempty t) :
                                  sInf (s ×ˢ t) = (sInf s, sInf t)
                                  theorem sSup_prod {α : Type u_1} {β : Type u_2} [SupSet α] [SupSet β] {s : Set α} {t : Set β} (hs : Set.Nonempty s) (ht : Set.Nonempty t) :
                                  sSup (s ×ˢ t) = (sSup s, sSup t)
                                  theorem sup_sInf_le_iInf_sup {α : Type u_1} [CompleteLattice α] {a : α} {s : Set α} :
                                  a sInf s ⨅ (b : α) (_ : b s), a b

                                  This is a weaker version of sup_sInf_eq

                                  theorem iSup_inf_le_inf_sSup {α : Type u_1} [CompleteLattice α] {a : α} {s : Set α} :
                                  ⨆ (b : α) (_ : b s), a b a sSup s

                                  This is a weaker version of inf_sSup_eq

                                  theorem sInf_sup_le_iInf_sup {α : Type u_1} [CompleteLattice α] {a : α} {s : Set α} :
                                  sInf s a ⨅ (b : α) (_ : b s), b a

                                  This is a weaker version of sInf_sup_eq

                                  theorem iSup_inf_le_sSup_inf {α : Type u_1} [CompleteLattice α] {a : α} {s : Set α} :
                                  ⨆ (b : α) (_ : b s), b a sSup s a

                                  This is a weaker version of sSup_inf_eq

                                  theorem le_iSup_inf_iSup {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] (f : ια) (g : ια) :
                                  ⨆ (i : ι), f i g i (⨆ (i : ι), f i) ⨆ (i : ι), g i
                                  theorem iInf_sup_iInf_le {α : Type u_1} {ι : Sort u_5} [CompleteLattice α] (f : ια) (g : ια) :
                                  (⨅ (i : ι), f i) ⨅ (i : ι), g i ⨅ (i : ι), f i g i
                                  theorem disjoint_sSup_left {α : Type u_1} [CompleteLattice α] {a : Set α} {b : α} (d : Disjoint (sSup a) b) {i : α} (hi : i a) :
                                  theorem disjoint_sSup_right {α : Type u_1} [CompleteLattice α] {a : Set α} {b : α} (d : Disjoint b (sSup a)) {i : α} (hi : i a) :
                                  @[reducible]
                                  def Function.Injective.completeLattice {α : Type u_1} {β : Type u_2} [Sup α] [Inf α] [SupSet α] [InfSet α] [Top α] [Bot α] [CompleteLattice β] (f : αβ) (hf : Function.Injective f) (map_sup : ∀ (a b : α), f (a b) = f a f b) (map_inf : ∀ (a b : α), f (a b) = f a f b) (map_sSup : ∀ (s : Set α), f (sSup s) = ⨆ (a : α) (_ : a s), f a) (map_sInf : ∀ (s : Set α), f (sInf s) = ⨅ (a : α) (_ : a s), f a) (map_top : f = ) (map_bot : f = ) :

                                  Pullback a CompleteLattice along an injection.

                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Instances For
                                    instance ULift.supSet {α : Type u_1} [SupSet α] :
                                    Equations
                                    • ULift.supSet = { sSup := fun s => { down := sSup (ULift.up ⁻¹' s) } }
                                    theorem ULift.down_sSup {α : Type u_1} [SupSet α] (s : Set (ULift.{v, u_1} α)) :
                                    (sSup s).down = sSup (ULift.up ⁻¹' s)
                                    theorem ULift.up_sSup {α : Type u_1} [SupSet α] (s : Set α) :
                                    { down := sSup s } = sSup (ULift.down ⁻¹' s)
                                    instance ULift.infSet {α : Type u_1} [InfSet α] :
                                    Equations
                                    • ULift.infSet = { sInf := fun s => { down := sInf (ULift.up ⁻¹' s) } }
                                    theorem ULift.down_sInf {α : Type u_1} [InfSet α] (s : Set (ULift.{v, u_1} α)) :
                                    (sInf s).down = sInf (ULift.up ⁻¹' s)
                                    theorem ULift.up_sInf {α : Type u_1} [InfSet α] (s : Set α) :
                                    { down := sInf s } = sInf (ULift.down ⁻¹' s)
                                    theorem ULift.down_iSup {α : Type u_1} {ι : Sort u_5} [SupSet α] (f : ιULift.{v, u_1} α) :
                                    (⨆ (i : ι), f i).down = ⨆ (i : ι), (f i).down
                                    theorem ULift.up_iSup {α : Type u_1} {ι : Sort u_5} [SupSet α] (f : ια) :
                                    { down := ⨆ (i : ι), f i } = ⨆ (i : ι), { down := f i }
                                    theorem ULift.down_iInf {α : Type u_1} {ι : Sort u_5} [InfSet α] (f : ιULift.{v, u_1} α) :
                                    (⨅ (i : ι), f i).down = ⨅ (i : ι), (f i).down
                                    theorem ULift.up_iInf {α : Type u_1} {ι : Sort u_5} [InfSet α] (f : ια) :
                                    { down := ⨅ (i : ι), f i } = ⨅ (i : ι), { down := f i }
                                    Equations
                                    • One or more equations did not get rendered due to their size.