(vl-user-signature user-sig really-user-p warnings elabindex ledger &key (config 'config)) → (mv ok instkeys warnings new-elabindex ledger)
Function:
(defun vl-user-signature-fn (user-sig really-user-p warnings elabindex ledger config) (declare (xargs :stobjs (elabindex))) (declare (xargs :guard (and (vl-user-paramsetting-p user-sig) (vl-warninglist-p warnings) (vl-unparam-ledger-p ledger) (vl-simpconfig-p config)))) (let ((__function__ 'vl-user-signature)) (declare (ignorable __function__)) (b* (((vl-user-paramsetting user-sig)) (ledger (vl-unparam-ledger-fix ledger)) (x (vl-scopestack-find-definition user-sig.modname (vl-elabindex->ss))) ((unless (and x (or (eq (tag x) :vl-module) (eq (tag x) :vl-interface)))) (mv nil nil (if really-user-p (fatal :type :vl-user-signature-unparam-fail :msg "Top-level module/interface ~s0 required by user paramsetting ~x1 not found" :args (list user-sig.modname (vl-user-paramsetting-fix user-sig))) (fatal :type :vl-unparam-fail :msg "Programming error: top-level module/interface ~s0 not found" :args (list user-sig.modname))) elabindex ledger)) ((vl-elabindex elabindex) (vl-elabindex-push x)) (paramdecls (if (eq (tag x) :vl-module) (vl-module->paramdecls x) (vl-interface->paramdecls x))) (ports (if (eq (tag x) :vl-module) (vl-module->ports x) (vl-interface->ports x))) ((mv ok warnings elabindex final-paramdecls) (vl-scope-finalize-params paramdecls (make-vl-paramargs-named :args (vl-string/int-alist-to-namedargs user-sig.settings)) warnings elabindex elabindex.ss (caar (vl-elabindex->undostack)))) (inside-mod-ss (vl-elabindex->ss)) (elabindex (vl-elabindex-undo)) ((unless ok) (mv nil nil warnings elabindex ledger)) ((mv instkey ledger) (vl-unparam-add-to-ledger user-sig.modname final-paramdecls ports nil ledger elabindex.ss inside-mod-ss :user-name user-sig.unparam-name)) ((mv ok ifaceport-instkeys warnings elabindex ledger) (vl-portlist-interface-signatures (if (eq (tag x) :vl-module) (vl-module->ports x) (vl-interface->ports x)) warnings elabindex ledger))) (mv ok (cons instkey ifaceport-instkeys) warnings elabindex ledger))))
Theorem:
(defthm vl-unparam-instkeylist-p-of-vl-user-signature.instkeys (b* (((mv ?ok ?instkeys ?warnings ?new-elabindex ?ledger) (vl-user-signature-fn user-sig really-user-p warnings elabindex ledger config))) (vl-unparam-instkeylist-p instkeys)) :rule-classes :rewrite)
Theorem:
(defthm vl-warninglist-p-of-vl-user-signature.warnings (b* (((mv ?ok ?instkeys ?warnings ?new-elabindex ?ledger) (vl-user-signature-fn user-sig really-user-p warnings elabindex ledger config))) (vl-warninglist-p warnings)) :rule-classes :rewrite)
Theorem:
(defthm vl-unparam-ledger-p-of-vl-user-signature.ledger (b* (((mv ?ok ?instkeys ?warnings ?new-elabindex ?ledger) (vl-user-signature-fn user-sig really-user-p warnings elabindex ledger config))) (vl-unparam-ledger-p ledger)) :rule-classes :rewrite)
Theorem:
(defthm vl-user-signature-fn-of-vl-user-paramsetting-fix-user-sig (equal (vl-user-signature-fn (vl-user-paramsetting-fix user-sig) really-user-p warnings elabindex ledger config) (vl-user-signature-fn user-sig really-user-p warnings elabindex ledger config)))
Theorem:
(defthm vl-user-signature-fn-vl-user-paramsetting-equiv-congruence-on-user-sig (implies (vl-user-paramsetting-equiv user-sig user-sig-equiv) (equal (vl-user-signature-fn user-sig really-user-p warnings elabindex ledger config) (vl-user-signature-fn user-sig-equiv really-user-p warnings elabindex ledger config))) :rule-classes :congruence)
Theorem:
(defthm vl-user-signature-fn-of-vl-warninglist-fix-warnings (equal (vl-user-signature-fn user-sig really-user-p (vl-warninglist-fix warnings) elabindex ledger config) (vl-user-signature-fn user-sig really-user-p warnings elabindex ledger config)))
Theorem:
(defthm vl-user-signature-fn-vl-warninglist-equiv-congruence-on-warnings (implies (vl-warninglist-equiv warnings warnings-equiv) (equal (vl-user-signature-fn user-sig really-user-p warnings elabindex ledger config) (vl-user-signature-fn user-sig really-user-p warnings-equiv elabindex ledger config))) :rule-classes :congruence)
Theorem:
(defthm vl-user-signature-fn-of-vl-unparam-ledger-fix-ledger (equal (vl-user-signature-fn user-sig really-user-p warnings elabindex (vl-unparam-ledger-fix ledger) config) (vl-user-signature-fn user-sig really-user-p warnings elabindex ledger config)))
Theorem:
(defthm vl-user-signature-fn-vl-unparam-ledger-equiv-congruence-on-ledger (implies (vl-unparam-ledger-equiv ledger ledger-equiv) (equal (vl-user-signature-fn user-sig really-user-p warnings elabindex ledger config) (vl-user-signature-fn user-sig really-user-p warnings elabindex ledger-equiv config))) :rule-classes :congruence)
Theorem:
(defthm vl-user-signature-fn-of-vl-simpconfig-fix-config (equal (vl-user-signature-fn user-sig really-user-p warnings elabindex ledger (vl-simpconfig-fix config)) (vl-user-signature-fn user-sig really-user-p warnings elabindex ledger config)))
Theorem:
(defthm vl-user-signature-fn-vl-simpconfig-equiv-congruence-on-config (implies (vl-simpconfig-equiv config config-equiv) (equal (vl-user-signature-fn user-sig really-user-p warnings elabindex ledger config) (vl-user-signature-fn user-sig really-user-p warnings elabindex ledger config-equiv))) :rule-classes :congruence)