(vl-portlist-interface-signatures x warnings elabindex ledger &key (config 'config)) → (mv ok instkeys warnings new-elabindex ledger)
Function:
(defun vl-portlist-interface-signatures-fn (x warnings elabindex ledger config) (declare (xargs :stobjs (elabindex))) (declare (xargs :guard (and (vl-portlist-p x) (vl-warninglist-p warnings) (vl-unparam-ledger-p ledger) (vl-simpconfig-p config)))) (let ((__function__ 'vl-portlist-interface-signatures)) (declare (ignorable __function__)) (b* ((warnings (vl-warninglist-fix warnings)) (ledger (vl-unparam-ledger-fix ledger)) ((when (atom x)) (mv t nil warnings elabindex ledger)) (port1 (vl-port-fix (car x))) ((mv ok1 instkeys1 warnings elabindex ledger) (case (tag port1) (:vl-regularport (mv t nil warnings elabindex ledger)) (otherwise (b* (((mv ok instkey warnings elabindex ledger) (vl-interfaceport-default-signature port1 warnings elabindex ledger))) (mv ok (and ok (list instkey)) warnings elabindex ledger))))) ((mv ok2 instkeys2 warnings elabindex ledger) (vl-portlist-interface-signatures (cdr x) warnings elabindex ledger))) (mv (and ok1 ok2) (append instkeys1 instkeys2) warnings elabindex ledger))))
Theorem:
(defthm vl-unparam-instkeylist-p-of-vl-portlist-interface-signatures.instkeys (b* (((mv ?ok ?instkeys ?warnings ?new-elabindex ?ledger) (vl-portlist-interface-signatures-fn x warnings elabindex ledger config))) (vl-unparam-instkeylist-p instkeys)) :rule-classes :rewrite)
Theorem:
(defthm vl-warninglist-p-of-vl-portlist-interface-signatures.warnings (b* (((mv ?ok ?instkeys ?warnings ?new-elabindex ?ledger) (vl-portlist-interface-signatures-fn x warnings elabindex ledger config))) (vl-warninglist-p warnings)) :rule-classes :rewrite)
Theorem:
(defthm vl-unparam-ledger-p-of-vl-portlist-interface-signatures.ledger (b* (((mv ?ok ?instkeys ?warnings ?new-elabindex ?ledger) (vl-portlist-interface-signatures-fn x warnings elabindex ledger config))) (vl-unparam-ledger-p ledger)) :rule-classes :rewrite)
Theorem:
(defthm vl-portlist-interface-signatures-fn-of-vl-portlist-fix-x (equal (vl-portlist-interface-signatures-fn (vl-portlist-fix x) warnings elabindex ledger config) (vl-portlist-interface-signatures-fn x warnings elabindex ledger config)))
Theorem:
(defthm vl-portlist-interface-signatures-fn-vl-portlist-equiv-congruence-on-x (implies (vl-portlist-equiv x x-equiv) (equal (vl-portlist-interface-signatures-fn x warnings elabindex ledger config) (vl-portlist-interface-signatures-fn x-equiv warnings elabindex ledger config))) :rule-classes :congruence)
Theorem:
(defthm vl-portlist-interface-signatures-fn-of-vl-warninglist-fix-warnings (equal (vl-portlist-interface-signatures-fn x (vl-warninglist-fix warnings) elabindex ledger config) (vl-portlist-interface-signatures-fn x warnings elabindex ledger config)))
Theorem:
(defthm vl-portlist-interface-signatures-fn-vl-warninglist-equiv-congruence-on-warnings (implies (vl-warninglist-equiv warnings warnings-equiv) (equal (vl-portlist-interface-signatures-fn x warnings elabindex ledger config) (vl-portlist-interface-signatures-fn x warnings-equiv elabindex ledger config))) :rule-classes :congruence)
Theorem:
(defthm vl-portlist-interface-signatures-fn-of-vl-unparam-ledger-fix-ledger (equal (vl-portlist-interface-signatures-fn x warnings elabindex (vl-unparam-ledger-fix ledger) config) (vl-portlist-interface-signatures-fn x warnings elabindex ledger config)))
Theorem:
(defthm vl-portlist-interface-signatures-fn-vl-unparam-ledger-equiv-congruence-on-ledger (implies (vl-unparam-ledger-equiv ledger ledger-equiv) (equal (vl-portlist-interface-signatures-fn x warnings elabindex ledger config) (vl-portlist-interface-signatures-fn x warnings elabindex ledger-equiv config))) :rule-classes :congruence)
Theorem:
(defthm vl-portlist-interface-signatures-fn-of-vl-simpconfig-fix-config (equal (vl-portlist-interface-signatures-fn x warnings elabindex ledger (vl-simpconfig-fix config)) (vl-portlist-interface-signatures-fn x warnings elabindex ledger config)))
Theorem:
(defthm vl-portlist-interface-signatures-fn-vl-simpconfig-equiv-congruence-on-config (implies (vl-simpconfig-equiv config config-equiv) (equal (vl-portlist-interface-signatures-fn x warnings elabindex ledger config) (vl-portlist-interface-signatures-fn x warnings elabindex ledger config-equiv))) :rule-classes :congruence)