(svex-envlist-keyset x) → keys
Function:
(defun svex-envlist-keyset (x) (declare (xargs :guard (svex-envlist-p x))) (let ((__function__ 'svex-envlist-keyset)) (declare (ignorable __function__)) (if (atom x) nil (union (mergesort (svarlist-filter (alist-keys (car x)))) (svex-envlist-keyset (cdr x))))))
Theorem:
(defthm return-type-of-svex-envlist-keyset (b* ((keys (svex-envlist-keyset x))) (and (svarlist-p keys) (setp keys))) :rule-classes :rewrite)
Theorem:
(defthm svex-envlist-keyset-sufficient (b* ((?keys (svex-envlist-keyset x))) (implies (member env x) (subsetp (alist-keys (svex-env-fix env)) keys))))
Theorem:
(defthm svex-envlist-keyset-of-svex-envlist-fix-x (equal (svex-envlist-keyset (svex-envlist-fix x)) (svex-envlist-keyset x)))
Theorem:
(defthm svex-envlist-keyset-svex-envlist-equiv-congruence-on-x (implies (svex-envlist-equiv x x-equiv) (equal (svex-envlist-keyset x) (svex-envlist-keyset x-equiv))) :rule-classes :congruence)