File: Mathlib/Order/CompleteLatticeIntervals.lean

full_name: subsetSupSet
code: /-- `SupSet` structure on a nonempty subset `s` of a preorder with `SupSet`. This definition is
non-canonical (it uses `default s`); it should be used only as here, as an auxiliary instance in the
construction of the `ConditionallyCompleteLinearOrder` structure. -/
noncomputable def subsetSupSet [Inhabited s] : SupSet s 
goal: SupSet ↑s

full_name: subset_sSup_def
code: @[simp]
theorem subset_sSup_def [Inhabited s] :
    @sSup s _ = fun t =>
      if ht : t.Nonempty ∧ BddAbove t ∧ sSup ((↑) '' t : Set α) ∈ s
      then ⟨sSup ((↑) '' t : Set α), ht.2.2⟩
      else default 
goal: sSup = fun t =>
  if ht : t.Nonempty ∧ BddAbove t ∧ sSup (Subtype.val '' t) ∈ s then ⟨sSup (Subtype.val '' t), ⋯⟩ else default

full_name: subset_sSup_of_within
code: theorem subset_sSup_of_within [Inhabited s] {t : Set s}
    (h' : t.Nonempty) (h'' : BddAbove t)  (h : sSup ((↑) '' t : Set α) ∈ s) :
    sSup ((↑) '' t : Set α) = (@sSup s _ t : α) 
goal: sSup (Subtype.val '' t) = ↑(sSup t)

full_name: subset_sSup_emptyset
code: theorem subset_sSup_emptyset [Inhabited s] :
    sSup (∅ : Set s) = default 
goal: sSup ∅ = default

full_name: subset_sSup_of_not_bddAbove
code: theorem subset_sSup_of_not_bddAbove [Inhabited s] {t : Set s} (ht : ¬BddAbove t) :
    sSup t = default 
goal: sSup t = default

full_name: subsetInfSet
code: /-- `InfSet` structure on a nonempty subset `s` of a preorder with `InfSet`. This definition is
non-canonical (it uses `default s`); it should be used only as here, as an auxiliary instance in the
construction of the `ConditionallyCompleteLinearOrder` structure. -/
noncomputable def subsetInfSet [Inhabited s] : InfSet s 
goal: InfSet ↑s

full_name: subset_sInf_def
code: @[simp]
theorem subset_sInf_def [Inhabited s] :
    @sInf s _ = fun t =>
      if ht : t.Nonempty ∧ BddBelow t ∧ sInf ((↑) '' t : Set α) ∈ s
      then ⟨sInf ((↑) '' t : Set α), ht.2.2⟩ else
      default 
goal: sInf = fun t =>
  if ht : t.Nonempty ∧ BddBelow t ∧ sInf (Subtype.val '' t) ∈ s then ⟨sInf (Subtype.val '' t), ⋯⟩ else default

full_name: subset_sInf_of_within
code: theorem subset_sInf_of_within [Inhabited s] {t : Set s}
    (h' : t.Nonempty) (h'' : BddBelow t) (h : sInf ((↑) '' t : Set α) ∈ s) :
    sInf ((↑) '' t : Set α) = (@sInf s _ t : α) 
goal: sInf (Subtype.val '' t) = ↑(sInf t)

full_name: subset_sInf_emptyset
code: theorem subset_sInf_emptyset [Inhabited s] :
    sInf (∅ : Set s) = default 
goal: sInf ∅ = default

full_name: subset_sInf_of_not_bddBelow
code: theorem subset_sInf_of_not_bddBelow [Inhabited s] {t : Set s} (ht : ¬BddBelow t) :
    sInf t = default 
goal: sInf t = default

full_name: subsetConditionallyCompleteLinearOrder
code: /-- For a nonempty subset of a conditionally complete linear order to be a conditionally complete
linear order, it suffices that it contain the `sSup` of all its nonempty bounded-above subsets, and
the `sInf` of all its nonempty bounded-below subsets.
See note [reducible non-instances]. -/
noncomputable abbrev subsetConditionallyCompleteLinearOrder [Inhabited s]
    (h_Sup : ∀ {t : Set s} (_ : t.Nonempty) (_h_bdd : BddAbove t), sSup ((↑) '' t : Set α) ∈ s)
    (h_Inf : ∀ {t : Set s} (_ : t.Nonempty) (_h_bdd : BddBelow t), sInf ((↑) '' t : Set α) ∈ s) :
    ConditionallyCompleteLinearOrder s 
goal: ConditionallyCompleteLinearOrder ↑s

full_name: sSup_within_of_ordConnected
code: /-- The `sSup` function on a nonempty `OrdConnected` set `s` in a conditionally complete linear
order takes values within `s`, for all nonempty bounded-above subsets of `s`. -/
theorem sSup_within_of_ordConnected {s : Set α} [hs : OrdConnected s] ⦃t : Set s⦄ (ht : t.Nonempty)
    (h_bdd : BddAbove t) : sSup ((↑) '' t : Set α) ∈ s 
goal: sSup (Subtype.val '' t) ∈ s

full_name: sInf_within_of_ordConnected
code: /-- The `sInf` function on a nonempty `OrdConnected` set `s` in a conditionally complete linear
order takes values within `s`, for all nonempty bounded-below subsets of `s`. -/
theorem sInf_within_of_ordConnected {s : Set α} [hs : OrdConnected s] ⦃t : Set s⦄ (ht : t.Nonempty)
    (h_bdd : BddBelow t) : sInf ((↑) '' t : Set α) ∈ s 
goal: sInf (Subtype.val '' t) ∈ s

full_name: ordConnectedSubsetConditionallyCompleteLinearOrder
code: /-- A nonempty `OrdConnected` set in a conditionally complete linear order is naturally a
conditionally complete linear order. -/
noncomputable instance ordConnectedSubsetConditionallyCompleteLinearOrder [Inhabited s]
    [OrdConnected s] : ConditionallyCompleteLinearOrder s 
goal: ConditionallyCompleteLinearOrder ↑s

full_name: Set.Icc.completeLattice
code: /-- Complete lattice structure on `Set.Icc` -/
noncomputable def Set.Icc.completeLattice [ConditionallyCompleteLattice α]
    {a b : α} (h : a ≤ b) : CompleteLattice (Set.Icc a b) 
goal: CompleteLattice ↑(Set.Icc a b)

full_name: Set.Icc.completeLinearOrder
code: /-- Complete linear order structure on `Set.Icc` -/
noncomputable def Set.Icc.completeLinearOrder [ConditionallyCompleteLinearOrder α]
    {a b : α} (h : a ≤ b) : CompleteLinearOrder (Set.Icc a b) 
goal: CompleteLinearOrder ↑(Set.Icc a b)

full_name: Set.Icc.coe_sSup
code: lemma Set.Icc.coe_sSup [ConditionallyCompleteLattice α] {a b : α} (h : a ≤ b)
    {S : Set (Set.Icc a b)} (hS : S.Nonempty) : letI := Set.Icc.completeLattice h
    ↑(sSup S) = sSup ((↑) '' S : Set α) 
goal: ↑(sSup S) = sSup (Subtype.val '' S)

full_name: Set.Icc.coe_sInf
code: lemma Set.Icc.coe_sInf [ConditionallyCompleteLattice α] {a b : α} (h : a ≤ b)
    {S : Set (Set.Icc a b)} (hS : S.Nonempty) : letI := Set.Icc.completeLattice h
    ↑(sInf S) = sInf ((↑) '' S : Set α) 
goal: ↑(sInf S) = sInf (Subtype.val '' S)

full_name: Set.Icc.coe_iSup
code: lemma Set.Icc.coe_iSup [ConditionallyCompleteLattice α] {a b : α} (h : a ≤ b)
    [Nonempty ι] {S : ι → Set.Icc a b} : letI := Set.Icc.completeLattice h
    ↑(iSup S) = (⨆ i, S i : α) 
goal: ↑(iSup S) = ⨆ i, ↑(S i)

full_name: Set.Icc.coe_iInf
code: lemma Set.Icc.coe_iInf [ConditionallyCompleteLattice α] {a b : α} (h : a ≤ b)
    [Nonempty ι] {S : ι → Set.Icc a b} : letI := Set.Icc.completeLattice h
    ↑(iInf S) = (⨅ i, S i : α) 
goal: ↑(iInf S) = ⨅ i, ↑(S i)

full_name: Set.Iic.instCompleteLattice
code: instance instCompleteLattice : CompleteLattice (Iic a) 
goal: CompleteLattice ↑(Set.Iic a)

full_name: Set.Iic.coe_sSup
code: @[simp] theorem coe_sSup : (↑(sSup S) : α) = sSup ((↑) '' S) 
goal: ↑(sSup S) = sSup (Subtype.val '' S)

full_name: Set.Iic.coe_iSup
code: @[simp] theorem coe_iSup : (↑(⨆ i, f i) : α) = ⨆ i, (f i : α) 
goal: ↑(⨆ i, f i) = ⨆ i, ↑(f i)

full_name: Set.Iic.coe_biSup
code: theorem coe_biSup : (↑(⨆ i, ⨆ (_ : p i), f i) : α) = ⨆ i, ⨆ (_ : p i), (f i : α) 
goal: ↑(⨆ i, ⨆ (_ : p i), f i) = ⨆ i, ⨆ (_ : p i), ↑(f i)

full_name: Set.Iic.coe_sInf
code: @[simp] theorem coe_sInf : (↑(sInf S) : α) = a ⊓ sInf ((↑) '' S) 
goal: ↑(sInf S) = a ⊓ sInf (Subtype.val '' S)

full_name: Set.Iic.coe_iInf
code: @[simp] theorem coe_iInf : (↑(⨅ i, f i) : α) = a ⊓ ⨅ i, (f i : α) 
goal: ↑(⨅ i, f i) = a ⊓ ⨅ i, ↑(f i)

full_name: Set.Iic.coe_biInf
code: theorem coe_biInf : (↑(⨅ i, ⨅ (_ : p i), f i) : α) = a ⊓ ⨅ i, ⨅ (_ : p i), (f i : α) 
goal: ↑(⨅ i, ⨅ (_ : p i), f i) = a ⊓ ⨅ i, ⨅ (_ : p i), ↑(f i)