Theorem: Multiset.mem_sup
File: Mathlib/Data/Finset/Lattice.lean

tactic: induction' s using Finset.induction_on with a s has hxs
state_before: F : Type ?u.412533
α✝ : Type ?u.412536
β✝ : Type ?u.412539
γ : Type ?u.412542
ι : Type ?u.412545
κ : Type ?u.412548
α : Type u_1
β : Type u_2
inst✝ : DecidableEq β
s : Finset α
f : α → Multiset β
x : β
⊢ x ∈ Finset.sup s f ↔ ∃ v, v ∈ s ∧ x ∈ f v

tactic: simp
state_before: case empty
F : Type ?u.412533
α✝ : Type ?u.412536
β✝ : Type ?u.412539
γ : Type ?u.412542
ι : Type ?u.412545
κ : Type ?u.412548
α : Type u_1
β : Type u_2
inst✝ : DecidableEq β
f : α → Multiset β
x : β
⊢ x ∈ Finset.sup ∅ f ↔ ∃ v, v ∈ ∅ ∧ x ∈ f v

tactic: rw [Finset.sup_insert, Multiset.sup_eq_union, Multiset.mem_union]
state_before: case insert
F : Type ?u.412533
α✝ : Type ?u.412536
β✝ : Type ?u.412539
γ : Type ?u.412542
ι : Type ?u.412545
κ : Type ?u.412548
α : Type u_1
β : Type u_2
inst✝ : DecidableEq β
f : α → Multiset β
x : β
a : α
s : Finset α
has : ¬a ∈ s
hxs : x ∈ Finset.sup s f ↔ ∃ v, v ∈ s ∧ x ∈ f v
⊢ x ∈ Finset.sup (insert a s) f ↔ ∃ v, v ∈ insert a s ∧ x ∈ f v

tactic: constructor
state_before: case insert
F : Type ?u.412533
α✝ : Type ?u.412536
β✝ : Type ?u.412539
γ : Type ?u.412542
ι : Type ?u.412545
κ : Type ?u.412548
α : Type u_1
β : Type u_2
inst✝ : DecidableEq β
f : α → Multiset β
x : β
a : α
s : Finset α
has : ¬a ∈ s
hxs : x ∈ Finset.sup s f ↔ ∃ v, v ∈ s ∧ x ∈ f v
⊢ x ∈ f a ∨ x ∈ Finset.sup s f ↔ ∃ v, v ∈ insert a s ∧ x ∈ f v

tactic: intro hxi
state_before: case insert.mp
F : Type ?u.412533
α✝ : Type ?u.412536
β✝ : Type ?u.412539
γ : Type ?u.412542
ι : Type ?u.412545
κ : Type ?u.412548
α : Type u_1
β : Type u_2
inst✝ : DecidableEq β
f : α → Multiset β
x : β
a : α
s : Finset α
has : ¬a ∈ s
hxs : x ∈ Finset.sup s f ↔ ∃ v, v ∈ s ∧ x ∈ f v
⊢ x ∈ f a ∨ x ∈ Finset.sup s f → ∃ v, v ∈ insert a s ∧ x ∈ f v

tactic: cases' hxi with hf hf
state_before: case insert.mp
F : Type ?u.412533
α✝ : Type ?u.412536
β✝ : Type ?u.412539
γ : Type ?u.412542
ι : Type ?u.412545
κ : Type ?u.412548
α : Type u_1
β : Type u_2
inst✝ : DecidableEq β
f : α → Multiset β
x : β
a : α
s : Finset α
has : ¬a ∈ s
hxs : x ∈ Finset.sup s f ↔ ∃ v, v ∈ s ∧ x ∈ f v
hxi : x ∈ f a ∨ x ∈ Finset.sup s f
⊢ ∃ v, v ∈ insert a s ∧ x ∈ f v

tactic: refine' ⟨a, _, hf⟩
state_before: case insert.mp.inl
F : Type ?u.412533
α✝ : Type ?u.412536
β✝ : Type ?u.412539
γ : Type ?u.412542
ι : Type ?u.412545
κ : Type ?u.412548
α : Type u_1
β : Type u_2
inst✝ : DecidableEq β
f : α → Multiset β
x : β
a : α
s : Finset α
has : ¬a ∈ s
hxs : x ∈ Finset.sup s f ↔ ∃ v, v ∈ s ∧ x ∈ f v
hf : x ∈ f a
⊢ ∃ v, v ∈ insert a s ∧ x ∈ f v

tactic: simp only [true_or_iff, eq_self_iff_true, Finset.mem_insert]
state_before: case insert.mp.inl
F : Type ?u.412533
α✝ : Type ?u.412536
β✝ : Type ?u.412539
γ : Type ?u.412542
ι : Type ?u.412545
κ : Type ?u.412548
α : Type u_1
β : Type u_2
inst✝ : DecidableEq β
f : α → Multiset β
x : β
a : α
s : Finset α
has : ¬a ∈ s
hxs : x ∈ Finset.sup s f ↔ ∃ v, v ∈ s ∧ x ∈ f v
hf : x ∈ f a
⊢ a ∈ insert a s

tactic: rcases hxs.mp hf with ⟨v, hv, hfv⟩
state_before: case insert.mp.inr
F : Type ?u.412533
α✝ : Type ?u.412536
β✝ : Type ?u.412539
γ : Type ?u.412542
ι : Type ?u.412545
κ : Type ?u.412548
α : Type u_1
β : Type u_2
inst✝ : DecidableEq β
f : α → Multiset β
x : β
a : α
s : Finset α
has : ¬a ∈ s
hxs : x ∈ Finset.sup s f ↔ ∃ v, v ∈ s ∧ x ∈ f v
hf : x ∈ Finset.sup s f
⊢ ∃ v, v ∈ insert a s ∧ x ∈ f v

tactic: refine' ⟨v, _, hfv⟩
state_before: case insert.mp.inr.intro.intro
F : Type ?u.412533
α✝ : Type ?u.412536
β✝ : Type ?u.412539
γ : Type ?u.412542
ι : Type ?u.412545
κ : Type ?u.412548
α : Type u_1
β : Type u_2
inst✝ : DecidableEq β
f : α → Multiset β
x : β
a : α
s : Finset α
has : ¬a ∈ s
hxs : x ∈ Finset.sup s f ↔ ∃ v, v ∈ s ∧ x ∈ f v
hf : x ∈ Finset.sup s f
v : α
hv : v ∈ s
hfv : x ∈ f v
⊢ ∃ v, v ∈ insert a s ∧ x ∈ f v

tactic: simp only [hv, or_true_iff, Finset.mem_insert]
state_before: case insert.mp.inr.intro.intro
F : Type ?u.412533
α✝ : Type ?u.412536
β✝ : Type ?u.412539
γ : Type ?u.412542
ι : Type ?u.412545
κ : Type ?u.412548
α : Type u_1
β : Type u_2
inst✝ : DecidableEq β
f : α → Multiset β
x : β
a : α
s : Finset α
has : ¬a ∈ s
hxs : x ∈ Finset.sup s f ↔ ∃ v, v ∈ s ∧ x ∈ f v
hf : x ∈ Finset.sup s f
v : α
hv : v ∈ s
hfv : x ∈ f v
⊢ v ∈ insert a s

tactic: rintro ⟨v, hv, hfv⟩
state_before: case insert.mpr
F : Type ?u.412533
α✝ : Type ?u.412536
β✝ : Type ?u.412539
γ : Type ?u.412542
ι : Type ?u.412545
κ : Type ?u.412548
α : Type u_1
β : Type u_2
inst✝ : DecidableEq β
f : α → Multiset β
x : β
a : α
s : Finset α
has : ¬a ∈ s
hxs : x ∈ Finset.sup s f ↔ ∃ v, v ∈ s ∧ x ∈ f v
⊢ (∃ v, v ∈ insert a s ∧ x ∈ f v) → x ∈ f a ∨ x ∈ Finset.sup s f

tactic: rw [Finset.mem_insert] at hv
state_before: case insert.mpr.intro.intro
F : Type ?u.412533
α✝ : Type ?u.412536
β✝ : Type ?u.412539
γ : Type ?u.412542
ι : Type ?u.412545
κ : Type ?u.412548
α : Type u_1
β : Type u_2
inst✝ : DecidableEq β
f : α → Multiset β
x : β
a : α
s : Finset α
has : ¬a ∈ s
hxs : x ∈ Finset.sup s f ↔ ∃ v, v ∈ s ∧ x ∈ f v
v : α
hv : v ∈ insert a s
hfv : x ∈ f v
⊢ x ∈ f a ∨ x ∈ Finset.sup s f

tactic: rcases hv with (rfl | hv)
state_before: case insert.mpr.intro.intro
F : Type ?u.412533
α✝ : Type ?u.412536
β✝ : Type ?u.412539
γ : Type ?u.412542
ι : Type ?u.412545
κ : Type ?u.412548
α : Type u_1
β : Type u_2
inst✝ : DecidableEq β
f : α → Multiset β
x : β
a : α
s : Finset α
has : ¬a ∈ s
hxs : x ∈ Finset.sup s f ↔ ∃ v, v ∈ s ∧ x ∈ f v
v : α
hv : v = a ∨ v ∈ s
hfv : x ∈ f v
⊢ x ∈ f a ∨ x ∈ Finset.sup s f

tactic: exact Or.inl hfv
state_before: case insert.mpr.intro.intro.inl
F : Type ?u.412533
α✝ : Type ?u.412536
β✝ : Type ?u.412539
γ : Type ?u.412542
ι : Type ?u.412545
κ : Type ?u.412548
α : Type u_1
β : Type u_2
inst✝ : DecidableEq β
f : α → Multiset β
x : β
s : Finset α
hxs : x ∈ Finset.sup s f ↔ ∃ v, v ∈ s ∧ x ∈ f v
v : α
hfv : x ∈ f v
has : ¬v ∈ s
⊢ x ∈ f v ∨ x ∈ Finset.sup s f

tactic: refine' Or.inr (hxs.mpr ⟨v, hv, hfv⟩)
state_before: case insert.mpr.intro.intro.inr
F : Type ?u.412533
α✝ : Type ?u.412536
β✝ : Type ?u.412539
γ : Type ?u.412542
ι : Type ?u.412545
κ : Type ?u.412548
α : Type u_1
β : Type u_2
inst✝ : DecidableEq β
f : α → Multiset β
x : β
a : α
s : Finset α
has : ¬a ∈ s
hxs : x ∈ Finset.sup s f ↔ ∃ v, v ∈ s ∧ x ∈ f v
v : α
hfv : x ∈ f v
hv : v ∈ s
⊢ x ∈ f a ∨ x ∈ Finset.sup s f