(vl-unparam-instlist x elabindex ledger warnings keylist &key (config 'config)) → (mv successp warnings insts keylist new-elabindex ledger)
Function:
(defun vl-unparam-instlist-fn (x elabindex ledger warnings keylist config) (declare (xargs :stobjs (elabindex))) (declare (xargs :guard (and (vl-modinstlist-p x) (vl-unparam-ledger-p ledger) (vl-warninglist-p warnings) (vl-unparam-instkeylist-p keylist) (vl-simpconfig-p config)))) (let ((__function__ 'vl-unparam-instlist)) (declare (ignorable __function__)) (b* (((when (atom x)) (mv t (ok) nil (vl-unparam-instkeylist-fix keylist) elabindex (vl-unparam-ledger-fix ledger))) ((mv ok1 warnings inst1 instkey1 elabindex ledger) (vl-unparam-inst (car x) elabindex ledger warnings)) (keylist (if ok1 (cons instkey1 keylist) keylist)) ((mv ok2 warnings insts2 keylist elabindex ledger) (vl-unparam-instlist (cdr x) elabindex ledger warnings keylist))) (mv (and ok1 ok2) warnings (cons-with-hint inst1 insts2 x) keylist elabindex ledger))))
Theorem:
(defthm booleanp-of-vl-unparam-instlist.successp (b* (((mv ?successp ?warnings ?insts ?keylist ?new-elabindex ?ledger) (vl-unparam-instlist-fn x elabindex ledger warnings keylist config))) (booleanp successp)) :rule-classes :type-prescription)
Theorem:
(defthm vl-warninglist-p-of-vl-unparam-instlist.warnings (b* (((mv ?successp ?warnings ?insts ?keylist ?new-elabindex ?ledger) (vl-unparam-instlist-fn x elabindex ledger warnings keylist config))) (vl-warninglist-p warnings)) :rule-classes :rewrite)
Theorem:
(defthm vl-modinstlist-p-of-vl-unparam-instlist.insts (b* (((mv ?successp ?warnings ?insts ?keylist ?new-elabindex ?ledger) (vl-unparam-instlist-fn x elabindex ledger warnings keylist config))) (vl-modinstlist-p insts)) :rule-classes :rewrite)
Theorem:
(defthm vl-unparam-instkeylist-p-of-vl-unparam-instlist.keylist (b* (((mv ?successp ?warnings ?insts ?keylist ?new-elabindex ?ledger) (vl-unparam-instlist-fn x elabindex ledger warnings keylist config))) (vl-unparam-instkeylist-p keylist)) :rule-classes :rewrite)
Theorem:
(defthm vl-unparam-ledger-p-of-vl-unparam-instlist.ledger (b* (((mv ?successp ?warnings ?insts ?keylist ?new-elabindex ?ledger) (vl-unparam-instlist-fn x elabindex ledger warnings keylist config))) (vl-unparam-ledger-p ledger)) :rule-classes :rewrite)
Theorem:
(defthm vl-unparam-instlist-fn-of-vl-modinstlist-fix-x (equal (vl-unparam-instlist-fn (vl-modinstlist-fix x) elabindex ledger warnings keylist config) (vl-unparam-instlist-fn x elabindex ledger warnings keylist config)))
Theorem:
(defthm vl-unparam-instlist-fn-vl-modinstlist-equiv-congruence-on-x (implies (vl-modinstlist-equiv x x-equiv) (equal (vl-unparam-instlist-fn x elabindex ledger warnings keylist config) (vl-unparam-instlist-fn x-equiv elabindex ledger warnings keylist config))) :rule-classes :congruence)
Theorem:
(defthm vl-unparam-instlist-fn-of-vl-unparam-ledger-fix-ledger (equal (vl-unparam-instlist-fn x elabindex (vl-unparam-ledger-fix ledger) warnings keylist config) (vl-unparam-instlist-fn x elabindex ledger warnings keylist config)))
Theorem:
(defthm vl-unparam-instlist-fn-vl-unparam-ledger-equiv-congruence-on-ledger (implies (vl-unparam-ledger-equiv ledger ledger-equiv) (equal (vl-unparam-instlist-fn x elabindex ledger warnings keylist config) (vl-unparam-instlist-fn x elabindex ledger-equiv warnings keylist config))) :rule-classes :congruence)
Theorem:
(defthm vl-unparam-instlist-fn-of-vl-warninglist-fix-warnings (equal (vl-unparam-instlist-fn x elabindex ledger (vl-warninglist-fix warnings) keylist config) (vl-unparam-instlist-fn x elabindex ledger warnings keylist config)))
Theorem:
(defthm vl-unparam-instlist-fn-vl-warninglist-equiv-congruence-on-warnings (implies (vl-warninglist-equiv warnings warnings-equiv) (equal (vl-unparam-instlist-fn x elabindex ledger warnings keylist config) (vl-unparam-instlist-fn x elabindex ledger warnings-equiv keylist config))) :rule-classes :congruence)
Theorem:
(defthm vl-unparam-instlist-fn-of-vl-unparam-instkeylist-fix-keylist (equal (vl-unparam-instlist-fn x elabindex ledger warnings (vl-unparam-instkeylist-fix keylist) config) (vl-unparam-instlist-fn x elabindex ledger warnings keylist config)))
Theorem:
(defthm vl-unparam-instlist-fn-vl-unparam-instkeylist-equiv-congruence-on-keylist (implies (vl-unparam-instkeylist-equiv keylist keylist-equiv) (equal (vl-unparam-instlist-fn x elabindex ledger warnings keylist config) (vl-unparam-instlist-fn x elabindex ledger warnings keylist-equiv config))) :rule-classes :congruence)
Theorem:
(defthm vl-unparam-instlist-fn-of-vl-simpconfig-fix-config (equal (vl-unparam-instlist-fn x elabindex ledger warnings keylist (vl-simpconfig-fix config)) (vl-unparam-instlist-fn x elabindex ledger warnings keylist config)))
Theorem:
(defthm vl-unparam-instlist-fn-vl-simpconfig-equiv-congruence-on-config (implies (vl-simpconfig-equiv config config-equiv) (equal (vl-unparam-instlist-fn x elabindex ledger warnings keylist config) (vl-unparam-instlist-fn x elabindex ledger warnings keylist config-equiv))) :rule-classes :congruence)