(vl-edgesynth-classify-iftest condition edgetable) → (mv type guts)
Function:
(defun vl-edgesynth-classify-iftest (condition edgetable) (declare (xargs :guard (and (vl-expr-p condition) (vl-edgetable-p edgetable)))) (let ((__function__ 'vl-edgesynth-classify-iftest)) (declare (ignorable __function__)) (b* ((used-names (vl-expr-names condition)) ((unless (intersectp-equal used-names (alist-keys edgetable))) (mv :data condition)) ((unless (equal (len used-names) 1)) (mv :error condition))) (vl-edgesynth-classify-iftest-aux condition))))
Theorem:
(defthm vl-edgesynth-iftype-p-of-vl-edgesynth-classify-iftest.type (b* (((mv common-lisp::?type ?guts) (vl-edgesynth-classify-iftest condition edgetable))) (vl-edgesynth-iftype-p type)) :rule-classes :rewrite)
Theorem:
(defthm vl-expr-p-of-vl-edgesynth-classify-iftest.guts (implies (and (force (vl-expr-p condition)) (force (vl-edgetable-p edgetable))) (b* (((mv common-lisp::?type ?guts) (vl-edgesynth-classify-iftest condition edgetable))) (vl-expr-p guts))) :rule-classes :rewrite)
Theorem:
(defthm vl-idexpr-p-of-vl-edgesynth-classify-iftest (b* (((mv type guts) (vl-edgesynth-classify-iftest condition edgetable))) (implies (or (equal type :clock) (equal type :nclock)) (and (vl-idexpr-p guts) (equal (vl-expr->finalwidth guts) 1) (vl-expr->finaltype guts)))))
Theorem:
(defthm clock-found-when-vl-edgesynth-classify-iftest (b* (((mv type guts) (vl-edgesynth-classify-iftest condition edgetable))) (implies (and (vl-expr-p condition) (or (equal type :clock) (equal type :nclock))) (hons-assoc-equal (vl-idexpr->name guts) edgetable))))