intros.
assert nat.
induction n as [| n Hrecn].
exact m.
exact (cPairPi2 (pred Hrecn)).
exact (cPairPi1 (pred H)).
Defined.
Let drop (n : nat) : forall (l : list nat), list nat.
induction n as [| n Hrecn].
exact (fun l => l).
intros.
apply Hrecn.
destruct l.
exact (nil (A:=nat)).
exact l.
Defined.

(* Specifications: *)
Lemma codeNthCorrect :
forall (n : nat) (l : list nat), codeNth n (codeList l) = nth n l 0.
Lemma codeNthIsPR : isPR 2 codeNth.
End code_nat_list.