import logic 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