Check if every key in a list is in an omap.
(list-in keys map) → yes/no
Function:
(defun list-in (keys map) (declare (xargs :guard (and (true-listp keys) (mapp map)))) (let ((__function__ 'list-in)) (declare (ignorable __function__)) (cond ((endp keys) t) (t (and (assoc (car keys) map) (list-in (cdr keys) map))))))
Theorem:
(defthm booleanp-of-list-in (b* ((yes/no (list-in keys map))) (booleanp yes/no)) :rule-classes :rewrite)
Theorem:
(defthm list-in-of-list-fix-keys (equal (list-in (list-fix keys) map) (list-in keys map)))
Theorem:
(defthm list-in-list-equiv-congruence-on-keys (implies (list-equiv keys keys-equiv) (equal (list-in keys map) (list-in keys-equiv map))) :rule-classes :congruence)
Theorem:
(defthm list-in-of-mfix-map (equal (list-in keys (mfix map)) (list-in keys map)))
Theorem:
(defthm list-in-mequiv-congruence-on-map (implies (mequiv map map-equiv) (equal (list-in keys map) (list-in keys map-equiv))) :rule-classes :congruence)