Theorem: List.not_mem_keys_kerase
File: Mathlib/Data/List/Sigma.lean

tactic: simp
state_before: case nil
α : Type u
β : α → Type v
l l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
nd : [].NodupKeys
⊢ a ∉ (kerase a []).keys
state_after: no goals

tactic: simp? at nd says simp only [nodupKeys_cons] at nd
state_before: case cons
α : Type u
β : α → Type v
l l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
hd : Sigma β
tl : List (Sigma β)
ih : tl.NodupKeys → a ∉ (kerase a tl).keys
nd : (hd :: tl).NodupKeys
⊢ a ∉ (kerase a (hd :: tl)).keys
state_after: case cons
α : Type u
β : α → Type v
l l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
hd : Sigma β
tl : List (Sigma β)
ih : tl.NodupKeys → a ∉ (kerase a tl).keys
nd : hd.fst ∉ tl.keys ∧ tl.NodupKeys
⊢ a ∉ (kerase a (hd :: tl)).keys

tactic: by_cases h : a = hd.1
state_before: case cons
α : Type u
β : α → Type v
l l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
hd : Sigma β
tl : List (Sigma β)
ih : tl.NodupKeys → a ∉ (kerase a tl).keys
nd : hd.fst ∉ tl.keys ∧ tl.NodupKeys
⊢ a ∉ (kerase a (hd :: tl)).keys
state_after: case pos
α : Type u
β : α → Type v
l l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
hd : Sigma β
tl : List (Sigma β)
ih : tl.NodupKeys → a ∉ (kerase a tl).keys
nd : hd.fst ∉ tl.keys ∧ tl.NodupKeys
h : a = hd.fst
⊢ a ∉ (kerase a (hd :: tl)).keys

case neg
α : Type u
β : α → Type v
l l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
hd : Sigma β
tl : List (Sigma β)
ih : tl.NodupKeys → a ∉ (kerase a tl).keys
nd : hd.fst ∉ tl.keys ∧ tl.NodupKeys
h : ¬a = hd.fst
⊢ a ∉ (kerase a (hd :: tl)).keys

tactic: simp only [nodupKeys_cons] at nd
state_before: case cons
α : Type u
β : α → Type v
l l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
hd : Sigma β
tl : List (Sigma β)
ih : tl.NodupKeys → a ∉ (kerase a tl).keys
nd : (hd :: tl).NodupKeys
⊢ a ∉ (kerase a (hd :: tl)).keys
state_after: case cons
α : Type u
β : α → Type v
l l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
hd : Sigma β
tl : List (Sigma β)
ih : tl.NodupKeys → a ∉ (kerase a tl).keys
nd : hd.fst ∉ tl.keys ∧ tl.NodupKeys
⊢ a ∉ (kerase a (hd :: tl)).keys

tactic: subst h
state_before: case pos
α : Type u
β : α → Type v
l l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
hd : Sigma β
tl : List (Sigma β)
ih : tl.NodupKeys → a ∉ (kerase a tl).keys
nd : hd.fst ∉ tl.keys ∧ tl.NodupKeys
h : a = hd.fst
⊢ a ∉ (kerase a (hd :: tl)).keys
state_after: case pos
α : Type u
β : α → Type v
l l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
hd : Sigma β
tl : List (Sigma β)
nd : hd.fst ∉ tl.keys ∧ tl.NodupKeys
ih : tl.NodupKeys → hd.fst ∉ (kerase hd.fst tl).keys
⊢ hd.fst ∉ (kerase hd.fst (hd :: tl)).keys

tactic: simp [nd.1]
state_before: case pos
α : Type u
β : α → Type v
l l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
hd : Sigma β
tl : List (Sigma β)
nd : hd.fst ∉ tl.keys ∧ tl.NodupKeys
ih : tl.NodupKeys → hd.fst ∉ (kerase hd.fst tl).keys
⊢ hd.fst ∉ (kerase hd.fst (hd :: tl)).keys
state_after: no goals

tactic: simp [h, ih nd.2]
state_before: case neg
α : Type u
β : α → Type v
l l₁ l₂ : List (Sigma β)
inst✝ : DecidableEq α
a : α
hd : Sigma β
tl : List (Sigma β)
ih : tl.NodupKeys → a ∉ (kerase a tl).keys
nd : hd.fst ∉ tl.keys ∧ tl.NodupKeys
h : ¬a = hd.fst
⊢ a ∉ (kerase a (hd :: tl)).keys
state_after: no goals