Theorem: CompleteLattice.isSupFiniteCompact_iff_all_elements_compact
File: Mathlib/Order/CompactlyGenerated/Basic.lean

tactic: refine ⟨fun h k s hs => ?_, fun h s => ?_⟩
state_before: ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
⊢ IsSupFiniteCompact α ↔ ∀ (k : α), IsCompactElement k
state_after: case refine_1
ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupFiniteCompact α
k : α
s : Set α
hs : k ≤ sSup s
⊢ ∃ t, ↑t ⊆ s ∧ k ≤ t.sup id

case refine_2
ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : ∀ (k : α), IsCompactElement k
s : Set α
⊢ ∃ t, ↑t ⊆ s ∧ sSup s = t.sup id

tactic: obtain ⟨t, ⟨hts, htsup⟩⟩ := h s
state_before: case refine_1
ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupFiniteCompact α
k : α
s : Set α
hs : k ≤ sSup s
⊢ ∃ t, ↑t ⊆ s ∧ k ≤ t.sup id
state_after: case refine_1.intro.intro
ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupFiniteCompact α
k : α
s : Set α
hs : k ≤ sSup s
t : Finset α
hts : ↑t ⊆ s
htsup : sSup s = t.sup id
⊢ ∃ t, ↑t ⊆ s ∧ k ≤ t.sup id

tactic: use t, hts
state_before: case refine_1.intro.intro
ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupFiniteCompact α
k : α
s : Set α
hs : k ≤ sSup s
t : Finset α
hts : ↑t ⊆ s
htsup : sSup s = t.sup id
⊢ ∃ t, ↑t ⊆ s ∧ k ≤ t.sup id
state_after: case right
ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupFiniteCompact α
k : α
s : Set α
hs : k ≤ sSup s
t : Finset α
hts : ↑t ⊆ s
htsup : sSup s = t.sup id
⊢ k ≤ t.sup id

tactic: rwa [← htsup]
state_before: case right
ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupFiniteCompact α
k : α
s : Set α
hs : k ≤ sSup s
t : Finset α
hts : ↑t ⊆ s
htsup : sSup s = t.sup id
⊢ k ≤ t.sup id
state_after: no goals

tactic: obtain ⟨t, ⟨hts, htsup⟩⟩ := h (sSup s) s (by rfl)
state_before: case refine_2
ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : ∀ (k : α), IsCompactElement k
s : Set α
⊢ ∃ t, ↑t ⊆ s ∧ sSup s = t.sup id
state_after: case refine_2.intro.intro
ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : ∀ (k : α), IsCompactElement k
s : Set α
t : Finset α
hts : ↑t ⊆ s
htsup : sSup s ≤ t.sup id
⊢ ∃ t, ↑t ⊆ s ∧ sSup s = t.sup id

tactic: have : sSup s = t.sup id := by
  suffices t.sup id ≤ sSup s by apply le_antisymm <;> assumption
  simp only [id, Finset.sup_le_iff]
  intro x hx
  exact le_sSup _ _ (hts hx)
state_before: case refine_2.intro.intro
ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : ∀ (k : α), IsCompactElement k
s : Set α
t : Finset α
hts : ↑t ⊆ s
htsup : sSup s ≤ t.sup id
⊢ ∃ t, ↑t ⊆ s ∧ sSup s = t.sup id
state_after: case refine_2.intro.intro
ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : ∀ (k : α), IsCompactElement k
s : Set α
t : Finset α
hts : ↑t ⊆ s
htsup : sSup s ≤ t.sup id
this : sSup s = t.sup id
⊢ ∃ t, ↑t ⊆ s ∧ sSup s = t.sup id

tactic: exact ⟨t, hts, this⟩
state_before: case refine_2.intro.intro
ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : ∀ (k : α), IsCompactElement k
s : Set α
t : Finset α
hts : ↑t ⊆ s
htsup : sSup s ≤ t.sup id
this : sSup s = t.sup id
⊢ ∃ t, ↑t ⊆ s ∧ sSup s = t.sup id
state_after: no goals

tactic: rfl
state_before: ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : ∀ (k : α), IsCompactElement k
s : Set α
⊢ sSup s ≤ sSup s
state_after: no goals

tactic: suffices t.sup id ≤ sSup s by apply le_antisymm <;> assumption
state_before: ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : ∀ (k : α), IsCompactElement k
s : Set α
t : Finset α
hts : ↑t ⊆ s
htsup : sSup s ≤ t.sup id
⊢ sSup s = t.sup id
state_after: ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : ∀ (k : α), IsCompactElement k
s : Set α
t : Finset α
hts : ↑t ⊆ s
htsup : sSup s ≤ t.sup id
⊢ t.sup id ≤ sSup s

tactic: simp only [id, Finset.sup_le_iff]
state_before: ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : ∀ (k : α), IsCompactElement k
s : Set α
t : Finset α
hts : ↑t ⊆ s
htsup : sSup s ≤ t.sup id
⊢ t.sup id ≤ sSup s
state_after: ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : ∀ (k : α), IsCompactElement k
s : Set α
t : Finset α
hts : ↑t ⊆ s
htsup : sSup s ≤ t.sup id
⊢ ∀ b ∈ t, b ≤ sSup s

tactic: intro x hx
state_before: ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : ∀ (k : α), IsCompactElement k
s : Set α
t : Finset α
hts : ↑t ⊆ s
htsup : sSup s ≤ t.sup id
⊢ ∀ b ∈ t, b ≤ sSup s
state_after: ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : ∀ (k : α), IsCompactElement k
s : Set α
t : Finset α
hts : ↑t ⊆ s
htsup : sSup s ≤ t.sup id
x : α
hx : x ∈ t
⊢ x ≤ sSup s

tactic: exact le_sSup _ _ (hts hx)
state_before: ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : ∀ (k : α), IsCompactElement k
s : Set α
t : Finset α
hts : ↑t ⊆ s
htsup : sSup s ≤ t.sup id
x : α
hx : x ∈ t
⊢ x ≤ sSup s
state_after: no goals

tactic: apply le_antisymm <;> assumption
state_before: ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : ∀ (k : α), IsCompactElement k
s : Set α
t : Finset α
hts : ↑t ⊆ s
htsup : sSup s ≤ t.sup id
this : t.sup id ≤ sSup s
⊢ sSup s = t.sup id
state_after: no goals