(* Skip the first elements of a list *)
Fixpoint skip_n (l : list A) (n : nat) {struct n} : 
 list A :=
  match n with
  | O => l
  | S n1 => match l with
            | nil => nil
            | a :: l1 => skip_n l1 n1
            end
  end.

Theorem skip_n_length : forall (n : nat) (l1 : list A), length (skip_n l1 n) = length l1 - n.