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

tactic: constructor
state_before: α : Type ?u.85179
β✝ : Type ?u.85182
γ : Type ?u.85185
ι : Sort ?u.85188
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : Set.Nonempty s
⊢ IsLUB s (sSup s)

tactic: show ite _ _ _ ∈ _
state_before: case left
α : Type ?u.85179
β✝ : Type ?u.85182
γ : Type ?u.85185
ι : Sort ?u.85188
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : Set.Nonempty s
⊢ sSup s ∈ upperBounds s

tactic: split_ifs with h₁ h₂
state_before: case left
α : Type ?u.85179
β✝ : Type ?u.85182
γ : Type ?u.85185
ι : Sort ?u.85188
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : Set.Nonempty s
⊢ (if ⊤ ∈ s then ⊤ else if BddAbove ((fun a => ↑a) ⁻¹' s) then ↑(sSup ((fun a => ↑a) ⁻¹' s)) else ⊤) ∈ upperBounds s

tactic: intro _ _
state_before: case left.inl
α : Type ?u.85179
β✝ : Type ?u.85182
γ : Type ?u.85185
ι : Sort ?u.85188
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : Set.Nonempty s
h₁ : ⊤ ∈ s
⊢ ⊤ ∈ upperBounds s

tactic: exact le_top
state_before: case left.inl
α : Type ?u.85179
β✝ : Type ?u.85182
γ : Type ?u.85185
ι : Sort ?u.85188
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : Set.Nonempty s
h₁ : ⊤ ∈ s
a✝¹ : WithTop β
a✝ : a✝¹ ∈ s
⊢ a✝¹ ≤ ⊤

tactic: rintro (⟨⟩ | a) ha
state_before: case left.inr.inl
α : Type ?u.85179
β✝ : Type ?u.85182
γ : Type ?u.85185
ι : Sort ?u.85188
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : Set.Nonempty s
h₁ : ¬⊤ ∈ s
h₂ : BddAbove ((fun a => ↑a) ⁻¹' s)
⊢ ↑(sSup ((fun a => ↑a) ⁻¹' s)) ∈ upperBounds s

tactic: apply some_le_some.2
state_before: case left.inr.inl.some
α : Type ?u.85179
β✝ : Type ?u.85182
γ : Type ?u.85185
ι : Sort ?u.85188
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : Set.Nonempty s
h₁ : ¬⊤ ∈ s
h₂ : BddAbove ((fun a => ↑a) ⁻¹' s)
a : β
ha : Option.some a ∈ s
⊢ Option.some a ≤ ↑(sSup ((fun a => ↑a) ⁻¹' s))

tactic: exact le_csSup h₂ ha
state_before: case left.inr.inl.some
α : Type ?u.85179
β✝ : Type ?u.85182
γ : Type ?u.85185
ι : Sort ?u.85188
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : Set.Nonempty s
h₁ : ¬⊤ ∈ s
h₂ : BddAbove ((fun a => ↑a) ⁻¹' s)
a : β
ha : Option.some a ∈ s
⊢ a ≤ sSup ((fun a => ↑a) ⁻¹' s)

tactic: contradiction
state_before: case left.inr.inl.none
α : Type ?u.85179
β✝ : Type ?u.85182
γ : Type ?u.85185
ι : Sort ?u.85188
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : Set.Nonempty s
h₁ : ¬⊤ ∈ s
h₂ : BddAbove ((fun a => ↑a) ⁻¹' s)
ha : none ∈ s
⊢ none ≤ ↑(sSup ((fun a => ↑a) ⁻¹' s))

tactic: intro _ _
state_before: case left.inr.inr
α : Type ?u.85179
β✝ : Type ?u.85182
γ : Type ?u.85185
ι : Sort ?u.85188
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : Set.Nonempty s
h₁ : ¬⊤ ∈ s
h₂ : ¬BddAbove ((fun a => ↑a) ⁻¹' s)
⊢ ⊤ ∈ upperBounds s

tactic: exact le_top
state_before: case left.inr.inr
α : Type ?u.85179
β✝ : Type ?u.85182
γ : Type ?u.85185
ι : Sort ?u.85188
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : Set.Nonempty s
h₁ : ¬⊤ ∈ s
h₂ : ¬BddAbove ((fun a => ↑a) ⁻¹' s)
a✝¹ : WithTop β
a✝ : a✝¹ ∈ s
⊢ a✝¹ ≤ ⊤

tactic: show ite _ _ _ ∈ _
state_before: case right
α : Type ?u.85179
β✝ : Type ?u.85182
γ : Type ?u.85185
ι : Sort ?u.85188
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : Set.Nonempty s
⊢ sSup s ∈ lowerBounds (upperBounds s)

tactic: split_ifs with h₁ h₂
state_before: case right
α : Type ?u.85179
β✝ : Type ?u.85182
γ : Type ?u.85185
ι : Sort ?u.85188
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : Set.Nonempty s
⊢ (if ⊤ ∈ s then ⊤ else if BddAbove ((fun a => ↑a) ⁻¹' s) then ↑(sSup ((fun a => ↑a) ⁻¹' s)) else ⊤) ∈
    lowerBounds (upperBounds s)

tactic: rintro (⟨⟩ | a) ha
state_before: case right.inl
α : Type ?u.85179
β✝ : Type ?u.85182
γ : Type ?u.85185
ι : Sort ?u.85188
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : Set.Nonempty s
h₁ : ⊤ ∈ s
⊢ ⊤ ∈ lowerBounds (upperBounds s)

tactic: exact le_rfl
state_before: case right.inl.none
α : Type ?u.85179
β✝ : Type ?u.85182
γ : Type ?u.85185
ι : Sort ?u.85188
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : Set.Nonempty s
h₁ : ⊤ ∈ s
ha : none ∈ upperBounds s
⊢ ⊤ ≤ none

tactic: exact False.elim (not_top_le_coe a (ha h₁))
state_before: case right.inl.some
α : Type ?u.85179
β✝ : Type ?u.85182
γ : Type ?u.85185
ι : Sort ?u.85188
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : Set.Nonempty s
h₁ : ⊤ ∈ s
a : β
ha : Option.some a ∈ upperBounds s
⊢ ⊤ ≤ Option.some a

tactic: rintro (⟨⟩ | b) hb
state_before: case right.inr.inl
α : Type ?u.85179
β✝ : Type ?u.85182
γ : Type ?u.85185
ι : Sort ?u.85188
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : Set.Nonempty s
h₁ : ¬⊤ ∈ s
h₂ : BddAbove ((fun a => ↑a) ⁻¹' s)
⊢ ↑(sSup ((fun a => ↑a) ⁻¹' s)) ∈ lowerBounds (upperBounds s)

tactic: refine' some_le_some.2 (csSup_le _ _)
state_before: case right.inr.inl.some
α : Type ?u.85179
β✝ : Type ?u.85182
γ : Type ?u.85185
ι : Sort ?u.85188
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : Set.Nonempty s
h₁ : ¬⊤ ∈ s
h₂ : BddAbove ((fun a => ↑a) ⁻¹' s)
b : β
hb : Option.some b ∈ upperBounds s
⊢ ↑(sSup ((fun a => ↑a) ⁻¹' s)) ≤ Option.some b

tactic: exact le_top
state_before: case right.inr.inl.none
α : Type ?u.85179
β✝ : Type ?u.85182
γ : Type ?u.85185
ι : Sort ?u.85188
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : Set.Nonempty s
h₁ : ¬⊤ ∈ s
h₂ : BddAbove ((fun a => ↑a) ⁻¹' s)
hb : none ∈ upperBounds s
⊢ ↑(sSup ((fun a => ↑a) ⁻¹' s)) ≤ none

tactic: rcases hs with ⟨⟨⟩ | b, hb⟩
state_before: case right.inr.inl.some.refine'_1
α : Type ?u.85179
β✝ : Type ?u.85182
γ : Type ?u.85185
ι : Sort ?u.85188
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : Set.Nonempty s
h₁ : ¬⊤ ∈ s
h₂ : BddAbove ((fun a => ↑a) ⁻¹' s)
b : β
hb : Option.some b ∈ upperBounds s
⊢ Set.Nonempty ((fun a => ↑a) ⁻¹' s)

tactic: exact absurd hb h₁
state_before: case right.inr.inl.some.refine'_1.intro.none
α : Type ?u.85179
β✝ : Type ?u.85182
γ : Type ?u.85185
ι : Sort ?u.85188
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
h₁ : ¬⊤ ∈ s
h₂ : BddAbove ((fun a => ↑a) ⁻¹' s)
b : β
hb✝ : Option.some b ∈ upperBounds s
hb : none ∈ s
⊢ Set.Nonempty ((fun a => ↑a) ⁻¹' s)

tactic: exact ⟨b, hb⟩
state_before: case right.inr.inl.some.refine'_1.intro.some
α : Type ?u.85179
β✝ : Type ?u.85182
γ : Type ?u.85185
ι : Sort ?u.85188
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
h₁ : ¬⊤ ∈ s
h₂ : BddAbove ((fun a => ↑a) ⁻¹' s)
b✝ : β
hb✝ : Option.some b✝ ∈ upperBounds s
b : β
hb : Option.some b ∈ s
⊢ Set.Nonempty ((fun a => ↑a) ⁻¹' s)

tactic: intro a ha
state_before: case right.inr.inl.some.refine'_2
α : Type ?u.85179
β✝ : Type ?u.85182
γ : Type ?u.85185
ι : Sort ?u.85188
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : Set.Nonempty s
h₁ : ¬⊤ ∈ s
h₂ : BddAbove ((fun a => ↑a) ⁻¹' s)
b : β
hb : Option.some b ∈ upperBounds s
⊢ ∀ (b_1 : β), b_1 ∈ (fun a => ↑a) ⁻¹' s → b_1 ≤ b

tactic: exact some_le_some.1 (hb ha)
state_before: case right.inr.inl.some.refine'_2
α : Type ?u.85179
β✝ : Type ?u.85182
γ : Type ?u.85185
ι : Sort ?u.85188
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : Set.Nonempty s
h₁ : ¬⊤ ∈ s
h₂ : BddAbove ((fun a => ↑a) ⁻¹' s)
b : β
hb : Option.some b ∈ upperBounds s
a : β
ha : a ∈ (fun a => ↑a) ⁻¹' s
⊢ a ≤ b

tactic: rintro (⟨⟩ | b) hb
state_before: case right.inr.inr
α : Type ?u.85179
β✝ : Type ?u.85182
γ : Type ?u.85185
ι : Sort ?u.85188
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : Set.Nonempty s
h₁ : ¬⊤ ∈ s
h₂ : ¬BddAbove ((fun a => ↑a) ⁻¹' s)
⊢ ⊤ ∈ lowerBounds (upperBounds s)

tactic: exact le_rfl
state_before: case right.inr.inr.none
α : Type ?u.85179
β✝ : Type ?u.85182
γ : Type ?u.85185
ι : Sort ?u.85188
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : Set.Nonempty s
h₁ : ¬⊤ ∈ s
h₂ : ¬BddAbove ((fun a => ↑a) ⁻¹' s)
hb : none ∈ upperBounds s
⊢ ⊤ ≤ none

tactic: exfalso
state_before: case right.inr.inr.some
α : Type ?u.85179
β✝ : Type ?u.85182
γ : Type ?u.85185
ι : Sort ?u.85188
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : Set.Nonempty s
h₁ : ¬⊤ ∈ s
h₂ : ¬BddAbove ((fun a => ↑a) ⁻¹' s)
b : β
hb : Option.some b ∈ upperBounds s
⊢ ⊤ ≤ Option.some b

tactic: apply h₂
state_before: case right.inr.inr.some.h
α : Type ?u.85179
β✝ : Type ?u.85182
γ : Type ?u.85185
ι : Sort ?u.85188
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : Set.Nonempty s
h₁ : ¬⊤ ∈ s
h₂ : ¬BddAbove ((fun a => ↑a) ⁻¹' s)
b : β
hb : Option.some b ∈ upperBounds s
⊢ False

tactic: use b
state_before: case right.inr.inr.some.h
α : Type ?u.85179
β✝ : Type ?u.85182
γ : Type ?u.85185
ι : Sort ?u.85188
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : Set.Nonempty s
h₁ : ¬⊤ ∈ s
h₂ : ¬BddAbove ((fun a => ↑a) ⁻¹' s)
b : β
hb : Option.some b ∈ upperBounds s
⊢ BddAbove ((fun a => ↑a) ⁻¹' s)

tactic: intro a ha
state_before: case right.inr.inr.some.h
α : Type ?u.85179
β✝ : Type ?u.85182
γ : Type ?u.85185
ι : Sort ?u.85188
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : Set.Nonempty s
h₁ : ¬⊤ ∈ s
h₂ : ¬BddAbove ((fun a => ↑a) ⁻¹' s)
b : β
hb : Option.some b ∈ upperBounds s
⊢ b ∈ upperBounds ((fun a => ↑a) ⁻¹' s)

tactic: exact some_le_some.1 (hb ha)
state_before: case right.inr.inr.some.h
α : Type ?u.85179
β✝ : Type ?u.85182
γ : Type ?u.85185
ι : Sort ?u.85188
inst✝¹ : ConditionallyCompleteLinearOrderBot α
β : Type u_1
inst✝ : ConditionallyCompleteLattice β
s : Set (WithTop β)
hs : Set.Nonempty s
h₁ : ¬⊤ ∈ s
h₂ : ¬BddAbove ((fun a => ↑a) ⁻¹' s)
b : β
hb : Option.some b ∈ upperBounds s
a : β
ha : a ∈ (fun a => ↑a) ⁻¹' s
⊢ a ≤ b