Proof using.
intros n; elim n; simpl in |- *; auto.
intros n0 H l1 l2; case l1; simpl in |- *.
intros H1; Contradict H1; auto with arith.
intros a l H0; (apply f_equal2 with (f := cons (A:=A)); auto).
apply H; apply le_S_n; auto.
Qed.

(* Specifications: *)
Theorem first_n_length :
forall (n : nat) (l1 : list A), n <= length l1 -> length (first_n l1 n) = n.