Why does predecessor(zero) need to be zero in Church numerals? My question may be similar to: Why naturals instead of integers?, but it is more specific.

I am trying to learn lambda calculus. All the books make a big deal about how it was necessary that predecessor(zero) == zero and it was very tricky to get it right.

Why was that necessary? Can someone point me to some literature, or, better yet, give me a 30 sec explanation?

The only thing I can figure out is that this resulted in the naturals being closed under subtraction, but at a cost of having subtraction being a non one-to-one mapping from the natural numbers to themselves.

Thanks,

Charlie
The other reason (than the one already stated) for pred 0 = 0 are the (all too often unstated) requirements that


pred be a total function from nat to nat
pred succ n = n be true.
pred be as close to injective as possible.
pred be as close to a monotone decreasing function as possible.


It is that last requirement which really 'seals the deal' in forcing pred 0 = 0, since that is the choice which minimizes the distance to not being monotone decreasing.