Definition iterate (g : nat -> nat) :=
  nat_rec (fun _ => nat -> nat) (fun x : nat => x)
    (fun (_ : nat) (rec : nat -> nat) (x : nat) => g (rec x)).

(* Specifications: *)
Lemma iterateIsPR : forall g : nat -> nat, isPR 1 g -> forall n : nat, isPR 1 (iterate g n).