Oset of the keys of an omap.
Function:
(defun keys (map) (declare (xargs :guard (mapp map))) (let ((__function__ 'keys)) (declare (ignorable __function__)) (cond ((empty map) nil) (t (mv-let (key val) (head map) (declare (ignore val)) (insert key (keys (tail map))))))))
Theorem:
(defthm setp-of-keys (b* ((keys (keys map))) (setp keys)) :rule-classes :rewrite)
Theorem:
(defthm keys-when-empty (implies (empty map) (equal (keys map) nil)) :rule-classes (:rewrite :type-prescription))