(vl-hidexpr->rest x) → rest
Function:
(defun vl-hidexpr->rest (x) (declare (xargs :guard (vl-expr-p x))) (declare (xargs :guard (and (vl-hidexpr-p x) (not (vl-hidexpr->endp x))))) (let ((__function__ 'vl-hidexpr->rest)) (declare (ignorable __function__)) (vl-expr-fix (second (vl-nonatom->args x)))))
Theorem:
(defthm return-type-of-vl-hidexpr->rest (b* ((rest (vl-hidexpr->rest x))) (and (vl-expr-p rest) (implies (and (vl-hidexpr-p x) (not (vl-hidexpr->endp x))) (vl-hidexpr-p rest)))) :rule-classes :rewrite)
Theorem:
(defthm vl-expr-count-of-vl-hidexpr->rest (implies (not (vl-hidexpr->endp x)) (< (vl-expr-count (vl-hidexpr->rest x)) (vl-expr-count x))) :rule-classes :linear)
Theorem:
(defthm vl-expr-count-of-vl-hidexpr-pieces (implies (and (vl-hidexpr-p x) (not (vl-hidexpr->endp x))) (< (+ (vl-expr-count (vl-hidexpr->first x)) (vl-expr-count (vl-hidexpr->rest x))) (vl-expr-count x))) :rule-classes :linear)
Theorem:
(defthm vl-hidexpr->rest-of-vl-expr-fix-x (equal (vl-hidexpr->rest (vl-expr-fix x)) (vl-hidexpr->rest x)))
Theorem:
(defthm vl-hidexpr->rest-vl-expr-equiv-congruence-on-x (implies (vl-expr-equiv x x-equiv) (equal (vl-hidexpr->rest x) (vl-hidexpr->rest x-equiv))) :rule-classes :congruence)