Theorem: Finset.exists_mem_eq_sup'
File: Mathlib/Data/Finset/Lattice.lean

tactic: induction H using Finset.Nonempty.cons_induction with
| singleton c =>  exact ⟨c, mem_singleton_self c, rfl⟩
| cons c s hcs hs ih =>
  rcases ih with ⟨b, hb, h'⟩
  rw [sup'_cons hs, h']
  cases le_total (f b) (f c) with
  | inl h => exact ⟨c, mem_cons.2 (Or.inl rfl), sup_eq_left.2 h⟩
  | inr h => exact ⟨b, mem_cons.2 (Or.inr hb), sup_eq_right.2 h⟩
state_before: F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
s : Finset ι
H : s.Nonempty
f✝ : ι → α
a : α
f : ι → α
⊢ ∃ i ∈ s, s.sup' H f = f i
state_after: no goals

tactic: exact ⟨c, mem_singleton_self c, rfl⟩
state_before: case singleton
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
s : Finset ι
H : s.Nonempty
f✝ : ι → α
a : α
f : ι → α
c : ι
⊢ ∃ i ∈ {c}, {c}.sup' ⋯ f = f i
state_after: no goals

tactic: rcases ih with ⟨b, hb, h'⟩
state_before: case cons
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
s✝ : Finset ι
H : s✝.Nonempty
f✝ : ι → α
a : α
f : ι → α
c : ι
s : Finset ι
hcs : c ∉ s
hs : s.Nonempty
ih : ∃ i ∈ s, s.sup' hs f = f i
⊢ ∃ i ∈ cons c s hcs, (cons c s hcs).sup' ⋯ f = f i
state_after: case cons.intro.intro
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
s✝ : Finset ι
H : s✝.Nonempty
f✝ : ι → α
a : α
f : ι → α
c : ι
s : Finset ι
hcs : c ∉ s
hs : s.Nonempty
b : ι
hb : b ∈ s
h' : s.sup' hs f = f b
⊢ ∃ i ∈ cons c s hcs, (cons c s hcs).sup' ⋯ f = f i

tactic: rw [sup'_cons hs, h']
state_before: case cons.intro.intro
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
s✝ : Finset ι
H : s✝.Nonempty
f✝ : ι → α
a : α
f : ι → α
c : ι
s : Finset ι
hcs : c ∉ s
hs : s.Nonempty
b : ι
hb : b ∈ s
h' : s.sup' hs f = f b
⊢ ∃ i ∈ cons c s hcs, (cons c s hcs).sup' ⋯ f = f i
state_after: case cons.intro.intro
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
s✝ : Finset ι
H : s✝.Nonempty
f✝ : ι → α
a : α
f : ι → α
c : ι
s : Finset ι
hcs : c ∉ s
hs : s.Nonempty
b : ι
hb : b ∈ s
h' : s.sup' hs f = f b
⊢ ∃ i ∈ cons c s hcs, f c ⊔ f b = f i

tactic: cases le_total (f b) (f c) with
| inl h => exact ⟨c, mem_cons.2 (Or.inl rfl), sup_eq_left.2 h⟩
| inr h => exact ⟨b, mem_cons.2 (Or.inr hb), sup_eq_right.2 h⟩
state_before: case cons.intro.intro
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
s✝ : Finset ι
H : s✝.Nonempty
f✝ : ι → α
a : α
f : ι → α
c : ι
s : Finset ι
hcs : c ∉ s
hs : s.Nonempty
b : ι
hb : b ∈ s
h' : s.sup' hs f = f b
⊢ ∃ i ∈ cons c s hcs, f c ⊔ f b = f i
state_after: no goals

tactic: exact ⟨c, mem_cons.2 (Or.inl rfl), sup_eq_left.2 h⟩
state_before: case cons.intro.intro.inl
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
s✝ : Finset ι
H : s✝.Nonempty
f✝ : ι → α
a : α
f : ι → α
c : ι
s : Finset ι
hcs : c ∉ s
hs : s.Nonempty
b : ι
hb : b ∈ s
h' : s.sup' hs f = f b
h : f b ≤ f c
⊢ ∃ i ∈ cons c s hcs, f c ⊔ f b = f i
state_after: no goals

tactic: exact ⟨b, mem_cons.2 (Or.inr hb), sup_eq_right.2 h⟩
state_before: case cons.intro.intro.inr
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
s✝ : Finset ι
H : s✝.Nonempty
f✝ : ι → α
a : α
f : ι → α
c : ι
s : Finset ι
hcs : c ∉ s
hs : s.Nonempty
b : ι
hb : b ∈ s
h' : s.sup' hs f = f b
h : f c ≤ f b
⊢ ∃ i ∈ cons c s hcs, f c ⊔ f b = f i
state_after: no goals