(vl-importlist-find-explicit-item name x design) → (mv package item loc)
Function:
(defun vl-importlist-find-explicit-item (name x design) (declare (xargs :guard (and (stringp name) (vl-importlist-p x) (vl-maybe-design-p design)))) (let ((__function__ 'vl-importlist-find-explicit-item)) (declare (ignorable __function__)) (b* (((when (atom x)) (mv nil nil nil)) ((vl-import x1) (car x)) ((when (and (stringp x1.part) (equal x1.part (string-fix name)))) (b* ((package (and design (vl-design-scope-find-package x1.pkg design)))) (mv x1.pkg (and package (vl-package-scope-find-item name package)) x1.loc)))) (vl-importlist-find-explicit-item name (cdr x) design))))
Theorem:
(defthm return-type-of-vl-importlist-find-explicit-item.package (b* (((mv common-lisp::?package ?item ?loc) (vl-importlist-find-explicit-item name x design))) (iff (stringp package) package)) :rule-classes :rewrite)
Theorem:
(defthm return-type-of-vl-importlist-find-explicit-item.item (b* (((mv common-lisp::?package ?item ?loc) (vl-importlist-find-explicit-item name x design))) (iff (vl-scopeitem-p item) item)) :rule-classes :rewrite)
Theorem:
(defthm return-type-of-vl-importlist-find-explicit-item.loc (b* (((mv common-lisp::?package ?item ?loc) (vl-importlist-find-explicit-item name x design))) (iff (vl-location-p loc) loc)) :rule-classes :rewrite)
Theorem:
(defthm maybe-string-type-of-vl-importlist-find-explicit-item-package (b* (((mv common-lisp::?package ?item ?loc) (vl-importlist-find-explicit-item name x design))) (or (stringp package) (not package))) :rule-classes :type-prescription)
Theorem:
(defthm package-when-item-of-vl-importlist-find-explicit-item-package (b* (((mv common-lisp::?package ?item ?loc) (vl-importlist-find-explicit-item name x design))) (implies item package)) :rule-classes :rewrite)
Theorem:
(defthm loc-when-item-of-vl-importlist-find-explicit-item-package (b* (((mv common-lisp::?package ?item ?loc) (vl-importlist-find-explicit-item name x design))) (implies package loc)) :rule-classes :rewrite)
Theorem:
(defthm vl-importlist-find-explicit-item-of-str-fix-name (equal (vl-importlist-find-explicit-item (str-fix name) x design) (vl-importlist-find-explicit-item name x design)))
Theorem:
(defthm vl-importlist-find-explicit-item-streqv-congruence-on-name (implies (streqv name name-equiv) (equal (vl-importlist-find-explicit-item name x design) (vl-importlist-find-explicit-item name-equiv x design))) :rule-classes :congruence)
Theorem:
(defthm vl-importlist-find-explicit-item-of-vl-importlist-fix-x (equal (vl-importlist-find-explicit-item name (vl-importlist-fix x) design) (vl-importlist-find-explicit-item name x design)))
Theorem:
(defthm vl-importlist-find-explicit-item-vl-importlist-equiv-congruence-on-x (implies (vl-importlist-equiv x x-equiv) (equal (vl-importlist-find-explicit-item name x design) (vl-importlist-find-explicit-item name x-equiv design))) :rule-classes :congruence)
Theorem:
(defthm vl-importlist-find-explicit-item-of-vl-maybe-design-fix-design (equal (vl-importlist-find-explicit-item name x (vl-maybe-design-fix design)) (vl-importlist-find-explicit-item name x design)))
Theorem:
(defthm vl-importlist-find-explicit-item-vl-maybe-design-equiv-congruence-on-design (implies (vl-maybe-design-equiv design design-equiv) (equal (vl-importlist-find-explicit-item name x design) (vl-importlist-find-explicit-item name x design-equiv))) :rule-classes :congruence)