Definition codeCloseList : nat -> nat -> nat :=
  evalStrongRec 1
    (fun l recs f : nat =>
     switchPR l
       (cPair 3
          (cPair (cPairPi1 (pred l))
             (codeNth (l - S (cPairPi2 (pred l))) recs))) f).

(* Specifications: *)
Lemma codeCloseListCorrect : forall (l : list nat) (f : Formula), codeCloseList (codeList l) (codeFormula f) = codeFormula (closeList L l f).
Lemma codeCloseListIsPR : isPR 2 codeCloseList.