Theorem: CompleteLattice.WellFounded.finite_of_setIndependent
File: Mathlib/Order/CompactlyGenerated.lean

tactic: refine' Set.not_infinite.mp fun contra => _
state_before: ι : Sort ?u.78582
α : Type u_1
inst✝ : CompleteLattice α
f : ι → α
h : WellFounded fun x x_1 => x > x_1
s : Set α
hs : SetIndependent s
⊢ Set.Finite s

tactic: obtain ⟨t, ht₁, ht₂⟩ := WellFounded.isSupFiniteCompact α h s
state_before: ι : Sort ?u.78582
α : Type u_1
inst✝ : CompleteLattice α
f : ι → α
h : WellFounded fun x x_1 => x > x_1
s : Set α
hs : SetIndependent s
contra : Set.Infinite s
⊢ False

tactic: replace contra : ∃ x : α, x ∈ s ∧ x ≠ ⊥ ∧ x ∉ t
state_before: case intro.intro
ι : Sort ?u.78582
α : Type u_1
inst✝ : CompleteLattice α
f : ι → α
h : WellFounded fun x x_1 => x > x_1
s : Set α
hs : SetIndependent s
contra : Set.Infinite s
t : Finset α
ht₁ : ↑t ⊆ s
ht₂ : sSup s = Finset.sup t id
⊢ False

tactic: obtain ⟨x, hx₀, hx₁, hx₂⟩ := contra
state_before: case intro.intro
ι : Sort ?u.78582
α : Type u_1
inst✝ : CompleteLattice α
f : ι → α
h : WellFounded fun x x_1 => x > x_1
s : Set α
hs : SetIndependent s
t : Finset α
ht₁ : ↑t ⊆ s
ht₂ : sSup s = Finset.sup t id
contra : ∃ x, x ∈ s ∧ x ≠ ⊥ ∧ ¬x ∈ t
⊢ False

tactic: replace hs : x ⊓ sSup s = ⊥
state_before: case intro.intro.intro.intro.intro
ι : Sort ?u.78582
α : Type u_1
inst✝ : CompleteLattice α
f : ι → α
h : WellFounded fun x x_1 => x > x_1
s : Set α
hs : SetIndependent s
t : Finset α
ht₁ : ↑t ⊆ s
ht₂ : sSup s = Finset.sup t id
x : α
hx₀ : x ∈ s
hx₁ : x ≠ ⊥
hx₂ : ¬x ∈ t
⊢ False

tactic: apply hx₁
state_before: case intro.intro.intro.intro.intro
ι : Sort ?u.78582
α : Type u_1
inst✝ : CompleteLattice α
f : ι → α
h : WellFounded fun x x_1 => x > x_1
s : Set α
t : Finset α
ht₁ : ↑t ⊆ s
ht₂ : sSup s = Finset.sup t id
x : α
hx₀ : x ∈ s
hx₁ : x ≠ ⊥
hx₂ : ¬x ∈ t
hs : x ⊓ sSup s = ⊥
⊢ False

tactic: rw [← hs, eq_comm, inf_eq_left]
state_before: case intro.intro.intro.intro.intro
ι : Sort ?u.78582
α : Type u_1
inst✝ : CompleteLattice α
f : ι → α
h : WellFounded fun x x_1 => x > x_1
s : Set α
t : Finset α
ht₁ : ↑t ⊆ s
ht₂ : sSup s = Finset.sup t id
x : α
hx₀ : x ∈ s
hx₁ : x ≠ ⊥
hx₂ : ¬x ∈ t
hs : x ⊓ sSup s = ⊥
⊢ x = ⊥

tactic: exact le_sSup _ _ hx₀
state_before: case intro.intro.intro.intro.intro
ι : Sort ?u.78582
α : Type u_1
inst✝ : CompleteLattice α
f : ι → α
h : WellFounded fun x x_1 => x > x_1
s : Set α
t : Finset α
ht₁ : ↑t ⊆ s
ht₂ : sSup s = Finset.sup t id
x : α
hx₀ : x ∈ s
hx₁ : x ≠ ⊥
hx₂ : ¬x ∈ t
hs : x ⊓ sSup s = ⊥
⊢ x ≤ sSup s

tactic: have : (s \ (insert ⊥ t : Finset α)).Infinite := contra.diff (Finset.finite_toSet _)
state_before: case contra
ι : Sort ?u.78582
α : Type u_1
inst✝ : CompleteLattice α
f : ι → α
h : WellFounded fun x x_1 => x > x_1
s : Set α
hs : SetIndependent s
contra : Set.Infinite s
t : Finset α
ht₁ : ↑t ⊆ s
ht₂ : sSup s = Finset.sup t id
⊢ ∃ x, x ∈ s ∧ x ≠ ⊥ ∧ ¬x ∈ t

tactic: obtain ⟨x, hx₁, hx₂⟩ := this.nonempty
state_before: case contra
ι : Sort ?u.78582
α : Type u_1
inst✝ : CompleteLattice α
f : ι → α
h : WellFounded fun x x_1 => x > x_1
s : Set α
hs : SetIndependent s
contra : Set.Infinite s
t : Finset α
ht₁ : ↑t ⊆ s
ht₂ : sSup s = Finset.sup t id
this : Set.Infinite (s \ ↑(insert ⊥ t))
⊢ ∃ x, x ∈ s ∧ x ≠ ⊥ ∧ ¬x ∈ t

tactic: exact ⟨x, hx₁, by simpa [not_or] using hx₂⟩
state_before: case contra.intro.intro
ι : Sort ?u.78582
α : Type u_1
inst✝ : CompleteLattice α
f : ι → α
h : WellFounded fun x x_1 => x > x_1
s : Set α
hs : SetIndependent s
contra : Set.Infinite s
t : Finset α
ht₁ : ↑t ⊆ s
ht₂ : sSup s = Finset.sup t id
this : Set.Infinite (s \ ↑(insert ⊥ t))
x : α
hx₁ : x ∈ s
hx₂ : ¬x ∈ ↑(insert ⊥ t)
⊢ ∃ x, x ∈ s ∧ x ≠ ⊥ ∧ ¬x ∈ t

tactic: simpa [not_or] using hx₂
state_before: ι : Sort ?u.78582
α : Type u_1
inst✝ : CompleteLattice α
f : ι → α
h : WellFounded fun x x_1 => x > x_1
s : Set α
hs : SetIndependent s
contra : Set.Infinite s
t : Finset α
ht₁ : ↑t ⊆ s
ht₂ : sSup s = Finset.sup t id
this : Set.Infinite (s \ ↑(insert ⊥ t))
x : α
hx₁ : x ∈ s
hx₂ : ¬x ∈ ↑(insert ⊥ t)
⊢ x ≠ ⊥ ∧ ¬x ∈ t

tactic: have := hs.mono (by simp [ht₁, hx₀, -Set.union_singleton] : ↑t ∪ {x} ≤ s) (by simp : x ∈ _)
state_before: case hs
ι : Sort ?u.78582
α : Type u_1
inst✝ : CompleteLattice α
f : ι → α
h : WellFounded fun x x_1 => x > x_1
s : Set α
hs : SetIndependent s
t : Finset α
ht₁ : ↑t ⊆ s
ht₂ : sSup s = Finset.sup t id
x : α
hx₀ : x ∈ s
hx₁ : x ≠ ⊥
hx₂ : ¬x ∈ t
⊢ x ⊓ sSup s = ⊥

tactic: simpa [Disjoint, hx₂, ← t.sup_id_eq_sSup, ← ht₂] using this.eq_bot
state_before: case hs
ι : Sort ?u.78582
α : Type u_1
inst✝ : CompleteLattice α
f : ι → α
h : WellFounded fun x x_1 => x > x_1
s : Set α
hs : SetIndependent s
t : Finset α
ht₁ : ↑t ⊆ s
ht₂ : sSup s = Finset.sup t id
x : α
hx₀ : x ∈ s
hx₁ : x ≠ ⊥
hx₂ : ¬x ∈ t
this : Disjoint x (sSup ((↑t ∪ {x}) \ {x}))
⊢ x ⊓ sSup s = ⊥

tactic: simp [ht₁, hx₀, -Set.union_singleton]
state_before: ι : Sort ?u.78582
α : Type u_1
inst✝ : CompleteLattice α
f : ι → α
h : WellFounded fun x x_1 => x > x_1
s : Set α
hs : SetIndependent s
t : Finset α
ht₁ : ↑t ⊆ s
ht₂ : sSup s = Finset.sup t id
x : α
hx₀ : x ∈ s
hx₁ : x ≠ ⊥
hx₂ : ¬x ∈ t
⊢ ↑t ∪ {x} ≤ s

tactic: simp
state_before: ι : Sort ?u.78582
α : Type u_1
inst✝ : CompleteLattice α
f : ι → α
h : WellFounded fun x x_1 => x > x_1
s : Set α
hs : SetIndependent s
t : Finset α
ht₁ : ↑t ⊆ s
ht₂ : sSup s = Finset.sup t id
x : α
hx₀ : x ∈ s
hx₁ : x ≠ ⊥
hx₂ : ¬x ∈ t
⊢ x ∈ ↑t ∪ {x}