(vl-call-namedargs-update-subexprs x subexprs) → new-x
Function:
(defun vl-call-namedargs-update-subexprs (x subexprs) (declare (xargs :guard (and (vl-call-namedargs-p x) (vl-exprlist-p subexprs)))) (declare (xargs :guard (equal (len subexprs) (len (vl-call-namedargs->subexprs x))))) (let ((__function__ 'vl-call-namedargs-update-subexprs)) (declare (ignorable __function__)) (b* ((x (vl-call-namedargs-fix x))) (if (atom x) nil (if (cdar x) (cons (cons (string-fix (caar x)) (vl-expr-fix (car subexprs))) (vl-call-namedargs-update-subexprs (cdr x) (cdr subexprs))) (cons (car x) (vl-call-namedargs-update-subexprs (cdr x) subexprs)))))))
Theorem:
(defthm vl-call-namedargs-p-of-vl-call-namedargs-update-subexprs (b* ((new-x (vl-call-namedargs-update-subexprs x subexprs))) (vl-call-namedargs-p new-x)) :rule-classes :rewrite)
Theorem:
(defthm vl-call-namedargs-update-subexprs-identity (equal (vl-call-namedargs-update-subexprs x (vl-call-namedargs->subexprs x)) (vl-call-namedargs-fix x)))
Theorem:
(defthm vl-call-namedargs-update-subexprs-identity2 (implies (equal (len y) (len (vl-call-namedargs->subexprs x))) (equal (vl-call-namedargs->subexprs (vl-call-namedargs-update-subexprs x y)) (vl-exprlist-fix y))))
Theorem:
(defthm vl-call-namedargs-update-subexprs-of-vl-call-namedargs-fix-x (equal (vl-call-namedargs-update-subexprs (vl-call-namedargs-fix x) subexprs) (vl-call-namedargs-update-subexprs x subexprs)))
Theorem:
(defthm vl-call-namedargs-update-subexprs-vl-call-namedargs-equiv-congruence-on-x (implies (vl-call-namedargs-equiv x x-equiv) (equal (vl-call-namedargs-update-subexprs x subexprs) (vl-call-namedargs-update-subexprs x-equiv subexprs))) :rule-classes :congruence)
Theorem:
(defthm vl-call-namedargs-update-subexprs-of-vl-exprlist-fix-subexprs (equal (vl-call-namedargs-update-subexprs x (vl-exprlist-fix subexprs)) (vl-call-namedargs-update-subexprs x subexprs)))
Theorem:
(defthm vl-call-namedargs-update-subexprs-vl-exprlist-equiv-congruence-on-subexprs (implies (vl-exprlist-equiv subexprs subexprs-equiv) (equal (vl-call-namedargs-update-subexprs x subexprs) (vl-call-namedargs-update-subexprs x subexprs-equiv))) :rule-classes :congruence)