set_option new_elaborator true

inductive vec (A : Type) : nat → Type
| nil {} : vec 0
| cons   : Π {n}, A → vec n → vec (n+1)

open vec

definition h {A : Type} : ∀ {n}, vec A (n+1) → A
| n (cons a v) := a

definition t {A : Type} : ∀ {n}, vec A (n+1) → vec A n
| n (cons a v) := v

example {A n} (a : A) (v : vec A n) : h (cons a v) = a :=
rfl

example {A n} (a : A) (v : vec A n) : t (cons a v) = v :=
rfl
