For instance,
(vl-hidindex->indices x) → indices
Function:
(defun vl-hidindex->indices$inline (x) (declare (xargs :guard (vl-expr-p x))) (declare (xargs :guard (vl-hidindex-p x))) (let ((__function__ 'vl-hidindex->indices)) (declare (ignorable __function__)) (mbe :logic (b* (((when (vl-atom-p x)) nil) ((vl-nonatom x) x)) (append (vl-hidindex->indices (first x.args)) (list (vl-expr-fix (second x.args))))) :exec (vl-hidindex->indices-exec x nil))))
Theorem:
(defthm vl-exprlist-p-of-vl-hidindex->indices (b* ((indices (vl-hidindex->indices$inline x))) (vl-exprlist-p indices)) :rule-classes :rewrite)
Theorem:
(defthm vl-hidindex->indices-when-vl-atom-p (implies (vl-atom-p x) (equal (vl-hidindex->indices x) nil)))
Theorem:
(defthm vl-exprlist-count-of-vl-hidindex->indices-weak (implies (vl-hidindex-p x) (<= (vl-exprlist-count (vl-hidindex->indices x)) (vl-expr-count x))) :rule-classes ((:rewrite) (:linear)))
Theorem:
(defthm vl-exprlist-count-of-vl-hidindex->indices-strong (implies (and (vl-hidindex-p x) (not (vl-atom-p x))) (< (vl-exprlist-count (vl-hidindex->indices x)) (vl-expr-count x))) :rule-classes ((:rewrite) (:linear)))
Theorem:
(defthm vl-hidindex->indices$inline-of-vl-expr-fix-x (equal (vl-hidindex->indices$inline (vl-expr-fix x)) (vl-hidindex->indices$inline x)))
Theorem:
(defthm vl-hidindex->indices$inline-vl-expr-equiv-congruence-on-x (implies (vl-expr-equiv x x-equiv) (equal (vl-hidindex->indices$inline x) (vl-hidindex->indices$inline x-equiv))) :rule-classes :congruence)