(vl-modelement-immdeps x ans &key (ss 'ss)) → new-ans
Function:
(defun vl-modelement-immdeps-fn (x ans ss) (declare (xargs :guard (and (vl-modelement-p x) (vl-immdeps-p ans) (vl-scopestack-p ss)))) (let ((__function__ 'vl-modelement-immdeps)) (declare (ignorable __function__)) (b* ((x (vl-modelement-fix x)) (ans (vl-immdeps-fix ans)) (ss (vl-scopestack-fix ss))) (case (tag x) (:vl-interfaceport (vl-interfaceport-immdeps x ans)) (:vl-regularport (vl-regularport-immdeps x ans)) (:vl-portdecl (vl-portdecl-immdeps x ans)) (:vl-assign (vl-assign-immdeps x ans)) (:vl-alias (vl-alias-immdeps x ans)) (:vl-vardecl (vl-vardecl-immdeps x ans)) (:vl-paramdecl (vl-paramdecl-immdeps x ans)) (:vl-fundecl (vl-fundecl-immdeps x ans)) (:vl-taskdecl (vl-taskdecl-immdeps x ans)) (:vl-modinst (vl-modinst-immdeps x ans)) (:vl-gateinst (vl-gateinst-immdeps x ans)) (:vl-always (vl-always-immdeps x ans)) (:vl-initial (vl-initial-immdeps x ans)) (:vl-final (vl-final-immdeps x ans)) (:vl-typedef (vl-typedef-immdeps x ans)) (:vl-import (vl-import-immdeps x ans)) (:vl-fwdtypedef ans) (:vl-genvar ans) (:vl-property (vl-property-immdeps x ans)) (:vl-sequence (vl-sequence-immdeps x ans)) (:vl-clkdecl ans) (:vl-gclkdecl ans) (:vl-defaultdisable ans) (:vl-dpiimport ans) (:vl-dpiexport ans) (:vl-bind ans) (:vl-class ans) (:vl-covergroup ans) (:vl-elabtask ans) (:vl-assertion (vl-assertion-top-immdeps x ans)) (:vl-cassertion (vl-cassertion-top-immdeps x ans)) (:vl-letdecl ans) (otherwise (vl-modport-immdeps x ans))))))
Theorem:
(defthm vl-immdeps-p-of-vl-modelement-immdeps (b* ((new-ans (vl-modelement-immdeps-fn x ans ss))) (vl-immdeps-p new-ans)) :rule-classes :rewrite)
Theorem:
(defthm vl-modelement-immdeps-fn-of-vl-modelement-fix-x (equal (vl-modelement-immdeps-fn (vl-modelement-fix x) ans ss) (vl-modelement-immdeps-fn x ans ss)))
Theorem:
(defthm vl-modelement-immdeps-fn-vl-modelement-equiv-congruence-on-x (implies (vl-modelement-equiv x x-equiv) (equal (vl-modelement-immdeps-fn x ans ss) (vl-modelement-immdeps-fn x-equiv ans ss))) :rule-classes :congruence)
Theorem:
(defthm vl-modelement-immdeps-fn-of-vl-immdeps-fix-ans (equal (vl-modelement-immdeps-fn x (vl-immdeps-fix ans) ss) (vl-modelement-immdeps-fn x ans ss)))
Theorem:
(defthm vl-modelement-immdeps-fn-vl-immdeps-equiv-congruence-on-ans (implies (vl-immdeps-equiv ans ans-equiv) (equal (vl-modelement-immdeps-fn x ans ss) (vl-modelement-immdeps-fn x ans-equiv ss))) :rule-classes :congruence)
Theorem:
(defthm vl-modelement-immdeps-fn-of-vl-scopestack-fix-ss (equal (vl-modelement-immdeps-fn x ans (vl-scopestack-fix ss)) (vl-modelement-immdeps-fn x ans ss)))
Theorem:
(defthm vl-modelement-immdeps-fn-vl-scopestack-equiv-congruence-on-ss (implies (vl-scopestack-equiv ss ss-equiv) (equal (vl-modelement-immdeps-fn x ans ss) (vl-modelement-immdeps-fn x ans ss-equiv))) :rule-classes :congruence)