Collect variables present in an lhprobe-map
(lhprobe-map-vars x) → vars
Function:
(defun lhprobe-map-vars (x) (declare (xargs :guard (lhprobe-map-p x))) (let ((__function__ 'lhprobe-map-vars)) (declare (ignorable __function__)) (b* (((when (atom x)) nil) ((unless (mbt (and (consp (car x)) (svar-p (caar x))))) (lhprobe-map-vars (cdr x)))) (append (lhprobe-vars (cdar x)) (lhprobe-map-vars (cdr x))))))
Theorem:
(defthm svarlist-p-of-lhprobe-map-vars (b* ((vars (lhprobe-map-vars x))) (svarlist-p vars)) :rule-classes :rewrite)
Theorem:
(defthm lhprobe-map-eval-of-svex-envlist-extract-vars (implies (subsetp-equal (lhprobe-map-vars x) (svarlist-fix vars)) (equal (lhprobe-map-eval x (svex-envlist-extract-keys vars envs)) (lhprobe-map-eval x envs))))
Theorem:
(defthm lhprobe-map-eval-when-envs-agree (implies (svex-envlists-agree (lhprobe-map-vars x) envs1 envs2) (equal (lhprobe-map-eval x envs1) (lhprobe-map-eval x envs2))))
Theorem:
(defthm lhprobe-map-vars-of-lhprobe-map-fix-x (equal (lhprobe-map-vars (lhprobe-map-fix x)) (lhprobe-map-vars x)))
Theorem:
(defthm lhprobe-map-vars-lhprobe-map-equiv-congruence-on-x (implies (lhprobe-map-equiv x x-equiv) (equal (lhprobe-map-vars x) (lhprobe-map-vars x-equiv))) :rule-classes :congruence)