Theorem: CompleteLattice.IsSupClosedCompact.wellFounded
File: Mathlib/Order/CompactlyGenerated/Basic.lean

tactic: refine RelEmbedding.wellFounded_iff_no_descending_seq.mpr ⟨fun a => ?_⟩
state_before: ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupClosedCompact α
⊢ WellFounded fun x x_1 => x > x_1
state_after: ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupClosedCompact α
a : (fun x x_1 => x > x_1) ↪r fun x x_1 => x > x_1
⊢ False

tactic: suffices sSup (Set.range a) ∈ Set.range a by
  obtain ⟨n, hn⟩ := Set.mem_range.mp this
  have h' : sSup (Set.range a) < a (n + 1) := by
    change _ > _
    simp [← hn, a.map_rel_iff]
  apply lt_irrefl (a (n + 1))
  apply lt_of_le_of_lt _ h'
  apply le_sSup
  apply Set.mem_range_self
state_before: ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupClosedCompact α
a : (fun x x_1 => x > x_1) ↪r fun x x_1 => x > x_1
⊢ False
state_after: ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupClosedCompact α
a : (fun x x_1 => x > x_1) ↪r fun x x_1 => x > x_1
⊢ sSup (range ⇑a) ∈ range ⇑a

tactic: apply h (Set.range a)
state_before: ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupClosedCompact α
a : (fun x x_1 => x > x_1) ↪r fun x x_1 => x > x_1
⊢ sSup (range ⇑a) ∈ range ⇑a
state_after: case x
ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupClosedCompact α
a : (fun x x_1 => x > x_1) ↪r fun x x_1 => x > x_1
⊢ (range ⇑a).Nonempty

case a
ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupClosedCompact α
a : (fun x x_1 => x > x_1) ↪r fun x x_1 => x > x_1
⊢ SupClosed (range ⇑a)

tactic: obtain ⟨n, hn⟩ := Set.mem_range.mp this
state_before: ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupClosedCompact α
a : (fun x x_1 => x > x_1) ↪r fun x x_1 => x > x_1
this : sSup (range ⇑a) ∈ range ⇑a
⊢ False
state_after: case intro
ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupClosedCompact α
a : (fun x x_1 => x > x_1) ↪r fun x x_1 => x > x_1
this : sSup (range ⇑a) ∈ range ⇑a
n : ℕ
hn : a n = sSup (range ⇑a)
⊢ False

tactic: have h' : sSup (Set.range a) < a (n + 1) := by
  change _ > _
  simp [← hn, a.map_rel_iff]
state_before: case intro
ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupClosedCompact α
a : (fun x x_1 => x > x_1) ↪r fun x x_1 => x > x_1
this : sSup (range ⇑a) ∈ range ⇑a
n : ℕ
hn : a n = sSup (range ⇑a)
⊢ False
state_after: case intro
ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupClosedCompact α
a : (fun x x_1 => x > x_1) ↪r fun x x_1 => x > x_1
this : sSup (range ⇑a) ∈ range ⇑a
n : ℕ
hn : a n = sSup (range ⇑a)
h' : sSup (range ⇑a) < a (n + 1)
⊢ False

tactic: apply lt_irrefl (a (n + 1))
state_before: case intro
ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupClosedCompact α
a : (fun x x_1 => x > x_1) ↪r fun x x_1 => x > x_1
this : sSup (range ⇑a) ∈ range ⇑a
n : ℕ
hn : a n = sSup (range ⇑a)
h' : sSup (range ⇑a) < a (n + 1)
⊢ False
state_after: case intro
ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupClosedCompact α
a : (fun x x_1 => x > x_1) ↪r fun x x_1 => x > x_1
this : sSup (range ⇑a) ∈ range ⇑a
n : ℕ
hn : a n = sSup (range ⇑a)
h' : sSup (range ⇑a) < a (n + 1)
⊢ a (n + 1) < a (n + 1)

tactic: apply lt_of_le_of_lt _ h'
state_before: case intro
ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupClosedCompact α
a : (fun x x_1 => x > x_1) ↪r fun x x_1 => x > x_1
this : sSup (range ⇑a) ∈ range ⇑a
n : ℕ
hn : a n = sSup (range ⇑a)
h' : sSup (range ⇑a) < a (n + 1)
⊢ a (n + 1) < a (n + 1)
state_after: ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupClosedCompact α
a : (fun x x_1 => x > x_1) ↪r fun x x_1 => x > x_1
this : sSup (range ⇑a) ∈ range ⇑a
n : ℕ
hn : a n = sSup (range ⇑a)
h' : sSup (range ⇑a) < a (n + 1)
⊢ a (n + 1) ≤ sSup (range ⇑a)

tactic: apply le_sSup
state_before: ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupClosedCompact α
a : (fun x x_1 => x > x_1) ↪r fun x x_1 => x > x_1
this : sSup (range ⇑a) ∈ range ⇑a
n : ℕ
hn : a n = sSup (range ⇑a)
h' : sSup (range ⇑a) < a (n + 1)
⊢ a (n + 1) ≤ sSup (range ⇑a)
state_after: case a
ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupClosedCompact α
a : (fun x x_1 => x > x_1) ↪r fun x x_1 => x > x_1
this : sSup (range ⇑a) ∈ range ⇑a
n : ℕ
hn : a n = sSup (range ⇑a)
h' : sSup (range ⇑a) < a (n + 1)
⊢ a (n + 1) ∈ range ⇑a

tactic: apply Set.mem_range_self
state_before: case a
ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupClosedCompact α
a : (fun x x_1 => x > x_1) ↪r fun x x_1 => x > x_1
this : sSup (range ⇑a) ∈ range ⇑a
n : ℕ
hn : a n = sSup (range ⇑a)
h' : sSup (range ⇑a) < a (n + 1)
⊢ a (n + 1) ∈ range ⇑a
state_after: no goals

tactic: change _ > _
state_before: ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupClosedCompact α
a : (fun x x_1 => x > x_1) ↪r fun x x_1 => x > x_1
this : sSup (range ⇑a) ∈ range ⇑a
n : ℕ
hn : a n = sSup (range ⇑a)
⊢ sSup (range ⇑a) < a (n + 1)
state_after: ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupClosedCompact α
a : (fun x x_1 => x > x_1) ↪r fun x x_1 => x > x_1
this : sSup (range ⇑a) ∈ range ⇑a
n : ℕ
hn : a n = sSup (range ⇑a)
⊢ a (n + 1) > sSup (range ⇑a)

tactic: simp [← hn, a.map_rel_iff]
state_before: ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupClosedCompact α
a : (fun x x_1 => x > x_1) ↪r fun x x_1 => x > x_1
this : sSup (range ⇑a) ∈ range ⇑a
n : ℕ
hn : a n = sSup (range ⇑a)
⊢ a (n + 1) > sSup (range ⇑a)
state_after: no goals

tactic: use a 37
state_before: case x
ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupClosedCompact α
a : (fun x x_1 => x > x_1) ↪r fun x x_1 => x > x_1
⊢ (range ⇑a).Nonempty
state_after: case h
ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupClosedCompact α
a : (fun x x_1 => x > x_1) ↪r fun x x_1 => x > x_1
⊢ a 37 ∈ range ⇑a

tactic: apply Set.mem_range_self
state_before: case h
ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupClosedCompact α
a : (fun x x_1 => x > x_1) ↪r fun x x_1 => x > x_1
⊢ a 37 ∈ range ⇑a
state_after: no goals

tactic: rintro x ⟨m, hm⟩ y ⟨n, hn⟩
state_before: case a
ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupClosedCompact α
a : (fun x x_1 => x > x_1) ↪r fun x x_1 => x > x_1
⊢ SupClosed (range ⇑a)
state_after: case a.intro.intro
ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupClosedCompact α
a : (fun x x_1 => x > x_1) ↪r fun x x_1 => x > x_1
x : α
m : ℕ
hm : a m = x
y : α
n : ℕ
hn : a n = y
⊢ x ⊔ y ∈ range ⇑a

tactic: use m ⊔ n
state_before: case a.intro.intro
ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupClosedCompact α
a : (fun x x_1 => x > x_1) ↪r fun x x_1 => x > x_1
x : α
m : ℕ
hm : a m = x
y : α
n : ℕ
hn : a n = y
⊢ x ⊔ y ∈ range ⇑a
state_after: case h
ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupClosedCompact α
a : (fun x x_1 => x > x_1) ↪r fun x x_1 => x > x_1
x : α
m : ℕ
hm : a m = x
y : α
n : ℕ
hn : a n = y
⊢ a (m ⊔ n) = x ⊔ y

tactic: rw [← hm, ← hn]
state_before: case h
ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupClosedCompact α
a : (fun x x_1 => x > x_1) ↪r fun x x_1 => x > x_1
x : α
m : ℕ
hm : a m = x
y : α
n : ℕ
hn : a n = y
⊢ a (m ⊔ n) = x ⊔ y
state_after: case h
ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupClosedCompact α
a : (fun x x_1 => x > x_1) ↪r fun x x_1 => x > x_1
x : α
m : ℕ
hm : a m = x
y : α
n : ℕ
hn : a n = y
⊢ a (m ⊔ n) = a m ⊔ a n

tactic: apply RelHomClass.map_sup a
state_before: case h
ι : Sort u_1
α : Type u_2
inst✝ : CompleteLattice α
f : ι → α
h : IsSupClosedCompact α
a : (fun x x_1 => x > x_1) ↪r fun x x_1 => x > x_1
x : α
m : ℕ
hm : a m = x
y : α
n : ℕ
hn : a n = y
⊢ a (m ⊔ n) = a m ⊔ a n
state_after: no goals