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