Theorem: WithTop.isGLB_sInf'
File: Mathlib/Order/ConditionallyCompleteLattice/Basic.lean

tactic: constructor
state_before: α : Type ?u.90006
β✝ : Type ?u.90009
γ : Type ?u.90012
ι : Sort ?u.90015
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : BddBelow s
⊢ IsGLB s (sInf s)

tactic: show ite _ _ _ ∈ _
state_before: case left
α : Type ?u.90006
β✝ : Type ?u.90009
γ : Type ?u.90012
ι : Sort ?u.90015
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : BddBelow s
⊢ sInf s ∈ lowerBounds s

tactic: split_ifs with h
state_before: case left
α : Type ?u.90006
β✝ : Type ?u.90009
γ : Type ?u.90012
ι : Sort ?u.90015
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : BddBelow s
⊢ (if s ⊆ {⊤} then ⊤ else ↑(sInf ((fun a => ↑a) ⁻¹' s))) ∈ lowerBounds s

tactic: intro a ha
state_before: case left.inl
α : Type ?u.90006
β✝ : Type ?u.90009
γ : Type ?u.90012
ι : Sort ?u.90015
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : BddBelow s
h : s ⊆ {⊤}
⊢ ⊤ ∈ lowerBounds s

tactic: exact top_le_iff.2 (Set.mem_singleton_iff.1 (h ha))
state_before: case left.inl
α : Type ?u.90006
β✝ : Type ?u.90009
γ : Type ?u.90012
ι : Sort ?u.90015
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : BddBelow s
h : s ⊆ {⊤}
a : WithTop β
ha : a ∈ s
⊢ ⊤ ≤ a

tactic: rintro (⟨⟩ | a) ha
state_before: case left.inr
α : Type ?u.90006
β✝ : Type ?u.90009
γ : Type ?u.90012
ι : Sort ?u.90015
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : BddBelow s
h : ¬s ⊆ {⊤}
⊢ ↑(sInf ((fun a => ↑a) ⁻¹' s)) ∈ lowerBounds s

tactic: refine' some_le_some.2 (csInf_le _ ha)
state_before: case left.inr.some
α : Type ?u.90006
β✝ : Type ?u.90009
γ : Type ?u.90012
ι : Sort ?u.90015
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : BddBelow s
h : ¬s ⊆ {⊤}
a : β
ha : Option.some a ∈ s
⊢ ↑(sInf ((fun a => ↑a) ⁻¹' s)) ≤ Option.some a

tactic: rcases hs with ⟨⟨⟩ | b, hb⟩
state_before: case left.inr.some
α : Type ?u.90006
β✝ : Type ?u.90009
γ : Type ?u.90012
ι : Sort ?u.90015
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : BddBelow s
h : ¬s ⊆ {⊤}
a : β
ha : Option.some a ∈ s
⊢ BddBelow ((fun a => ↑a) ⁻¹' s)

tactic: use b
state_before: case left.inr.some.intro.some
α : Type ?u.90006
β✝ : Type ?u.90009
γ : Type ?u.90012
ι : Sort ?u.90015
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
h : ¬s ⊆ {⊤}
a : β
ha : Option.some a ∈ s
b : β
hb : Option.some b ∈ lowerBounds s
⊢ BddBelow ((fun a => ↑a) ⁻¹' s)

tactic: intro c hc
state_before: case left.inr.some.intro.some
α : Type ?u.90006
β✝ : Type ?u.90009
γ : Type ?u.90012
ι : Sort ?u.90015
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
h : ¬s ⊆ {⊤}
a : β
ha : Option.some a ∈ s
b : β
hb : Option.some b ∈ lowerBounds s
⊢ b ∈ lowerBounds ((fun a => ↑a) ⁻¹' s)

tactic: exact some_le_some.1 (hb hc)
state_before: case left.inr.some.intro.some
α : Type ?u.90006
β✝ : Type ?u.90009
γ : Type ?u.90012
ι : Sort ?u.90015
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
h : ¬s ⊆ {⊤}
a : β
ha : Option.some a ∈ s
b : β
hb : Option.some b ∈ lowerBounds s
c : β
hc : c ∈ (fun a => ↑a) ⁻¹' s
⊢ b ≤ c

tactic: exact le_top
state_before: case left.inr.none
α : Type ?u.90006
β✝ : Type ?u.90009
γ : Type ?u.90012
ι : Sort ?u.90015
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : BddBelow s
h : ¬s ⊆ {⊤}
ha : none ∈ s
⊢ ↑(sInf ((fun a => ↑a) ⁻¹' s)) ≤ none

tactic: exfalso
state_before: case left.inr.some.intro.none
α : Type ?u.90006
β✝ : Type ?u.90009
γ : Type ?u.90012
ι : Sort ?u.90015
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
h : ¬s ⊆ {⊤}
a : β
ha : Option.some a ∈ s
hb : none ∈ lowerBounds s
⊢ BddBelow ((fun a => ↑a) ⁻¹' s)

tactic: apply h
state_before: case left.inr.some.intro.none.h
α : Type ?u.90006
β✝ : Type ?u.90009
γ : Type ?u.90012
ι : Sort ?u.90015
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
h : ¬s ⊆ {⊤}
a : β
ha : Option.some a ∈ s
hb : none ∈ lowerBounds s
⊢ False

tactic: intro c hc
state_before: case left.inr.some.intro.none.h
α : Type ?u.90006
β✝ : Type ?u.90009
γ : Type ?u.90012
ι : Sort ?u.90015
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
h : ¬s ⊆ {⊤}
a : β
ha : Option.some a ∈ s
hb : none ∈ lowerBounds s
⊢ s ⊆ {⊤}

tactic: rw [mem_singleton_iff, ← top_le_iff]
state_before: case left.inr.some.intro.none.h
α : Type ?u.90006
β✝ : Type ?u.90009
γ : Type ?u.90012
ι : Sort ?u.90015
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
h : ¬s ⊆ {⊤}
a : β
ha : Option.some a ∈ s
hb : none ∈ lowerBounds s
c : WithTop β
hc : c ∈ s
⊢ c ∈ {⊤}

tactic: exact hb hc
state_before: case left.inr.some.intro.none.h
α : Type ?u.90006
β✝ : Type ?u.90009
γ : Type ?u.90012
ι : Sort ?u.90015
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
h : ¬s ⊆ {⊤}
a : β
ha : Option.some a ∈ s
hb : none ∈ lowerBounds s
c : WithTop β
hc : c ∈ s
⊢ ⊤ ≤ c

tactic: show ite _ _ _ ∈ _
state_before: case right
α : Type ?u.90006
β✝ : Type ?u.90009
γ : Type ?u.90012
ι : Sort ?u.90015
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : BddBelow s
⊢ sInf s ∈ upperBounds (lowerBounds s)

tactic: split_ifs with h
state_before: case right
α : Type ?u.90006
β✝ : Type ?u.90009
γ : Type ?u.90012
ι : Sort ?u.90015
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : BddBelow s
⊢ (if s ⊆ {⊤} then ⊤ else ↑(sInf ((fun a => ↑a) ⁻¹' s))) ∈ upperBounds (lowerBounds s)

tactic: intro _ _
state_before: case right.inl
α : Type ?u.90006
β✝ : Type ?u.90009
γ : Type ?u.90012
ι : Sort ?u.90015
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : BddBelow s
h : s ⊆ {⊤}
⊢ ⊤ ∈ upperBounds (lowerBounds s)

tactic: exact le_top
state_before: case right.inl
α : Type ?u.90006
β✝ : Type ?u.90009
γ : Type ?u.90012
ι : Sort ?u.90015
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : BddBelow s
h : s ⊆ {⊤}
a✝¹ : WithTop β
a✝ : a✝¹ ∈ lowerBounds s
⊢ a✝¹ ≤ ⊤

tactic: rintro (⟨⟩ | a) ha
state_before: case right.inr
α : Type ?u.90006
β✝ : Type ?u.90009
γ : Type ?u.90012
ι : Sort ?u.90015
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : BddBelow s
h : ¬s ⊆ {⊤}
⊢ ↑(sInf ((fun a => ↑a) ⁻¹' s)) ∈ upperBounds (lowerBounds s)

tactic: exfalso
state_before: case right.inr.none
α : Type ?u.90006
β✝ : Type ?u.90009
γ : Type ?u.90012
ι : Sort ?u.90015
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : BddBelow s
h : ¬s ⊆ {⊤}
ha : none ∈ lowerBounds s
⊢ none ≤ ↑(sInf ((fun a => ↑a) ⁻¹' s))

tactic: apply h
state_before: case right.inr.none.h
α : Type ?u.90006
β✝ : Type ?u.90009
γ : Type ?u.90012
ι : Sort ?u.90015
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : BddBelow s
h : ¬s ⊆ {⊤}
ha : none ∈ lowerBounds s
⊢ False

tactic: intro b hb
state_before: case right.inr.none.h
α : Type ?u.90006
β✝ : Type ?u.90009
γ : Type ?u.90012
ι : Sort ?u.90015
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : BddBelow s
h : ¬s ⊆ {⊤}
ha : none ∈ lowerBounds s
⊢ s ⊆ {⊤}

tactic: exact Set.mem_singleton_iff.2 (top_le_iff.1 (ha hb))
state_before: case right.inr.none.h
α : Type ?u.90006
β✝ : Type ?u.90009
γ : Type ?u.90012
ι : Sort ?u.90015
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : BddBelow s
h : ¬s ⊆ {⊤}
ha : none ∈ lowerBounds s
b : WithTop β
hb : b ∈ s
⊢ b ∈ {⊤}

tactic: refine' some_le_some.2 (le_csInf _ _)
state_before: case right.inr.some
α : Type ?u.90006
β✝ : Type ?u.90009
γ : Type ?u.90012
ι : Sort ?u.90015
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : BddBelow s
h : ¬s ⊆ {⊤}
a : β
ha : Option.some a ∈ lowerBounds s
⊢ Option.some a ≤ ↑(sInf ((fun a => ↑a) ⁻¹' s))

tactic: contrapose! h
state_before: case right.inr.some.refine'_1
α : Type ?u.90006
β✝ : Type ?u.90009
γ : Type ?u.90012
ι : Sort ?u.90015
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : BddBelow s
h : ¬s ⊆ {⊤}
a : β
ha : Option.some a ∈ lowerBounds s
⊢ Set.Nonempty ((fun a => ↑a) ⁻¹' s)

tactic: rintro (⟨⟩ | a) ha
state_before: case right.inr.some.refine'_1
α : Type ?u.90006
β✝ : Type ?u.90009
γ : Type ?u.90012
ι : Sort ?u.90015
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : BddBelow s
a : β
ha : Option.some a ∈ lowerBounds s
h : ¬Set.Nonempty ((fun a => ↑a) ⁻¹' s)
⊢ s ⊆ {⊤}

tactic: exact mem_singleton ⊤
state_before: case right.inr.some.refine'_1.none
α : Type ?u.90006
β✝ : Type ?u.90009
γ : Type ?u.90012
ι : Sort ?u.90015
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : BddBelow s
a : β
ha✝ : Option.some a ∈ lowerBounds s
h : ¬Set.Nonempty ((fun a => ↑a) ⁻¹' s)
ha : none ∈ s
⊢ none ∈ {⊤}

tactic: exact (h ⟨a, ha⟩).elim
state_before: case right.inr.some.refine'_1.some
α : Type ?u.90006
β✝ : Type ?u.90009
γ : Type ?u.90012
ι : Sort ?u.90015
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : BddBelow s
a✝ : β
ha✝ : Option.some a✝ ∈ lowerBounds s
h : ¬Set.Nonempty ((fun a => ↑a) ⁻¹' s)
a : β
ha : Option.some a ∈ s
⊢ Option.some a ∈ {⊤}

tactic: intro b hb
state_before: case right.inr.some.refine'_2
α : Type ?u.90006
β✝ : Type ?u.90009
γ : Type ?u.90012
ι : Sort ?u.90015
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : BddBelow s
h : ¬s ⊆ {⊤}
a : β
ha : Option.some a ∈ lowerBounds s
⊢ ∀ (b : β), b ∈ (fun a => ↑a) ⁻¹' s → a ≤ b

tactic: rw [← some_le_some]
state_before: case right.inr.some.refine'_2
α : Type ?u.90006
β✝ : Type ?u.90009
γ : Type ?u.90012
ι : Sort ?u.90015
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : BddBelow s
h : ¬s ⊆ {⊤}
a : β
ha : Option.some a ∈ lowerBounds s
b : β
hb : b ∈ (fun a => ↑a) ⁻¹' s
⊢ a ≤ b

tactic: exact ha hb
state_before: case right.inr.some.refine'_2
α : Type ?u.90006
β✝ : Type ?u.90009
γ : Type ?u.90012
ι : Sort ?u.90015
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : BddBelow s
h : ¬s ⊆ {⊤}
a : β
ha : Option.some a ∈ lowerBounds s
b : β
hb : b ∈ (fun a => ↑a) ⁻¹' s
⊢ Option.some a ≤ Option.some b