def f (xs : List Nat) : Nat := match xs with | [] => 0 | x::xs => match xs with | [] => 0 -- This examples fails if we write the following alternative as -- | _ => f xs + 1 | xs => f xs + 1 def g (xs : List Nat) : Nat := match xs with | [] => 0 | y::ys => match ys with | [] => 0 | _::_::zs => g zs + 1 | zs => g zs + 3