+
+ let sysf_pred (n : 'a sysf_nat) : 'a sysf_nat = (* NOT DONE *)
+
+<!--
+ (* Using a System F-style encoding of pairs, rather than native OCaml pairs ... *)
+ let pair a b = fun f -> f a b in
+ let snd x y next = y next in
+ let shift p next = p (fun x y -> pair (sysf_succ x) x) next in (* eta-expanded as in previous definitions *)
+ fun next -> n shift (pair sysf_zero sysf_zero) snd next
+
+ let pair = \a b. \f. f a b in
+ let snd = \x y. y in
+ let shift = \p. p (\x y. pair (succ x) x) in
+ let pred = \n. n shift (pair 0 err) snd in
+-->