other
(in-package "ACL2")
other
(defn hons-equal (x y) (declare (xargs :mode :logic)) (equal x y))
other
(defn hons-assoc-equal (key alist) (declare (xargs :mode :logic)) (cond ((atom alist) nil) ((and (consp (car alist)) (hons-equal key (caar alist))) (car alist)) (t (hons-assoc-equal key (cdr alist)))))
other
(defn hons-get (key alist) (declare (xargs :mode :logic)) (hons-assoc-equal key alist))
other
(defn hons-acons (key val alist) (declare (xargs :mode :logic)) (cons (cons key val) alist))
fast-alist-free-on-exit-rawmacro
(defmacro fast-alist-free-on-exit-raw (alist form) (declare (ignore alist)) form)
other
(defn fast-alist-free (alist) (declare (xargs :mode :logic)) alist)
fast-alist-free-on-exitmacro
(defmacro fast-alist-free-on-exit (alist form) `(return-last 'fast-alist-free-on-exit-raw ,ALIST ,FORM))
other
(defn hons-copy (x) (declare (xargs :mode :logic)) x)
other
(defn hons-copy-persistent (x) x)
other
(defn hons (x y) (cons x y))
other
(defn hons-equal-lite (x y) (equal x y))
other
(defn hons-clear (gc) (declare (ignore gc)) nil)
other
(defn hons-clear! (gc) (declare (ignore gc)) nil)
other
(defn hons-wash nil nil)
other
(defn hons-wash! nil nil)
other
(defn hons-summary nil nil)
hons-resizemacro
(defmacro hons-resize (&key str-ht nil-ht cdr-ht cdr-ht-eql addr-ht other-ht sbits fal-ht persist-ht) `(hons-resize-fn ,STR-HT ,NIL-HT ,CDR-HT ,CDR-HT-EQL ,ADDR-HT ,OTHER-HT ,SBITS ,FAL-HT ,PERSIST-HT))
other
(defn hons-resize-fn (str-ht nil-ht cdr-ht cdr-ht-eql addr-ht other-ht sbits fal-ht persist-ht) (declare (ignore str-ht nil-ht cdr-ht cdr-ht-eql addr-ht other-ht sbits fal-ht persist-ht)) nil)
other
(table hons 'slow-alist-warning :break)
set-slow-alist-actionmacro
(defmacro set-slow-alist-action (action) (declare (xargs :guard (or (eq action :warning) (eq action :break) (not action)))) `(table hons 'slow-alist-warning ,ACTION))
other
(defn hons-acons! (key val alist) (cons (cons key val) alist))
other
(defn make-fast-alist (alist) alist)
other
(defn fast-alist-fork (alist ans) (cond ((atom alist) ans) ((atom (car alist)) (fast-alist-fork (cdr alist) ans)) ((hons-assoc-equal (car (car alist)) ans) (fast-alist-fork (cdr alist) ans)) (t (fast-alist-fork (cdr alist) (cons (car alist) ans)))))
other
(defn fast-alist-fork! (alist ans) (fast-alist-fork alist ans))
hons-shrink-alistmacro
(defmacro hons-shrink-alist (alist ans) `(fast-alist-fork ,ALIST ,ANS))
hons-shrink-alist!macro
(defmacro hons-shrink-alist! (alist ans) `(fast-alist-fork! ,ALIST ,ANS))
other
(add-macro-alias hons-shrink-alist fast-alist-fork)
other
(add-macro-alias hons-shrink-alist! fast-alist-fork!)
other
(defn fast-alist-clean (alist) (fast-alist-fork alist (if (consp alist) (cdr (last alist)) alist)))
other
(defn fast-alist-clean! (alist) (fast-alist-clean alist))
other
(defn fast-alist-summary nil nil)
with-fast-alist-rawmacro
(defmacro with-fast-alist-raw (alist form) (declare (ignore alist)) form)
with-fast-alistmacro
(defmacro with-fast-alist (alist form) `(return-last 'with-fast-alist-raw ,ALIST ,FORM))
with-stolen-alist-rawmacro
(defmacro with-stolen-alist-raw (alist form) (declare (ignore alist)) form)
with-stolen-alistmacro
(defmacro with-stolen-alist (alist form) `(return-last 'with-stolen-alist-raw ,ALIST ,FORM))
other
(defn cons-subtrees (x al) (cond ((atom x) al) ((hons-get x al) al) (t (cons-subtrees (car x) (cons-subtrees (cdr x) (hons-acons x t al))))))
other
(defn flush-hons-get-hash-table-link (alist) (fast-alist-free alist))
in-theory
(in-theory (disable (:executable-counterpart hons) (:executable-counterpart hons-copy) (:executable-counterpart hons-copy-persistent) (:executable-counterpart hons-summary) (:executable-counterpart fast-alist-summary) (:executable-counterpart hons-clear) (:executable-counterpart hons-clear!) (:executable-counterpart hons-wash) (:executable-counterpart hons-wash!) (:executable-counterpart hons-resize-fn) (:executable-counterpart hons-get) (:executable-counterpart hons-acons) (:executable-counterpart hons-acons!) (:executable-counterpart fast-alist-fork) (:executable-counterpart fast-alist-fork!) (:executable-counterpart fast-alist-clean) (:executable-counterpart fast-alist-clean!) (:executable-counterpart fast-alist-len) (:executable-counterpart fast-alist-free) (:executable-counterpart flush-hons-get-hash-table-link)))
remove-keywordfunction
(defun remove-keyword (word l) (declare (xargs :guard (and (keywordp word) (keyword-value-listp l)))) (cond ((endp l) nil) ((eq word (car l)) (remove-keyword word (cddr l))) (t (list* (car l) (cadr l) (remove-keyword word (cddr l))))))