File: ZIP.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,449 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>ZIP.html  --  ACL2 Version 3.1</title></head>
<body text=#000000 bgcolor="#FFFFFF">
<h2>ZIP</h2>testing an ``integer'' against 0
<pre>Major Section:  <a href="PROGRAMMING.html">PROGRAMMING</a>
</pre><p>

<code>(Zip i)</code> is logically equivalent to <code>(equal (ifix i) 0)</code> and is
the preferred termination test for recursion through the integers.
<code>(Zip i)</code> returns <code>t</code> if <code>i</code> is <code>0</code> or not an integer; it
returns <code>nil</code> otherwise.  Thus,

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

<p>
<code>(Zip i)</code> has a <a href="GUARD.html">guard</a> requiring <code>i</code> to be an integer.<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>Zip</code> is typically used as the termination test in recursions
through the integers.  It has the advantage of ``coercing'' its
argument to an integer 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>zip</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>