Compose an svex with a substitution alist. Variables not in the substitution are left in place.
(svex-compose-svstack x a) → xa
Theorem:
(defthm return-type-of-svex-compose-svstack.xa (b* ((?xa (svex-compose-svstack x a))) (equal xa (svex-compose-rw x (make-svex-substconfig :alist (svstack-to-svex-alist a) :simp 5)))) :rule-classes :rewrite)
Theorem:
(defthm return-type-of-svexlist-compose-svstack.xa (b* ((?xa (svexlist-compose-svstack x a))) (equal xa (svexlist-compose-rw x (make-svex-substconfig :alist (svstack-to-svex-alist a) :simp 5)))) :rule-classes :rewrite)
Theorem:
(defthm svex-compose-svstack-of-svex-fix-x (equal (svex-compose-svstack (svex-fix x) a) (svex-compose-svstack x a)))
Theorem:
(defthm svex-compose-svstack-of-svstack-fix-a (equal (svex-compose-svstack x (svstack-fix a)) (svex-compose-svstack x a)))
Theorem:
(defthm svexlist-compose-svstack-of-svexlist-fix-x (equal (svexlist-compose-svstack (svexlist-fix x) a) (svexlist-compose-svstack x a)))
Theorem:
(defthm svexlist-compose-svstack-of-svstack-fix-a (equal (svexlist-compose-svstack x (svstack-fix a)) (svexlist-compose-svstack x a)))
Theorem:
(defthm svex-compose-svstack-svex-equiv-congruence-on-x (implies (svex-equiv x x-equiv) (equal (svex-compose-svstack x a) (svex-compose-svstack x-equiv a))) :rule-classes :congruence)
Theorem:
(defthm svex-compose-svstack-svstack-equiv-congruence-on-a (implies (svstack-equiv a a-equiv) (equal (svex-compose-svstack x a) (svex-compose-svstack x a-equiv))) :rule-classes :congruence)
Theorem:
(defthm svexlist-compose-svstack-svexlist-equiv-congruence-on-x (implies (svexlist-equiv x x-equiv) (equal (svexlist-compose-svstack x a) (svexlist-compose-svstack x-equiv a))) :rule-classes :congruence)
Theorem:
(defthm svexlist-compose-svstack-svstack-equiv-congruence-on-a (implies (svstack-equiv a a-equiv) (equal (svexlist-compose-svstack x a) (svexlist-compose-svstack x a-equiv))) :rule-classes :congruence)
Function:
(defun svex-compose-svstack-memoize-condition (x a) (declare (ignorable x a) (xargs :guard (if (svex-p x) (svstack-p a) 'nil))) (svex-case x :call))