Safely rename gate instances, preferring names of the form
(vl-namemangle-gateinsts prefix gateinsts nf) → (mv new-gateinsts new-nf)
Function:
(defun vl-namemangle-gateinsts (prefix gateinsts nf) (declare (xargs :guard (and (stringp prefix) (vl-gateinstlist-p gateinsts) (vl-namefactory-p nf)))) (let ((__function__ 'vl-namemangle-gateinsts)) (declare (ignorable __function__)) (b* (((when (atom gateinsts)) (mv nil (vl-namefactory-fix nf))) (instname1 (or (vl-gateinst->name (car gateinsts)) "g")) (want1 (cat prefix "_" instname1)) ((mv fresh1 nf) (vl-namefactory-plain-name want1 nf)) (inst1 (change-vl-gateinst (car gateinsts) :name fresh1)) ((mv insts2 nf) (vl-namemangle-gateinsts prefix (cdr gateinsts) nf))) (mv (cons inst1 insts2) nf))))
Theorem:
(defthm vl-gateinstlist-p-of-vl-namemangle-gateinsts.new-gateinsts (b* (((mv ?new-gateinsts ?new-nf) (vl-namemangle-gateinsts prefix gateinsts nf))) (vl-gateinstlist-p new-gateinsts)) :rule-classes :rewrite)
Theorem:
(defthm vl-namefactory-p-of-vl-namemangle-gateinsts.new-nf (b* (((mv ?new-gateinsts ?new-nf) (vl-namemangle-gateinsts prefix gateinsts nf))) (vl-namefactory-p new-nf)) :rule-classes :rewrite)
Theorem:
(defthm vl-namemangle-gateinsts-mvtypes-0 (true-listp (mv-nth 0 (vl-namemangle-gateinsts prefix gateinsts nf))) :rule-classes :type-prescription)
Theorem:
(defthm len-of-vl-namemangle-gateinsts (b* (((mv new-gateinsts ?new-nf) (vl-namemangle-gateinsts loc gateinsts nf))) (equal (len new-gateinsts) (len gateinsts))))
Theorem:
(defthm vl-namemangle-gateinsts-of-str-fix-prefix (equal (vl-namemangle-gateinsts (str-fix prefix) gateinsts nf) (vl-namemangle-gateinsts prefix gateinsts nf)))
Theorem:
(defthm vl-namemangle-gateinsts-streqv-congruence-on-prefix (implies (streqv prefix prefix-equiv) (equal (vl-namemangle-gateinsts prefix gateinsts nf) (vl-namemangle-gateinsts prefix-equiv gateinsts nf))) :rule-classes :congruence)
Theorem:
(defthm vl-namemangle-gateinsts-of-vl-gateinstlist-fix-gateinsts (equal (vl-namemangle-gateinsts prefix (vl-gateinstlist-fix gateinsts) nf) (vl-namemangle-gateinsts prefix gateinsts nf)))
Theorem:
(defthm vl-namemangle-gateinsts-vl-gateinstlist-equiv-congruence-on-gateinsts (implies (vl-gateinstlist-equiv gateinsts gateinsts-equiv) (equal (vl-namemangle-gateinsts prefix gateinsts nf) (vl-namemangle-gateinsts prefix gateinsts-equiv nf))) :rule-classes :congruence)
Theorem:
(defthm vl-namemangle-gateinsts-of-vl-namefactory-fix-nf (equal (vl-namemangle-gateinsts prefix gateinsts (vl-namefactory-fix nf)) (vl-namemangle-gateinsts prefix gateinsts nf)))
Theorem:
(defthm vl-namemangle-gateinsts-vl-namefactory-equiv-congruence-on-nf (implies (vl-namefactory-equiv nf nf-equiv) (equal (vl-namemangle-gateinsts prefix gateinsts nf) (vl-namemangle-gateinsts prefix gateinsts nf-equiv))) :rule-classes :congruence)