(svex-alist-compose x a) → xx
Function:
(defun svex-alist-compose (x a) (declare (xargs :guard (and (svex-alist-p x) (svex-alist-p a)))) (let ((__function__ 'svex-alist-compose)) (declare (ignorable __function__)) (if (atom x) nil (mbe :logic (if (mbt (and (consp (car x)) (svar-p (caar x)))) (svex-acons (caar x) (svex-compose (cdar x) a) (svex-alist-compose (cdr x) a)) (svex-alist-compose (cdr x) a)) :exec (acl2::with-local-nrev (svex-alist-compose-nrev x a acl2::nrev))))))
Theorem:
(defthm svex-alist-p-of-svex-alist-compose (b* ((xx (svex-alist-compose x a))) (svex-alist-p xx)) :rule-classes :rewrite)
Theorem:
(defthm svex-alist-compose-of-svex-alist-fix-x (equal (svex-alist-compose (svex-alist-fix x) a) (svex-alist-compose x a)))
Theorem:
(defthm svex-alist-compose-svex-alist-equiv-congruence-on-x (implies (svex-alist-equiv x x-equiv) (equal (svex-alist-compose x a) (svex-alist-compose x-equiv a))) :rule-classes :congruence)
Theorem:
(defthm svex-alist-compose-of-svex-alist-fix-a (equal (svex-alist-compose x (svex-alist-fix a)) (svex-alist-compose x a)))
Theorem:
(defthm svex-alist-compose-svex-alist-equiv-congruence-on-a (implies (svex-alist-equiv a a-equiv) (equal (svex-alist-compose x a) (svex-alist-compose x a-equiv))) :rule-classes :congruence)
Theorem:
(defthm svex-alist-eval-of-svex-compose (equal (svex-alist-eval (svex-alist-compose x subst) env) (svex-alist-eval x (append (svex-alist-eval subst env) env))))
Theorem:
(defthm vars-of-svex-alist-compose (implies (and (not (member v (svex-alist-vars x))) (not (member v (svex-alist-vars a)))) (not (member v (svex-alist-vars (svex-alist-compose x a))))))
Theorem:
(defthm svex-lookup-of-svex-alist-compose (equal (svex-lookup v (svex-alist-compose x a)) (let ((x-look (svex-lookup v x))) (and x-look (svex-compose x-look a)))))