Default heuristic for filtering extension warnings.
(vl-classify-extension-warning-default lhs-size x-selfsize x ss ctx) → *
We found that extension warnings were frequently triggered by
things like
Another kind of extension warning that is stupidly minor is when we just
have assignments like
Function:
(defun vl-classify-extension-warning-default (lhs-size x-selfsize x ss ctx) (declare (xargs :guard (and (natp lhs-size) (natp x-selfsize) (vl-expr-p x) (vl-scopestack-p ss) (vl-context-p ctx)))) (declare (ignorable lhs-size x-selfsize ss ctx)) (declare (xargs :guard (> lhs-size x-selfsize))) (let ((__function__ 'vl-classify-extension-warning-default)) (declare (ignorable __function__)) (b* ((x (vl-expr-fix x)) ((when (and (vl-fast-atom-p x) (or (vl-extint-p (vl-atom->guts x)) (and (vl-constint-p (vl-atom->guts x)) (vl-constint->wasunsized (vl-atom->guts x)))))) nil) (ops (vl-expr-ops x)) (minorp (and (or (member-equal :vl-binary-plus ops) (member-equal :vl-binary-minus ops)) (subsetp-equal ops '(:vl-binary-plus :vl-binary-minus :vl-partselect-colon :vl-bitselect))))) (if minorp :vl-warn-extension-minor :vl-warn-extension))))
Theorem:
(defthm vl-classify-extension-warning-default-of-nfix-lhs-size (equal (vl-classify-extension-warning-default (nfix lhs-size) x-selfsize x ss ctx) (vl-classify-extension-warning-default lhs-size x-selfsize x ss ctx)))
Theorem:
(defthm vl-classify-extension-warning-default-nat-equiv-congruence-on-lhs-size (implies (acl2::nat-equiv lhs-size lhs-size-equiv) (equal (vl-classify-extension-warning-default lhs-size x-selfsize x ss ctx) (vl-classify-extension-warning-default lhs-size-equiv x-selfsize x ss ctx))) :rule-classes :congruence)
Theorem:
(defthm vl-classify-extension-warning-default-of-nfix-x-selfsize (equal (vl-classify-extension-warning-default lhs-size (nfix x-selfsize) x ss ctx) (vl-classify-extension-warning-default lhs-size x-selfsize x ss ctx)))
Theorem:
(defthm vl-classify-extension-warning-default-nat-equiv-congruence-on-x-selfsize (implies (acl2::nat-equiv x-selfsize x-selfsize-equiv) (equal (vl-classify-extension-warning-default lhs-size x-selfsize x ss ctx) (vl-classify-extension-warning-default lhs-size x-selfsize-equiv x ss ctx))) :rule-classes :congruence)
Theorem:
(defthm vl-classify-extension-warning-default-of-vl-expr-fix-x (equal (vl-classify-extension-warning-default lhs-size x-selfsize (vl-expr-fix x) ss ctx) (vl-classify-extension-warning-default lhs-size x-selfsize x ss ctx)))
Theorem:
(defthm vl-classify-extension-warning-default-vl-expr-equiv-congruence-on-x (implies (vl-expr-equiv x x-equiv) (equal (vl-classify-extension-warning-default lhs-size x-selfsize x ss ctx) (vl-classify-extension-warning-default lhs-size x-selfsize x-equiv ss ctx))) :rule-classes :congruence)
Theorem:
(defthm vl-classify-extension-warning-default-of-vl-scopestack-fix-ss (equal (vl-classify-extension-warning-default lhs-size x-selfsize x (vl-scopestack-fix ss) ctx) (vl-classify-extension-warning-default lhs-size x-selfsize x ss ctx)))
Theorem:
(defthm vl-classify-extension-warning-default-vl-scopestack-equiv-congruence-on-ss (implies (vl-scopestack-equiv ss ss-equiv) (equal (vl-classify-extension-warning-default lhs-size x-selfsize x ss ctx) (vl-classify-extension-warning-default lhs-size x-selfsize x ss-equiv ctx))) :rule-classes :congruence)
Theorem:
(defthm vl-classify-extension-warning-default-of-vl-context-fix-ctx (equal (vl-classify-extension-warning-default lhs-size x-selfsize x ss (vl-context-fix ctx)) (vl-classify-extension-warning-default lhs-size x-selfsize x ss ctx)))
Theorem:
(defthm vl-classify-extension-warning-default-vl-context-equiv-congruence-on-ctx (implies (vl-context-equiv ctx ctx-equiv) (equal (vl-classify-extension-warning-default lhs-size x-selfsize x ss ctx) (vl-classify-extension-warning-default lhs-size x-selfsize x ss ctx-equiv))) :rule-classes :congruence)