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_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
s : Finset α
⊢ ∀ {a : α}, s.max = ↑a → a ∈ s
state_after: case empty
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
⊢ ∀ {a : α}, ∅.max = ↑a → a ∈ ∅

case insert
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
b : α
s : Finset α
a✝ : b ∉ s
ih : ∀ {a : α}, s.max = ↑a → a ∈ s
⊢ ∀ {a : α}, (insert b s).max = ↑a → a ∈ insert b s

tactic: intro _ H
state_before: case empty
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
⊢ ∀ {a : α}, ∅.max = ↑a → a ∈ ∅
state_after: case empty
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
a✝ : α
H : ∅.max = ↑a✝
⊢ a✝ ∈ ∅

tactic: cases H
state_before: case empty
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
a✝ : α
H : ∅.max = ↑a✝
⊢ a✝ ∈ ∅
state_after: no goals

tactic: intro a h
state_before: case insert
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
b : α
s : Finset α
a✝ : b ∉ s
ih : ∀ {a : α}, s.max = ↑a → a ∈ s
⊢ ∀ {a : α}, (insert b s).max = ↑a → a ∈ insert b s
state_after: case insert
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
b : α
s : Finset α
a✝ : b ∉ s
ih : ∀ {a : α}, s.max = ↑a → a ∈ s
a : α
h : (insert b s).max = ↑a
⊢ a ∈ insert b s

tactic: by_cases p : b = a
state_before: case insert
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
b : α
s : Finset α
a✝ : b ∉ s
ih : ∀ {a : α}, s.max = ↑a → a ∈ s
a : α
h : (insert b s).max = ↑a
⊢ a ∈ insert b s
state_after: case pos
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
b : α
s : Finset α
a✝ : b ∉ s
ih : ∀ {a : α}, s.max = ↑a → a ∈ s
a : α
h : (insert b s).max = ↑a
p : b = a
⊢ a ∈ insert b s

case neg
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
b : α
s : Finset α
a✝ : b ∉ s
ih : ∀ {a : α}, s.max = ↑a → a ∈ s
a : α
h : (insert b s).max = ↑a
p : ¬b = a
⊢ a ∈ insert b s

tactic: induction p
state_before: case pos
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
b : α
s : Finset α
a✝ : b ∉ s
ih : ∀ {a : α}, s.max = ↑a → a ∈ s
a : α
h : (insert b s).max = ↑a
p : b = a
⊢ a ∈ insert b s
state_after: case pos.refl
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
b : α
s : Finset α
a✝ : b ∉ s
ih : ∀ {a : α}, s.max = ↑a → a ∈ s
a : α
h : (insert b s).max = ↑b
⊢ b ∈ insert b s

tactic: exact mem_insert_self b s
state_before: case pos.refl
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
b : α
s : Finset α
a✝ : b ∉ s
ih : ∀ {a : α}, s.max = ↑a → a ∈ s
a : α
h : (insert b s).max = ↑b
⊢ b ∈ insert b s
state_after: no goals

tactic: cases' max_choice (↑b) s.max with q q <;> rw [max_insert, q] at h
state_before: case neg
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
b : α
s : Finset α
a✝ : b ∉ s
ih : ∀ {a : α}, s.max = ↑a → a ∈ s
a : α
h : (insert b s).max = ↑a
p : ¬b = a
⊢ a ∈ insert b s
state_after: case neg.inl
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
b : α
s : Finset α
a✝ : b ∉ s
ih : ∀ {a : α}, s.max = ↑a → a ∈ s
a : α
h : ↑b = ↑a
p : ¬b = a
q : max (↑b) s.max = ↑b
⊢ a ∈ insert b s

case neg.inr
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
b : α
s : Finset α
a✝ : b ∉ s
ih : ∀ {a : α}, s.max = ↑a → a ∈ s
a : α
h : s.max = ↑a
p : ¬b = a
q : max (↑b) s.max = s.max
⊢ a ∈ insert b s

tactic: cases h
state_before: case neg.inl
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
b : α
s : Finset α
a✝ : b ∉ s
ih : ∀ {a : α}, s.max = ↑a → a ∈ s
a : α
h : ↑b = ↑a
p : ¬b = a
q : max (↑b) s.max = ↑b
⊢ a ∈ insert b s
state_after: case neg.inl.refl
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
b : α
s : Finset α
a✝ : b ∉ s
ih : ∀ {a : α}, s.max = ↑a → a ∈ s
q : max (↑b) s.max = ↑b
p : ¬b = b
⊢ b ∈ insert b s

tactic: cases p rfl
state_before: case neg.inl.refl
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
b : α
s : Finset α
a✝ : b ∉ s
ih : ∀ {a : α}, s.max = ↑a → a ∈ s
q : max (↑b) s.max = ↑b
p : ¬b = b
⊢ b ∈ insert b s
state_after: no goals

tactic: exact mem_insert_of_mem (ih h)
state_before: case neg.inr
F : Type u_1
α : Type u_2
β : Type u_3
γ : Type u_4
ι : Type u_5
κ : Type u_6
inst✝ : LinearOrder α
b : α
s : Finset α
a✝ : b ∉ s
ih : ∀ {a : α}, s.max = ↑a → a ∈ s
a : α
h : s.max = ↑a
p : ¬b = a
q : max (↑b) s.max = s.max
⊢ a ∈ insert b s
state_after: no goals