let pre = function S (n) -> n | _ -> failwith ("pre : requires a non-zero natural number as its argument")