Proof using.
intros n l1; generalize n; elim l1; clear n l1; simpl in |- *; auto.
intros n; case n; simpl in |- *; auto.
intros n1 H1; Contradict H1; auto with arith.
intros a l H n; case n; simpl in |- *; auto with arith.
Qed.

(* Specifications: *)
Theorem first_n_id : forall l : list A, first_n l (length l) = l.
Proof using.