no goals
ι : Type ?u.35296
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
x : α
hx : x ∈ getLast? []
⊢ False
simp at hx
no goals
ι : Type ?u.35296
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
a x : α
hx : x ∈ getLast? [a]
⊢ a = x
simpa using hx
ι : Type ?u.35296
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
a b : α
l : List α
x : α
hx : x ∈ getLast? (b :: l)
⊢ ∃ h, x = getLast (a :: b :: l) h
ι : Type ?u.35296
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
a b : α
l : List α
x : α
hx : x ∈ getLast? (a :: b :: l)
⊢ ∃ h, x = getLast (a :: b :: l) h
rw [getLast?_cons_cons] at hx
case intro
ι : Type ?u.35296
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
a b : α
l : List α
x : α
hx : x ∈ getLast? (b :: l)
w✝ : b :: l ≠ []
h₂ : x = getLast (b :: l) w✝
⊢ ∃ h, x = getLast (a :: b :: l) h
ι : Type ?u.35296
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
a b : α
l : List α
x : α
hx : x ∈ getLast? (b :: l)
⊢ ∃ h, x = getLast (a :: b :: l) h
rcases mem_getLast?_eq_getLast hx with ⟨_, h₂⟩
case intro
ι : Type ?u.35296
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
a b : α
l : List α
x : α
hx : x ∈ getLast? (b :: l)
w✝ : b :: l ≠ []
h₂ : x = getLast (b :: l) w✝
⊢ x = getLast (a :: b :: l) (_ : a :: b :: l ≠ [])
case intro
ι : Type ?u.35296
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
a b : α
l : List α
x : α
hx : x ∈ getLast? (b :: l)
w✝ : b :: l ≠ []
h₂ : x = getLast (b :: l) w✝
⊢ ∃ h, x = getLast (a :: b :: l) h
use cons_ne_nil _ _
no goals
case intro
ι : Type ?u.35296
α : Type u
β : Type v
γ : Type w
δ : Type x
l₁ l₂ : List α
a b : α
l : List α
x : α
hx : x ∈ getLast? (b :: l)
w✝ : b :: l ≠ []
h₂ : x = getLast (b :: l) w✝
⊢ x = getLast (a :: b :: l) (_ : a :: b :: l ≠ [])
assumption