import logic data.nat.basic open nat inductive vec (A : Type) : nat → Type := vnil : vec A zero, vone : A → vec A (succ zero), vtwo : A → A → vec A (succ (succ zero)) namespace vec theorem eone {A : Type} {P : vec A (succ zero) → Type} (H : Π a, P (vone a)) (v : vec A (succ zero)) : P v := begin cases v, -- apply (H a) end end vec