Theorem: exists_lub_Iio
File: Mathlib/Order/Bounds/Basic.lean

tactic: by_cases h_exists_lt : ∃ j, j ∈ upperBounds (Iio i) ∧ j < i
state_before: α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
s t : Set α
a b : α
inst✝ : LinearOrder γ
i : γ
⊢ ∃ j, IsLUB (Iio i) j
state_after: case pos
α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
s t : Set α
a b : α
inst✝ : LinearOrder γ
i : γ
h_exists_lt : ∃ j ∈ upperBounds (Iio i), j < i
⊢ ∃ j, IsLUB (Iio i) j

case neg
α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
s t : Set α
a b : α
inst✝ : LinearOrder γ
i : γ
h_exists_lt : ¬∃ j ∈ upperBounds (Iio i), j < i
⊢ ∃ j, IsLUB (Iio i) j

tactic: obtain ⟨j, hj_ub, hj_lt_i⟩ := h_exists_lt
state_before: case pos
α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
s t : Set α
a b : α
inst✝ : LinearOrder γ
i : γ
h_exists_lt : ∃ j ∈ upperBounds (Iio i), j < i
⊢ ∃ j, IsLUB (Iio i) j
state_after: case pos.intro.intro
α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
s t : Set α
a b : α
inst✝ : LinearOrder γ
i j : γ
hj_ub : j ∈ upperBounds (Iio i)
hj_lt_i : j < i
⊢ ∃ j, IsLUB (Iio i) j

tactic: exact ⟨j, hj_ub, fun k hk_ub => hk_ub hj_lt_i⟩
state_before: case pos.intro.intro
α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
s t : Set α
a b : α
inst✝ : LinearOrder γ
i j : γ
hj_ub : j ∈ upperBounds (Iio i)
hj_lt_i : j < i
⊢ ∃ j, IsLUB (Iio i) j
state_after: no goals

tactic: refine ⟨i, fun j hj => le_of_lt hj, ?_⟩
state_before: case neg
α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
s t : Set α
a b : α
inst✝ : LinearOrder γ
i : γ
h_exists_lt : ¬∃ j ∈ upperBounds (Iio i), j < i
⊢ ∃ j, IsLUB (Iio i) j
state_after: case neg
α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
s t : Set α
a b : α
inst✝ : LinearOrder γ
i : γ
h_exists_lt : ¬∃ j ∈ upperBounds (Iio i), j < i
⊢ i ∈ lowerBounds (upperBounds (Iio i))

tactic: rw [mem_lowerBounds]
state_before: case neg
α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
s t : Set α
a b : α
inst✝ : LinearOrder γ
i : γ
h_exists_lt : ¬∃ j ∈ upperBounds (Iio i), j < i
⊢ i ∈ lowerBounds (upperBounds (Iio i))
state_after: case neg
α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
s t : Set α
a b : α
inst✝ : LinearOrder γ
i : γ
h_exists_lt : ¬∃ j ∈ upperBounds (Iio i), j < i
⊢ ∀ x ∈ upperBounds (Iio i), i ≤ x

tactic: by_contra h
state_before: case neg
α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
s t : Set α
a b : α
inst✝ : LinearOrder γ
i : γ
h_exists_lt : ¬∃ j ∈ upperBounds (Iio i), j < i
⊢ ∀ x ∈ upperBounds (Iio i), i ≤ x
state_after: case neg
α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
s t : Set α
a b : α
inst✝ : LinearOrder γ
i : γ
h_exists_lt : ¬∃ j ∈ upperBounds (Iio i), j < i
h : ¬∀ x ∈ upperBounds (Iio i), i ≤ x
⊢ False

tactic: refine h_exists_lt ?_
state_before: case neg
α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
s t : Set α
a b : α
inst✝ : LinearOrder γ
i : γ
h_exists_lt : ¬∃ j ∈ upperBounds (Iio i), j < i
h : ¬∀ x ∈ upperBounds (Iio i), i ≤ x
⊢ False
state_after: case neg
α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
s t : Set α
a b : α
inst✝ : LinearOrder γ
i : γ
h_exists_lt : ¬∃ j ∈ upperBounds (Iio i), j < i
h : ¬∀ x ∈ upperBounds (Iio i), i ≤ x
⊢ ∃ j ∈ upperBounds (Iio i), j < i

tactic: push_neg at h
state_before: case neg
α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
s t : Set α
a b : α
inst✝ : LinearOrder γ
i : γ
h_exists_lt : ¬∃ j ∈ upperBounds (Iio i), j < i
h : ¬∀ x ∈ upperBounds (Iio i), i ≤ x
⊢ ∃ j ∈ upperBounds (Iio i), j < i
state_after: case neg
α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
s t : Set α
a b : α
inst✝ : LinearOrder γ
i : γ
h_exists_lt : ¬∃ j ∈ upperBounds (Iio i), j < i
h : ∃ x ∈ upperBounds (Iio i), x < i
⊢ ∃ j ∈ upperBounds (Iio i), j < i

tactic: exact h
state_before: case neg
α : Type u
β : Type v
γ : Type w
ι : Sort x
inst✝² : Preorder α
inst✝¹ : Preorder β
s t : Set α
a b : α
inst✝ : LinearOrder γ
i : γ
h_exists_lt : ¬∃ j ∈ upperBounds (Iio i), j < i
h : ∃ x ∈ upperBounds (Iio i), x < i
⊢ ∃ j ∈ upperBounds (Iio i), j < i
state_after: no goals