> data Vect : Nat -> Type -> Type where > Nil : Vect Z a > (::) : a -> Vect k a -> Vect (S k) a > %name Vect xs, ys, zs > append : Vect n a -> Vect m a -> Vect (n + m) a > append {n} xs ys = ?foo > vadd : Num a => Vect n a -> Vect n a -> Vect n a > vadd [] ys = ?bar > vadd (x :: xs) ys = ?baz > suc : (x : Nat) -> (y : Nat) -> x = y -> S x = S y > suc x y prf = ?quux > suc' : x = y -> S x = S y > suc' {x} {y} prf = ?quuz