~ubuntu-branches/ubuntu/gutsy/acl2/gutsy

« back to all changes in this revision

Viewing changes to books/rtl/rel6/support/support/fast-and.lisp

  • Committer: Bazaar Package Importer
  • Author(s): Camm Maguire
  • Date: 2006-12-04 10:35:42 UTC
  • mfrom: (1.1.5 upstream) (3.1.1 etch)
  • Revision ID: james.westby@ubuntu.com-20061204103542-68nf4pkilci0018n
Tags: 3.1-1
New upstream release

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
(in-package "ACL2")
 
2
 
 
3
(defun split-list (lst lo hi)
 
4
  (cond ((endp lst) 
 
5
         (mv lo hi))
 
6
        ((endp (cdr lst)) 
 
7
         (mv (cons (car lst) lo) hi))
 
8
        (t
 
9
         (split-list (cddr lst)
 
10
                     (cons (car lst) lo)
 
11
                     (cons (cadr lst) hi)))))
 
12
 
 
13
(defun fast-and-fn (conjuncts)
 
14
  (declare (xargs :mode :program))
 
15
  (cond ((endp conjuncts) ''t)
 
16
        ((endp (cdr conjuncts)) (car conjuncts))
 
17
        (t
 
18
         (mv-let (hi lo)
 
19
             (split-list conjuncts () ())
 
20
           (list 'if
 
21
                 (fast-and-fn hi)
 
22
                 (fast-and-fn lo)
 
23
                 'nil)))))
 
24
 
 
25
(defmacro fast-and (&rest conjuncts)
 
26
  (fast-and-fn conjuncts))