Major Section: PROGRAMMING
(Zp n)
is logically equivalent to (equal (nfix n) 0)
and is
the preferred termination test for recursion down the natural
numbers. (Zp n)
returns t
if n
is 0
or not a natural
number; it returns nil
otherwise. Thus, in the ACL2 logic
(ignoring the issue of guards):
n (zp n) 3 nil 0 t -1 t 5/2 t #c(1 3) t 'abc t
(Zp n)
has a guard requiring n
to be a natural number.
For a discussion of the various idioms for testing against 0
,
see zero-test-idioms.
Zp
is typically used as the termination test in recursions down
the natural numbers. It has the advantage of ``coercing'' its
argument to a natural and hence allows the definition to be admitted
without an explicit type check in the body. Guard verification
allows zp
to be compiled as a direct =
-comparision with 0
.