Theorem: List.get?_pmap
File: Mathlib/Data/List/Basic.lean

tactic: induction' l with hd tl hl generalizing n
state_before: ι : Type ?u.332299
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
p : α → Prop
f : (a : α) → p a → β
l : List α
h : ∀ (a : α), a ∈ l → p a
n : ℕ
⊢ get? (pmap f l h) n = Option.pmap f (get? l n) (_ : ∀ (x : α), x ∈ get? l n → p x)

tactic: simp
state_before: case nil
ι : Type ?u.332299
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
p : α → Prop
f : (a : α) → p a → β
l : List α
h✝ : ∀ (a : α), a ∈ l → p a
n✝ : ℕ
h : ∀ (a : α), a ∈ [] → p a
n : ℕ
⊢ get? (pmap f [] h) n = Option.pmap f (get? [] n) (_ : ∀ (x : α), x ∈ get? [] n → p x)

tactic: cases' n with n
state_before: case cons
ι : Type ?u.332299
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
p : α → Prop
f : (a : α) → p a → β
l : List α
h✝ : ∀ (a : α), a ∈ l → p a
n✝ : ℕ
hd : α
tl : List α
hl :
  ∀ (h : ∀ (a : α), a ∈ tl → p a) (n : ℕ),
    get? (pmap f tl h) n = Option.pmap f (get? tl n) (_ : ∀ (x : α), x ∈ get? tl n → p x)
h : ∀ (a : α), a ∈ hd :: tl → p a
n : ℕ
⊢ get? (pmap f (hd :: tl) h) n = Option.pmap f (get? (hd :: tl) n) (_ : ∀ (x : α), x ∈ get? (hd :: tl) n → p x)

tactic: . simp
state_before: case cons.zero
ι : Type ?u.332299
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
p : α → Prop
f : (a : α) → p a → β
l : List α
h✝ : ∀ (a : α), a ∈ l → p a
n : ℕ
hd : α
tl : List α
hl :
  ∀ (h : ∀ (a : α), a ∈ tl → p a) (n : ℕ),
    get? (pmap f tl h) n = Option.pmap f (get? tl n) (_ : ∀ (x : α), x ∈ get? tl n → p x)
h : ∀ (a : α), a ∈ hd :: tl → p a
⊢ get? (pmap f (hd :: tl) h) zero = Option.pmap f (get? (hd :: tl) zero) (_ : ∀ (x : α), x ∈ get? (hd :: tl) zero → p x)

case cons.succ
ι : Type ?u.332299
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
p : α → Prop
f : (a : α) → p a → β
l : List α
h✝ : ∀ (a : α), a ∈ l → p a
n✝ : ℕ
hd : α
tl : List α
hl :
  ∀ (h : ∀ (a : α), a ∈ tl → p a) (n : ℕ),
    get? (pmap f tl h) n = Option.pmap f (get? tl n) (_ : ∀ (x : α), x ∈ get? tl n → p x)
h : ∀ (a : α), a ∈ hd :: tl → p a
n : ℕ
⊢ get? (pmap f (hd :: tl) h) (succ n) =
    Option.pmap f (get? (hd :: tl) (succ n)) (_ : ∀ (x : α), x ∈ get? (hd :: tl) (succ n) → p x)

tactic: . simp [hl]
state_before: case cons.succ
ι : Type ?u.332299
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
p : α → Prop
f : (a : α) → p a → β
l : List α
h✝ : ∀ (a : α), a ∈ l → p a
n✝ : ℕ
hd : α
tl : List α
hl :
  ∀ (h : ∀ (a : α), a ∈ tl → p a) (n : ℕ),
    get? (pmap f tl h) n = Option.pmap f (get? tl n) (_ : ∀ (x : α), x ∈ get? tl n → p x)
h : ∀ (a : α), a ∈ hd :: tl → p a
n : ℕ
⊢ get? (pmap f (hd :: tl) h) (succ n) =
    Option.pmap f (get? (hd :: tl) (succ n)) (_ : ∀ (x : α), x ∈ get? (hd :: tl) (succ n) → p x)

tactic: simp
state_before: case cons.zero
ι : Type ?u.332299
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
p : α → Prop
f : (a : α) → p a → β
l : List α
h✝ : ∀ (a : α), a ∈ l → p a
n : ℕ
hd : α
tl : List α
hl :
  ∀ (h : ∀ (a : α), a ∈ tl → p a) (n : ℕ),
    get? (pmap f tl h) n = Option.pmap f (get? tl n) (_ : ∀ (x : α), x ∈ get? tl n → p x)
h : ∀ (a : α), a ∈ hd :: tl → p a
⊢ get? (pmap f (hd :: tl) h) zero = Option.pmap f (get? (hd :: tl) zero) (_ : ∀ (x : α), x ∈ get? (hd :: tl) zero → p x)

tactic: simp [hl]
state_before: case cons.succ
ι : Type ?u.332299
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
p : α → Prop
f : (a : α) → p a → β
l : List α
h✝ : ∀ (a : α), a ∈ l → p a
n✝ : ℕ
hd : α
tl : List α
hl :
  ∀ (h : ∀ (a : α), a ∈ tl → p a) (n : ℕ),
    get? (pmap f tl h) n = Option.pmap f (get? tl n) (_ : ∀ (x : α), x ∈ get? tl n → p x)
h : ∀ (a : α), a ∈ hd :: tl → p a
n : ℕ
⊢ get? (pmap f (hd :: tl) h) (succ n) =
    Option.pmap f (get? (hd :: tl) (succ n)) (_ : ∀ (x : α), x ∈ get? (hd :: tl) (succ n) → p x)