inductive Vector (α : Type u) : Nat → Type u | nil : Vector α 0 | cons : α → Vector α n → Vector α (n + 1) def test [Monad m] (xs : Vector α a) : m Unit := match xs with | Vector.nil => return () | Vector.cons _ xs => test xs termination_by sizeOf xs