Theorem: List.indexOf_mem_indexesOf
File: .lake/packages/batteries/Batteries/Data/List/Lemmas.lean

tactic: simp_all
state_before: case nil
α : Type u_1
x : α
inst✝¹ : BEq α
inst✝ : LawfulBEq α
m : x ∈ []
⊢ indexOf x [] ∈ indexesOf x []
state_after: no goals

tactic: simp [indexOf_cons, indexesOf_cons, cond_eq_if]
state_before: case cons
α : Type u_1
x : α
inst✝¹ : BEq α
inst✝ : LawfulBEq α
h : α
t : List α
ih : x ∈ t → indexOf x t ∈ indexesOf x t
m : x ∈ h :: t
⊢ indexOf x (h :: t) ∈ indexesOf x (h :: t)
state_after: case cons
α : Type u_1
x : α
inst✝¹ : BEq α
inst✝ : LawfulBEq α
h : α
t : List α
ih : x ∈ t → indexOf x t ∈ indexesOf x t
m : x ∈ h :: t
⊢ (if (h == x) = true then 0 else indexOf x t + 1) ∈
    if (h == x) = true then 0 :: map (fun x => x + 1) (indexesOf x t) else map (fun x => x + 1) (indexesOf x t)

tactic: split <;> rename_i w
state_before: case cons
α : Type u_1
x : α
inst✝¹ : BEq α
inst✝ : LawfulBEq α
h : α
t : List α
ih : x ∈ t → indexOf x t ∈ indexesOf x t
m : x ∈ h :: t
⊢ (if (h == x) = true then 0 else indexOf x t + 1) ∈
    if (h == x) = true then 0 :: map (fun x => x + 1) (indexesOf x t) else map (fun x => x + 1) (indexesOf x t)
state_after: case cons.isTrue
α : Type u_1
x : α
inst✝¹ : BEq α
inst✝ : LawfulBEq α
h : α
t : List α
ih : x ∈ t → indexOf x t ∈ indexesOf x t
m : x ∈ h :: t
w : (h == x) = true
⊢ 0 ∈ 0 :: map (fun x => x + 1) (indexesOf x t)

case cons.isFalse
α : Type u_1
x : α
inst✝¹ : BEq α
inst✝ : LawfulBEq α
h : α
t : List α
ih : x ∈ t → indexOf x t ∈ indexesOf x t
m : x ∈ h :: t
w : ¬(h == x) = true
⊢ indexOf x t + 1 ∈ map (fun x => x + 1) (indexesOf x t)

tactic: apply mem_cons_self
state_before: case cons.isTrue
α : Type u_1
x : α
inst✝¹ : BEq α
inst✝ : LawfulBEq α
h : α
t : List α
ih : x ∈ t → indexOf x t ∈ indexesOf x t
m : x ∈ h :: t
w : (h == x) = true
⊢ 0 ∈ 0 :: map (fun x => x + 1) (indexesOf x t)
state_after: no goals

tactic: cases m
state_before: case cons.isFalse
α : Type u_1
x : α
inst✝¹ : BEq α
inst✝ : LawfulBEq α
h : α
t : List α
ih : x ∈ t → indexOf x t ∈ indexesOf x t
m : x ∈ h :: t
w : ¬(h == x) = true
⊢ indexOf x t + 1 ∈ map (fun x => x + 1) (indexesOf x t)
state_after: case cons.isFalse.head
α : Type u_1
x : α
inst✝¹ : BEq α
inst✝ : LawfulBEq α
t : List α
ih : x ∈ t → indexOf x t ∈ indexesOf x t
w : ¬(x == x) = true
⊢ indexOf x t + 1 ∈ map (fun x => x + 1) (indexesOf x t)

case cons.isFalse.tail
α : Type u_1
x : α
inst✝¹ : BEq α
inst✝ : LawfulBEq α
h : α
t : List α
ih : x ∈ t → indexOf x t ∈ indexesOf x t
w : ¬(h == x) = true
a✝ : Mem x t
⊢ indexOf x t + 1 ∈ map (fun x => x + 1) (indexesOf x t)

tactic: case _ => simp_all
state_before: case cons.isFalse.head
α : Type u_1
x : α
inst✝¹ : BEq α
inst✝ : LawfulBEq α
t : List α
ih : x ∈ t → indexOf x t ∈ indexesOf x t
w : ¬(x == x) = true
⊢ indexOf x t + 1 ∈ map (fun x => x + 1) (indexesOf x t)

case cons.isFalse.tail
α : Type u_1
x : α
inst✝¹ : BEq α
inst✝ : LawfulBEq α
h : α
t : List α
ih : x ∈ t → indexOf x t ∈ indexesOf x t
w : ¬(h == x) = true
a✝ : Mem x t
⊢ indexOf x t + 1 ∈ map (fun x => x + 1) (indexesOf x t)
state_after: case cons.isFalse.tail
α : Type u_1
x : α
inst✝¹ : BEq α
inst✝ : LawfulBEq α
h : α
t : List α
ih : x ∈ t → indexOf x t ∈ indexesOf x t
w : ¬(h == x) = true
a✝ : Mem x t
⊢ indexOf x t + 1 ∈ map (fun x => x + 1) (indexesOf x t)

tactic: case tail m =>
  specialize ih m
  simpa
state_before: case cons.isFalse.tail
α : Type u_1
x : α
inst✝¹ : BEq α
inst✝ : LawfulBEq α
h : α
t : List α
ih : x ∈ t → indexOf x t ∈ indexesOf x t
w : ¬(h == x) = true
a✝ : Mem x t
⊢ indexOf x t + 1 ∈ map (fun x => x + 1) (indexesOf x t)
state_after: no goals

tactic: simp_all
state_before: α : Type u_1
x : α
inst✝¹ : BEq α
inst✝ : LawfulBEq α
t : List α
ih : x ∈ t → indexOf x t ∈ indexesOf x t
w : ¬(x == x) = true
⊢ indexOf x t + 1 ∈ map (fun x => x + 1) (indexesOf x t)
state_after: no goals

tactic: specialize ih m
state_before: α : Type u_1
x : α
inst✝¹ : BEq α
inst✝ : LawfulBEq α
h : α
t : List α
ih : x ∈ t → indexOf x t ∈ indexesOf x t
w : ¬(h == x) = true
m : Mem x t
⊢ indexOf x t + 1 ∈ map (fun x => x + 1) (indexesOf x t)
state_after: α : Type u_1
x : α
inst✝¹ : BEq α
inst✝ : LawfulBEq α
h : α
t : List α
w : ¬(h == x) = true
m : Mem x t
ih : indexOf x t ∈ indexesOf x t
⊢ indexOf x t + 1 ∈ map (fun x => x + 1) (indexesOf x t)

tactic: simpa
state_before: α : Type u_1
x : α
inst✝¹ : BEq α
inst✝ : LawfulBEq α
h : α
t : List α
w : ¬(h == x) = true
m : Mem x t
ih : indexOf x t ∈ indexesOf x t
⊢ indexOf x t + 1 ∈ map (fun x => x + 1) (indexesOf x t)
state_after: no goals