File: ZP.html

package info (click to toggle)
acl2 3.1-1
  • links: PTS
  • area: main
  • in suites: etch, etch-m68k
  • size: 36,712 kB
  • ctags: 38,396
  • sloc: lisp: 464,023; makefile: 5,470; sh: 86; csh: 47; cpp: 25; ansic: 22
file content (37 lines) | stat: -rw-r--r-- 1,531 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<html>
<head><title>ZP.html  --  ACL2 Version 3.1</title></head>
<body text=#000000 bgcolor="#FFFFFF">
<h2>ZP</h2>testing a ``natural'' against 0
<pre>Major Section:  <a href="PROGRAMMING.html">PROGRAMMING</a>
</pre><p>

<code>(Zp n)</code> is logically equivalent to <code>(equal (nfix n) 0)</code> and is
the preferred termination test for recursion down the natural
numbers. <code>(Zp n)</code> returns <code>t</code> if <code>n</code> is <code>0</code> or not a natural
number; it returns <code>nil</code> otherwise.  Thus, in the ACL2 logic
(ignoring the issue of <a href="GUARD.html">guard</a>s):

<pre>
    n       (zp n)
   3         nil
   0         t
   -1        t
   5/2       t
   #c(1 3)   t
   'abc      t
</pre>

<p>
<code>(Zp n)</code> has a <a href="GUARD.html">guard</a> requiring <code>n</code> to be a natural number.<p>

For a discussion of the various idioms for testing against <code>0</code>,
see <a href="ZERO-TEST-IDIOMS.html">zero-test-idioms</a>.<p>

<code>Zp</code> 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.  <a href="GUARD.html">Guard</a> verification
allows <code>zp</code> to be compiled as a direct <code><a href="=.html">=</a></code>-comparision with <code>0</code>.
<br><br><br><a href="acl2-doc.html"><img src="llogo.gif"></a> <a href="acl2-doc-index.html"><img src="index.gif"></a>
</body>
</html>