Theorem: CompleteLattice.IsCompactElement.exists_finset_of_le_iSup
File: Mathlib/Order/CompactlyGenerated/Basic.lean

tactic: let g : Finset ι → α := fun s => ⨆ i ∈ s, f i
state_before: ι✝ : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f✝ : ι✝ → α
k : α
hk : IsCompactElement k
ι : Type u_3
f : ι → α
h : k ≤ ⨆ i, f i
⊢ ∃ s, k ≤ ⨆ i ∈ s, f i
state_after: ι✝ : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f✝ : ι✝ → α
k : α
hk : IsCompactElement k
ι : Type u_3
f : ι → α
h : k ≤ ⨆ i, f i
g : Finset ι → α := fun s => ⨆ i ∈ s, f i
⊢ ∃ s, k ≤ ⨆ i ∈ s, f i

tactic: have h2 : k ≤ sSup (Set.range g) :=
  h.trans
    (iSup_le fun i =>
      le_sSup_of_le ⟨{i}, rfl⟩
        (le_iSup_of_le i (le_iSup_of_le (Finset.mem_singleton_self i) le_rfl)))
state_before: ι✝ : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f✝ : ι✝ → α
k : α
hk : IsCompactElement k
ι : Type u_3
f : ι → α
h : k ≤ ⨆ i, f i
g : Finset ι → α := fun s => ⨆ i ∈ s, f i
h1 : DirectedOn (fun x x_1 => x ≤ x_1) (range g)
⊢ ∃ s, k ≤ ⨆ i ∈ s, f i
state_after: ι✝ : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f✝ : ι✝ → α
k : α
hk : IsCompactElement k
ι : Type u_3
f : ι → α
h : k ≤ ⨆ i, f i
g : Finset ι → α := fun s => ⨆ i ∈ s, f i
h1 : DirectedOn (fun x x_1 => x ≤ x_1) (range g)
h2 : k ≤ sSup (range g)
⊢ ∃ s, k ≤ ⨆ i ∈ s, f i

tactic: obtain ⟨-, ⟨s, rfl⟩, hs⟩ :=
  (isCompactElement_iff_le_of_directed_sSup_le α k).mp hk (Set.range g) (Set.range_nonempty g)
    h1 h2
state_before: ι✝ : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f✝ : ι✝ → α
k : α
hk : IsCompactElement k
ι : Type u_3
f : ι → α
h : k ≤ ⨆ i, f i
g : Finset ι → α := fun s => ⨆ i ∈ s, f i
h1 : DirectedOn (fun x x_1 => x ≤ x_1) (range g)
h2 : k ≤ sSup (range g)
⊢ ∃ s, k ≤ ⨆ i ∈ s, f i
state_after: case intro.intro.intro
ι✝ : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f✝ : ι✝ → α
k : α
hk : IsCompactElement k
ι : Type u_3
f : ι → α
h : k ≤ ⨆ i, f i
g : Finset ι → α := fun s => ⨆ i ∈ s, f i
h1 : DirectedOn (fun x x_1 => x ≤ x_1) (range g)
h2 : k ≤ sSup (range g)
s : Finset ι
hs : k ≤ g s
⊢ ∃ s, k ≤ ⨆ i ∈ s, f i

tactic: exact ⟨s, hs⟩
state_before: case intro.intro.intro
ι✝ : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f✝ : ι✝ → α
k : α
hk : IsCompactElement k
ι : Type u_3
f : ι → α
h : k ≤ ⨆ i, f i
g : Finset ι → α := fun s => ⨆ i ∈ s, f i
h1 : DirectedOn (fun x x_1 => x ≤ x_1) (range g)
h2 : k ≤ sSup (range g)
s : Finset ι
hs : k ≤ g s
⊢ ∃ s, k ≤ ⨆ i ∈ s, f i
state_after: no goals

tactic: rintro - ⟨s, rfl⟩ - ⟨t, rfl⟩
state_before: ι✝ : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f✝ : ι✝ → α
k : α
hk : IsCompactElement k
ι : Type u_3
f : ι → α
h : k ≤ ⨆ i, f i
g : Finset ι → α := fun s => ⨆ i ∈ s, f i
⊢ DirectedOn (fun x x_1 => x ≤ x_1) (range g)
state_after: case intro.intro
ι✝ : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f✝ : ι✝ → α
k : α
hk : IsCompactElement k
ι : Type u_3
f : ι → α
h : k ≤ ⨆ i, f i
g : Finset ι → α := fun s => ⨆ i ∈ s, f i
s t : Finset ι
⊢ ∃ z ∈ range g, (fun x x_1 => x ≤ x_1) (g s) z ∧ (fun x x_1 => x ≤ x_1) (g t) z

tactic: exact
  ⟨g (s ∪ t), ⟨s ∪ t, rfl⟩, iSup_le_iSup_of_subset Finset.subset_union_left,
    iSup_le_iSup_of_subset Finset.subset_union_right⟩
state_before: case intro.intro
ι✝ : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f✝ : ι✝ → α
k : α
hk : IsCompactElement k
ι : Type u_3
f : ι → α
h : k ≤ ⨆ i, f i
g : Finset ι → α := fun s => ⨆ i ∈ s, f i
s t : Finset ι
⊢ ∃ z ∈ range g, (fun x x_1 => x ≤ x_1) (g s) z ∧ (fun x x_1 => x ≤ x_1) (g t) z
state_after: no goals