(vl-datatype-update-pdims pdims x) → newx
Function:
(defun vl-datatype-update-pdims (pdims x) (declare (xargs :guard (and (vl-packeddimensionlist-p pdims) (vl-datatype-p x)))) (let ((__function__ 'vl-datatype-update-pdims)) (declare (ignorable __function__)) (mbe :logic (vl-datatype-update-dims pdims (vl-datatype->udims x) x) :exec (vl-datatype-case x :vl-coretype (change-vl-coretype x :pdims pdims) :vl-struct (change-vl-struct x :pdims pdims) :vl-union (change-vl-union x :pdims pdims) :vl-enum (change-vl-enum x :pdims pdims) :vl-usertype (change-vl-usertype x :pdims pdims)))))
Theorem:
(defthm return-type-of-vl-datatype-update-pdims (b* ((newx (vl-datatype-update-pdims pdims x))) (and (vl-datatype-p newx) (eq (vl-datatype-kind newx) (vl-datatype-kind x)))) :rule-classes :rewrite)
Theorem:
(defthm vl-datatype-update-pdims-of-vl-packeddimensionlist-fix-pdims (equal (vl-datatype-update-pdims (vl-packeddimensionlist-fix pdims) x) (vl-datatype-update-pdims pdims x)))
Theorem:
(defthm vl-datatype-update-pdims-vl-packeddimensionlist-equiv-congruence-on-pdims (implies (vl-packeddimensionlist-equiv pdims pdims-equiv) (equal (vl-datatype-update-pdims pdims x) (vl-datatype-update-pdims pdims-equiv x))) :rule-classes :congruence)
Theorem:
(defthm vl-datatype-update-pdims-of-vl-datatype-fix-x (equal (vl-datatype-update-pdims pdims (vl-datatype-fix x)) (vl-datatype-update-pdims pdims x)))
Theorem:
(defthm vl-datatype-update-pdims-vl-datatype-equiv-congruence-on-x (implies (vl-datatype-equiv x x-equiv) (equal (vl-datatype-update-pdims pdims x) (vl-datatype-update-pdims pdims x-equiv))) :rule-classes :congruence)