(sv::constraintlist-subst-memo acl2::x subst) → sv::new-x
Function:
(defun sv::constraintlist-subst-memo (acl2::x subst) (declare (xargs :guard (and (sv::constraintlist-p acl2::x) (sv::svex-alist-p subst)))) (let ((__function__ 'sv::constraintlist-subst-memo)) (declare (ignorable __function__)) (if (atom acl2::x) nil (cons (sv::change-constraint (car acl2::x) :cond (sv::svex-subst-memo (sv::constraint->cond (car acl2::x)) subst)) (sv::constraintlist-subst-memo (cdr acl2::x) subst)))))
Theorem:
(defthm sv::constraintlist-p-of-constraintlist-subst-memo (b* ((sv::new-x (sv::constraintlist-subst-memo acl2::x subst))) (sv::constraintlist-p sv::new-x)) :rule-classes :rewrite)
Theorem:
(defthm sv::vars-of-constraintlist-subst-memo (b* ((sv::?new-x (sv::constraintlist-subst-memo acl2::x subst))) (implies (not (member sv::v (sv::svex-alist-vars subst))) (not (member sv::v (sv::constraintlist-vars sv::new-x))))))
Theorem:
(defthm sv::constraintlist-subst-memo-of-constraintlist-fix-x (equal (sv::constraintlist-subst-memo (sv::constraintlist-fix acl2::x) subst) (sv::constraintlist-subst-memo acl2::x subst)))
Theorem:
(defthm sv::constraintlist-subst-memo-constraintlist-equiv-congruence-on-x (implies (sv::constraintlist-equiv acl2::x sv::x-equiv) (equal (sv::constraintlist-subst-memo acl2::x subst) (sv::constraintlist-subst-memo sv::x-equiv subst))) :rule-classes :congruence)
Theorem:
(defthm sv::constraintlist-subst-memo-of-svex-alist-fix-subst (equal (sv::constraintlist-subst-memo acl2::x (sv::svex-alist-fix subst)) (sv::constraintlist-subst-memo acl2::x subst)))
Theorem:
(defthm sv::constraintlist-subst-memo-svex-alist-equiv-congruence-on-subst (implies (sv::svex-alist-equiv subst sv::subst-equiv) (equal (sv::constraintlist-subst-memo acl2::x subst) (sv::constraintlist-subst-memo acl2::x sv::subst-equiv))) :rule-classes :congruence)