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