 Some models of computation (such as register machines) and certain programming languages include a test for zero as a primitive construct. It is useful to find a CL-term for a function \(Z\) such that \(Znxy\) reduces to \(x\) if \(n\) is zero, whereas \(Znxy\) reduces to \(y\) when \(n\) is positive.  \(Znxy\) may be thought of as the conditional instruction “If \(n=0\)  then \(x\) else \(y\),” where \(x\) and \(y\) are themselves functions.  (Of course, in the pseudo-code one should have assumed that \(n\) is of integer type and cannot take a negative value, that could be guaranteed by a declaration of variables and an additional conditional statement.) The following definition works for branching on zero.