(vl-genblob-elaborate x elabindex &key (reclimit 'reclimit) (config 'config)) → (mv ok warnings new-x new-elabindex)
Function:
(defun vl-genblob-elaborate-fn (x elabindex reclimit config) (declare (xargs :stobjs (elabindex))) (declare (xargs :guard (and (vl-genblob-p x) (natp reclimit) (vl-simpconfig-p config)))) (let ((__function__ 'vl-genblob-elaborate)) (declare (ignorable __function__)) (b* (((vl-genblob x) (vl-genblob-fix x))) (b* (((mv ok warnings portdecls elabindex) (vl-portdecllist-elaborate-fn x.portdecls elabindex reclimit config)) ((mv ok1 warnings1 assigns elabindex) (vl-assignlist-elaborate-fn x.assigns elabindex reclimit config)) (ok (and ok1 ok)) (warnings (append-without-guard warnings1 warnings)) ((mv ok1 warnings1 aliases elabindex) (vl-aliaslist-elaborate-fn x.aliases elabindex reclimit config)) (ok (and ok1 ok)) (warnings (append-without-guard warnings1 warnings)) ((mv ok1 warnings1 vardecls elabindex) (vl-vardecllist-elaborate-fn x.vardecls elabindex reclimit config)) (ok (and ok1 ok)) (warnings (append-without-guard warnings1 warnings)) ((mv ok1 warnings1 paramdecls elabindex) (vl-paramdecllist-elaborate-fn x.paramdecls elabindex reclimit config)) (ok (and ok1 ok)) (warnings (append-without-guard warnings1 warnings)) ((mv ok1 warnings1 fundecls elabindex) (vl-fundecllist-elaborate-fn x.fundecls elabindex reclimit config)) (ok (and ok1 ok)) (warnings (append-without-guard warnings1 warnings)) ((mv ok1 warnings1 taskdecls elabindex) (vl-taskdecllist-elaborate-fn x.taskdecls elabindex reclimit config)) (ok (and ok1 ok)) (warnings (append-without-guard warnings1 warnings)) ((mv ok1 warnings1 modinsts elabindex) (vl-modinstlist-elaborate-fn x.modinsts elabindex reclimit config)) (ok (and ok1 ok)) (warnings (append-without-guard warnings1 warnings)) ((mv ok1 warnings1 gateinsts elabindex) (vl-gateinstlist-elaborate-fn x.gateinsts elabindex reclimit config)) (ok (and ok1 ok)) (warnings (append-without-guard warnings1 warnings)) ((mv ok1 warnings1 alwayses elabindex) (vl-alwayslist-elaborate-fn x.alwayses elabindex reclimit config)) (ok (and ok1 ok)) (warnings (append-without-guard warnings1 warnings)) ((mv ok1 warnings1 initials elabindex) (vl-initiallist-elaborate-fn x.initials elabindex reclimit config)) (ok (and ok1 ok)) (warnings (append-without-guard warnings1 warnings)) ((mv ok1 warnings1 finals elabindex) (vl-finallist-elaborate-fn x.finals elabindex reclimit config)) (ok (and ok1 ok)) (warnings (append-without-guard warnings1 warnings)) ((mv ok1 warnings1 typedefs elabindex) (vl-typedeflist-elaborate-fn x.typedefs elabindex reclimit config)) (ok (and ok1 ok)) (warnings (append-without-guard warnings1 warnings)) ((mv ok1 warnings1 modports elabindex) (vl-modportlist-elaborate-fn x.modports elabindex reclimit config)) (ok (and ok1 ok)) (warnings (append-without-guard warnings1 warnings)) ((mv ok1 warnings1 assertions elabindex) (vl-assertionlist-elaborate-fn x.assertions elabindex reclimit config)) (ok (and ok1 ok)) (warnings (append-without-guard warnings1 warnings)) ((mv ok1 warnings1 cassertions elabindex) (vl-cassertionlist-elaborate-fn x.cassertions elabindex reclimit config)) (ok (and ok1 ok)) (warnings (append-without-guard warnings1 warnings)) ((mv ok1 warnings1 properties elabindex) (vl-propertylist-elaborate-fn x.properties elabindex reclimit config)) (ok (and ok1 ok)) (warnings (append-without-guard warnings1 warnings)) ((mv ok1 warnings1 sequences elabindex) (vl-sequencelist-elaborate-fn x.sequences elabindex reclimit config)) (ok (and ok1 ok)) (warnings (append-without-guard warnings1 warnings)) ((mv ok1 warnings1 clkdecls elabindex) (vl-clkdecllist-elaborate-fn x.clkdecls elabindex reclimit config)) (ok (and ok1 ok)) (warnings (append-without-guard warnings1 warnings)) ((mv ok1 warnings1 gclkdecls elabindex) (vl-gclkdecllist-elaborate-fn x.gclkdecls elabindex reclimit config)) (ok (and ok1 ok)) (warnings (append-without-guard warnings1 warnings)) ((mv ok1 warnings1 defaultdisables elabindex) (vl-defaultdisablelist-elaborate-fn x.defaultdisables elabindex reclimit config)) (ok (and ok1 ok)) (warnings (append-without-guard warnings1 warnings)) ((mv ok1 warnings1 dpiimports elabindex) (vl-dpiimportlist-elaborate-fn x.dpiimports elabindex reclimit config)) (ok (and ok1 ok)) (warnings (append-without-guard warnings1 warnings)) ((mv ok1 warnings1 binds elabindex) (vl-bindlist-elaborate-fn x.binds elabindex reclimit config)) (ok (and ok1 ok)) (warnings (append-without-guard warnings1 warnings)) ((mv ok1 warnings1 elabtasks elabindex) (vl-elabtasklist-elaborate-fn x.elabtasks elabindex reclimit config)) (ok (and ok1 ok)) (warnings (append-without-guard warnings1 warnings)) ((mv ok1 warnings1 letdecls elabindex) (vl-letdecllist-elaborate-fn x.letdecls elabindex reclimit config)) (ok (and ok1 ok)) (warnings (append-without-guard warnings1 warnings)) ((mv ok1 warnings1 generates elabindex) (vl-genelementlist-elaborate-fn x.generates elabindex reclimit config)) (ok (and ok1 ok)) (warnings (append-without-guard warnings1 warnings)) ((mv ok1 warnings1 ports elabindex) (vl-portlist-elaborate-fn x.ports elabindex reclimit config)) (ok (and ok1 ok)) (warnings (append-without-guard warnings1 warnings))) (mv ok warnings (change-vl-genblob x :portdecls portdecls :assigns assigns :aliases aliases :vardecls vardecls :paramdecls paramdecls :fundecls fundecls :taskdecls taskdecls :modinsts modinsts :gateinsts gateinsts :alwayses alwayses :initials initials :finals finals :typedefs typedefs :modports modports :assertions assertions :cassertions cassertions :properties properties :sequences sequences :clkdecls clkdecls :gclkdecls gclkdecls :defaultdisables defaultdisables :dpiimports dpiimports :binds binds :elabtasks elabtasks :letdecls letdecls :generates generates :ports ports) elabindex)))))
Theorem:
(defthm vl-warninglist-p-of-vl-genblob-elaborate.warnings (b* (((mv ?ok ?warnings ?new-x ?new-elabindex) (vl-genblob-elaborate-fn x elabindex reclimit config))) (vl-warninglist-p warnings)) :rule-classes :rewrite)
Theorem:
(defthm vl-genblob-p-of-vl-genblob-elaborate.new-x (b* (((mv ?ok ?warnings ?new-x ?new-elabindex) (vl-genblob-elaborate-fn x elabindex reclimit config))) (vl-genblob-p new-x)) :rule-classes :rewrite)
Theorem:
(defthm vl-genblob-elaborate-fn-of-vl-genblob-fix-x (equal (vl-genblob-elaborate-fn (vl-genblob-fix x) elabindex reclimit config) (vl-genblob-elaborate-fn x elabindex reclimit config)))
Theorem:
(defthm vl-genblob-elaborate-fn-vl-genblob-equiv-congruence-on-x (implies (vl-genblob-equiv x x-equiv) (equal (vl-genblob-elaborate-fn x elabindex reclimit config) (vl-genblob-elaborate-fn x-equiv elabindex reclimit config))) :rule-classes :congruence)
Theorem:
(defthm vl-genblob-elaborate-fn-of-nfix-reclimit (equal (vl-genblob-elaborate-fn x elabindex (nfix reclimit) config) (vl-genblob-elaborate-fn x elabindex reclimit config)))
Theorem:
(defthm vl-genblob-elaborate-fn-nat-equiv-congruence-on-reclimit (implies (acl2::nat-equiv reclimit reclimit-equiv) (equal (vl-genblob-elaborate-fn x elabindex reclimit config) (vl-genblob-elaborate-fn x elabindex reclimit-equiv config))) :rule-classes :congruence)
Theorem:
(defthm vl-genblob-elaborate-fn-of-vl-simpconfig-fix-config (equal (vl-genblob-elaborate-fn x elabindex reclimit (vl-simpconfig-fix config)) (vl-genblob-elaborate-fn x elabindex reclimit config)))
Theorem:
(defthm vl-genblob-elaborate-fn-vl-simpconfig-equiv-congruence-on-config (implies (vl-simpconfig-equiv config config-equiv) (equal (vl-genblob-elaborate-fn x elabindex reclimit config) (vl-genblob-elaborate-fn x elabindex reclimit config-equiv))) :rule-classes :congruence)