Theorem: Finset.mem_of_max
File: Mathlib/Data/Finset/Lattice.lean

tactic: induction' s using Finset.induction_on with b s _ ih
state_before: F : Type ?u.314698
α : Type u_1
β : Type ?u.314704
γ : Type ?u.314707
ι : Type ?u.314710
κ : Type ?u.314713
inst✝ : LinearOrder α
s : Finset α
⊢ ∀ {a : α}, Finset.max s = ↑a → a ∈ s

tactic: intro _ H
state_before: case empty
F : Type ?u.314698
α : Type u_1
β : Type ?u.314704
γ : Type ?u.314707
ι : Type ?u.314710
κ : Type ?u.314713
inst✝ : LinearOrder α
⊢ ∀ {a : α}, Finset.max ∅ = ↑a → a ∈ ∅

tactic: cases H
state_before: case empty
F : Type ?u.314698
α : Type u_1
β : Type ?u.314704
γ : Type ?u.314707
ι : Type ?u.314710
κ : Type ?u.314713
inst✝ : LinearOrder α
a✝ : α
H : Finset.max ∅ = ↑a✝
⊢ a✝ ∈ ∅

tactic: intro a h
state_before: case insert
F : Type ?u.314698
α : Type u_1
β : Type ?u.314704
γ : Type ?u.314707
ι : Type ?u.314710
κ : Type ?u.314713
inst✝ : LinearOrder α
b : α
s : Finset α
a✝ : ¬b ∈ s
ih : ∀ {a : α}, Finset.max s = ↑a → a ∈ s
⊢ ∀ {a : α}, Finset.max (insert b s) = ↑a → a ∈ insert b s

tactic: by_cases p : b = a
state_before: case insert
F : Type ?u.314698
α : Type u_1
β : Type ?u.314704
γ : Type ?u.314707
ι : Type ?u.314710
κ : Type ?u.314713
inst✝ : LinearOrder α
b : α
s : Finset α
a✝ : ¬b ∈ s
ih : ∀ {a : α}, Finset.max s = ↑a → a ∈ s
a : α
h : Finset.max (insert b s) = ↑a
⊢ a ∈ insert b s

tactic: induction p
state_before: case pos
F : Type ?u.314698
α : Type u_1
β : Type ?u.314704
γ : Type ?u.314707
ι : Type ?u.314710
κ : Type ?u.314713
inst✝ : LinearOrder α
b : α
s : Finset α
a✝ : ¬b ∈ s
ih : ∀ {a : α}, Finset.max s = ↑a → a ∈ s
a : α
h : Finset.max (insert b s) = ↑a
p : b = a
⊢ a ∈ insert b s

tactic: exact mem_insert_self b s
state_before: case pos.refl
F : Type ?u.314698
α : Type u_1
β : Type ?u.314704
γ : Type ?u.314707
ι : Type ?u.314710
κ : Type ?u.314713
inst✝ : LinearOrder α
b : α
s : Finset α
a✝ : ¬b ∈ s
ih : ∀ {a : α}, Finset.max s = ↑a → a ∈ s
a : α
h : Finset.max (insert b s) = ↑b
⊢ b ∈ insert b s

tactic: cases' max_choice (↑b) s.max with q q <;> rw [max_insert, q] at h
state_before: case neg
F : Type ?u.314698
α : Type u_1
β : Type ?u.314704
γ : Type ?u.314707
ι : Type ?u.314710
κ : Type ?u.314713
inst✝ : LinearOrder α
b : α
s : Finset α
a✝ : ¬b ∈ s
ih : ∀ {a : α}, Finset.max s = ↑a → a ∈ s
a : α
h : Finset.max (insert b s) = ↑a
p : ¬b = a
⊢ a ∈ insert b s

tactic: cases h
state_before: case neg.inl
F : Type ?u.314698
α : Type u_1
β : Type ?u.314704
γ : Type ?u.314707
ι : Type ?u.314710
κ : Type ?u.314713
inst✝ : LinearOrder α
b : α
s : Finset α
a✝ : ¬b ∈ s
ih : ∀ {a : α}, Finset.max s = ↑a → a ∈ s
a : α
h : ↑b = ↑a
p : ¬b = a
q : max (↑b) (Finset.max s) = ↑b
⊢ a ∈ insert b s

tactic: cases p rfl
state_before: case neg.inl.refl
F : Type ?u.314698
α : Type u_1
β : Type ?u.314704
γ : Type ?u.314707
ι : Type ?u.314710
κ : Type ?u.314713
inst✝ : LinearOrder α
b : α
s : Finset α
a✝ : ¬b ∈ s
ih : ∀ {a : α}, Finset.max s = ↑a → a ∈ s
q : max (↑b) (Finset.max s) = ↑b
p : ¬b = b
⊢ b ∈ insert b s

tactic: exact mem_insert_of_mem (ih h)
state_before: case neg.inr
F : Type ?u.314698
α : Type u_1
β : Type ?u.314704
γ : Type ?u.314707
ι : Type ?u.314710
κ : Type ?u.314713
inst✝ : LinearOrder α
b : α
s : Finset α
a✝ : ¬b ∈ s
ih : ∀ {a : α}, Finset.max s = ↑a → a ∈ s
a : α
h : Finset.max s = ↑a
p : ¬b = a
q : max (↑b) (Finset.max s) = Finset.max s
⊢ a ∈ insert b s