(vl-seltrace-type x base-type) → type
Function:
(defun vl-seltrace-type (x base-type) (declare (xargs :guard (and (vl-seltrace-p x) (vl-datatype-p base-type)))) (declare (xargs :guard (and (vl-seltrace-usertypes-ok x) (vl-datatype-resolved-p base-type)))) (let ((__function__ 'vl-seltrace-type)) (declare (ignorable __function__)) (if (consp x) (b* (((vl-selstep sel) (car x))) sel.type) (vl-datatype-fix base-type))))
Theorem:
(defthm vl-datatype-p-of-vl-seltrace-type (b* ((type (vl-seltrace-type x base-type))) (vl-datatype-p type)) :rule-classes :rewrite)
Theorem:
(defthm usertypes-ok-of-vl-seltrace-type/ss (b* ((common-lisp::?type (vl-seltrace-type x base-type))) (implies (and (vl-seltrace-usertypes-ok x) (vl-datatype-resolved-p base-type)) (vl-datatype-resolved-p type))))
Theorem:
(defthm vl-seltrace-type-of-vl-seltrace-fix-x (equal (vl-seltrace-type (vl-seltrace-fix x) base-type) (vl-seltrace-type x base-type)))
Theorem:
(defthm vl-seltrace-type-vl-seltrace-equiv-congruence-on-x (implies (vl-seltrace-equiv x x-equiv) (equal (vl-seltrace-type x base-type) (vl-seltrace-type x-equiv base-type))) :rule-classes :congruence)
Theorem:
(defthm vl-seltrace-type-of-vl-datatype-fix-base-type (equal (vl-seltrace-type x (vl-datatype-fix base-type)) (vl-seltrace-type x base-type)))
Theorem:
(defthm vl-seltrace-type-vl-datatype-equiv-congruence-on-base-type (implies (vl-datatype-equiv base-type base-type-equiv) (equal (vl-seltrace-type x base-type) (vl-seltrace-type x base-type-equiv))) :rule-classes :congruence)