Remark makeTrace1 :
forall (f : fol.Formula L) (v : nat) (s : fol.Term L),
cTriplePi1 (makeTrace f (v, s)) = cTriple v (codeTerm s) (codeFormula f).
Remark makeTrace2 :
forall (f : fol.Formula L) (v : nat) (s : fol.Term L),
cTriplePi2 (makeTrace f (v, s)) = codeFormula (substituteFormula L f v s).

Lemma switch5IsPR :
forall (f1 f2 f3 f4 f5 : nat -> nat -> nat) (g : nat -> nat),
isPR 2 f1 ->
isPR 2 f2 ->
isPR 2 f3 ->
isPR 2 f4 ->
isPR 2 f5 ->
isPR 1 g ->
isPR 2
(fun n recs : nat =>
switchPR (g n)
(switchPR (pred (g n))
(switchPR (pred (pred (g n)))
(switchPR (pred (pred (pred (g n)))) (f1 n recs) (f2 n recs))
(f3 n recs)) (f4 n recs)) (f5 n recs)).