Throw away widths and types from an atom.
(vl-atom-strip x) → x-strip
Function:
(defun vl-atom-strip$inline (x) (declare (xargs :guard (vl-expr-p x))) (declare (xargs :guard (vl-atom-p x))) (let ((__function__ 'vl-atom-strip)) (declare (ignorable __function__)) (mbe :logic (change-vl-atom x :finalwidth nil :finaltype nil :atts nil) :exec (if (or (vl-atom->finalwidth x) (vl-atom->finaltype x) (vl-atom->atts x)) (change-vl-atom x :finalwidth nil :finaltype nil :atts nil) x))))
Theorem:
(defthm return-type-of-vl-atom-strip (b* ((x-strip (vl-atom-strip$inline x))) (and (vl-expr-p x-strip) (eq (vl-expr-kind x-strip) :atom))) :rule-classes :rewrite)
Theorem:
(defthm vl-atom-strip$inline-of-vl-expr-fix-x (equal (vl-atom-strip$inline (vl-expr-fix x)) (vl-atom-strip$inline x)))
Theorem:
(defthm vl-atom-strip$inline-vl-expr-equiv-congruence-on-x (implies (vl-expr-equiv x x-equiv) (equal (vl-atom-strip$inline x) (vl-atom-strip$inline x-equiv))) :rule-classes :congruence)