Theorem: CompleteLattice.IsCompactElement.directed_sSup_lt_of_lt
File: Mathlib/Order/CompactlyGenerated.lean

tactic: rw [isCompactElement_iff_le_of_directed_sSup_le] at hk
state_before: ι : Sort ?u.12274
α✝ : Type ?u.12277
inst✝¹ : CompleteLattice α✝
f : ι → α✝
α : Type u_1
inst✝ : CompleteLattice α
k : α
hk : IsCompactElement k
s : Set α
hemp : Set.Nonempty s
hdir : DirectedOn (fun x x_1 => x ≤ x_1) s
hbelow : ∀ (x : α), x ∈ s → x < k
⊢ sSup s < k

tactic: by_contra h
state_before: ι : Sort ?u.12274
α✝ : Type ?u.12277
inst✝¹ : CompleteLattice α✝
f : ι → α✝
α : Type u_1
inst✝ : CompleteLattice α
k : α
hk : ∀ (s : Set α), Set.Nonempty s → DirectedOn (fun x x_1 => x ≤ x_1) s → k ≤ sSup s → ∃ x, x ∈ s ∧ k ≤ x
s : Set α
hemp : Set.Nonempty s
hdir : DirectedOn (fun x x_1 => x ≤ x_1) s
hbelow : ∀ (x : α), x ∈ s → x < k
⊢ sSup s < k

tactic: have sSup' : sSup s ≤ k := sSup_le s k fun s hs => (hbelow s hs).le
state_before: ι : Sort ?u.12274
α✝ : Type ?u.12277
inst✝¹ : CompleteLattice α✝
f : ι → α✝
α : Type u_1
inst✝ : CompleteLattice α
k : α
hk : ∀ (s : Set α), Set.Nonempty s → DirectedOn (fun x x_1 => x ≤ x_1) s → k ≤ sSup s → ∃ x, x ∈ s ∧ k ≤ x
s : Set α
hemp : Set.Nonempty s
hdir : DirectedOn (fun x x_1 => x ≤ x_1) s
hbelow : ∀ (x : α), x ∈ s → x < k
h : ¬sSup s < k
⊢ False

tactic: replace sSup : sSup s = k := eq_iff_le_not_lt.mpr ⟨sSup', h⟩
state_before: ι : Sort ?u.12274
α✝ : Type ?u.12277
inst✝¹ : CompleteLattice α✝
f : ι → α✝
α : Type u_1
inst✝ : CompleteLattice α
k : α
hk : ∀ (s : Set α), Set.Nonempty s → DirectedOn (fun x x_1 => x ≤ x_1) s → k ≤ sSup s → ∃ x, x ∈ s ∧ k ≤ x
s : Set α
hemp : Set.Nonempty s
hdir : DirectedOn (fun x x_1 => x ≤ x_1) s
hbelow : ∀ (x : α), x ∈ s → x < k
h : ¬sSup s < k
sSup' : sSup s ≤ k
⊢ False

tactic: obtain ⟨x, hxs, hkx⟩ := hk s hemp hdir sSup.symm.le
state_before: ι : Sort ?u.12274
α✝ : Type ?u.12277
inst✝¹ : CompleteLattice α✝
f : ι → α✝
α : Type u_1
inst✝ : CompleteLattice α
k : α
hk : ∀ (s : Set α), Set.Nonempty s → DirectedOn (fun x x_1 => x ≤ x_1) s → k ≤ SupSet.sSup s → ∃ x, x ∈ s ∧ k ≤ x
s : Set α
hemp : Set.Nonempty s
hdir : DirectedOn (fun x x_1 => x ≤ x_1) s
hbelow : ∀ (x : α), x ∈ s → x < k
h : ¬SupSet.sSup s < k
sSup' : SupSet.sSup s ≤ k
sSup : SupSet.sSup s = k
⊢ False

tactic: obtain hxk := hbelow x hxs
state_before: case intro.intro
ι : Sort ?u.12274
α✝ : Type ?u.12277
inst✝¹ : CompleteLattice α✝
f : ι → α✝
α : Type u_1
inst✝ : CompleteLattice α
k : α
hk : ∀ (s : Set α), Set.Nonempty s → DirectedOn (fun x x_1 => x ≤ x_1) s → k ≤ SupSet.sSup s → ∃ x, x ∈ s ∧ k ≤ x
s : Set α
hemp : Set.Nonempty s
hdir : DirectedOn (fun x x_1 => x ≤ x_1) s
hbelow : ∀ (x : α), x ∈ s → x < k
h : ¬SupSet.sSup s < k
sSup' : SupSet.sSup s ≤ k
sSup : SupSet.sSup s = k
x : α
hxs : x ∈ s
hkx : k ≤ x
⊢ False

tactic: exact hxk.ne (hxk.le.antisymm hkx)
state_before: case intro.intro
ι : Sort ?u.12274
α✝ : Type ?u.12277
inst✝¹ : CompleteLattice α✝
f : ι → α✝
α : Type u_1
inst✝ : CompleteLattice α
k : α
hk : ∀ (s : Set α), Set.Nonempty s → DirectedOn (fun x x_1 => x ≤ x_1) s → k ≤ SupSet.sSup s → ∃ x, x ∈ s ∧ k ≤ x
s : Set α
hemp : Set.Nonempty s
hdir : DirectedOn (fun x x_1 => x ≤ x_1) s
hbelow : ∀ (x : α), x ∈ s → x < k
h : ¬SupSet.sSup s < k
sSup' : SupSet.sSup s ≤ k
sSup : SupSet.sSup s = k
x : α
hxs : x ∈ s
hkx : k ≤ x
hxk : x < k
⊢ False