cases o <;> simp_all
α : Type u_1
hd : α
tl xs : List α
x : α
o : Option (List α × α)
ho : tl.getSnoc? = o
ih : ∀ {xs : List α} {x : α}, o = some (xs, x) ↔ tl = xs ++ [x]
⊢ (match o with
      | none => some ([], hd)
      | some (xs', x') => some (hd :: xs', x')) =
      some (xs, x) ↔
    hd :: tl = xs ++ [x]
case none
α : Type u_1
hd : α
tl xs : List α
x : α
ho : tl = []
⊢ [] = xs ∧ hd = x ↔ [hd] = xs ++ [x]

case some
α : Type u_1
hd : α
tl xs : List α
x : α
val✝ : List α × α
ho : tl.getSnoc? = some val✝
ih : ∀ {xs : List α} {x : α}, val✝ = (xs, x) ↔ tl = xs ++ [x]
⊢ hd :: val✝.1 = xs ∧ val✝.2 = x ↔ hd :: tl = xs ++ [x]