(vl-elabscopes-item-info name scopes &key (allow-empty 'nil)) → info
Function:
(defun vl-elabscopes-item-info-fn (name scopes allow-empty) (declare (xargs :guard (and (stringp name) (vl-elabscopes-p scopes)))) (let ((__function__ 'vl-elabscopes-item-info)) (declare (ignorable __function__)) (b* ((scopes (vl-elabscopes-fix scopes)) ((when (consp scopes)) (vl-elabscope-item-info name (cdar scopes)))) (and (not allow-empty) (raise "Can't get root scope of empty elabscopes")))))
Theorem:
(defthm return-type-of-vl-elabscopes-item-info (b* ((info (vl-elabscopes-item-info-fn name scopes allow-empty))) (and (iff (vl-scopeitem-p info) info) (vl-maybe-scopeitem-p info))) :rule-classes :rewrite)
Theorem:
(defthm vl-elabscopes-item-info-fn-of-str-fix-name (equal (vl-elabscopes-item-info-fn (str-fix name) scopes allow-empty) (vl-elabscopes-item-info-fn name scopes allow-empty)))
Theorem:
(defthm vl-elabscopes-item-info-fn-streqv-congruence-on-name (implies (streqv name name-equiv) (equal (vl-elabscopes-item-info-fn name scopes allow-empty) (vl-elabscopes-item-info-fn name-equiv scopes allow-empty))) :rule-classes :congruence)
Theorem:
(defthm vl-elabscopes-item-info-fn-of-vl-elabscopes-fix-scopes (equal (vl-elabscopes-item-info-fn name (vl-elabscopes-fix scopes) allow-empty) (vl-elabscopes-item-info-fn name scopes allow-empty)))
Theorem:
(defthm vl-elabscopes-item-info-fn-vl-elabscopes-equiv-congruence-on-scopes (implies (vl-elabscopes-equiv scopes scopes-equiv) (equal (vl-elabscopes-item-info-fn name scopes allow-empty) (vl-elabscopes-item-info-fn name scopes-equiv allow-empty))) :rule-classes :congruence)