Supported statements: if statements, block statements, null statements, non-blocking assignments to whole identifiers.
(vl-edgesynth-stmt-p x) → *
Theorem:
(defthm vl-edgesynth-stmtlist-p-of-cons (equal (vl-edgesynth-stmtlist-p (cons acl2::a acl2::x)) (and (vl-edgesynth-stmt-p acl2::a) (vl-edgesynth-stmtlist-p acl2::x))) :rule-classes ((:rewrite)))
Theorem:
(defthm vl-edgesynth-stmtlist-p-of-cdr-when-vl-edgesynth-stmtlist-p (implies (vl-edgesynth-stmtlist-p (double-rewrite acl2::x)) (vl-edgesynth-stmtlist-p (cdr acl2::x))) :rule-classes ((:rewrite)))
Theorem:
(defthm vl-edgesynth-stmtlist-p-when-not-consp (implies (not (consp acl2::x)) (equal (vl-edgesynth-stmtlist-p acl2::x) (not acl2::x))) :rule-classes ((:rewrite)))
Theorem:
(defthm vl-edgesynth-stmt-p-of-car-when-vl-edgesynth-stmtlist-p (implies (vl-edgesynth-stmtlist-p acl2::x) (iff (vl-edgesynth-stmt-p (car acl2::x)) (or (consp acl2::x) (vl-edgesynth-stmt-p nil)))) :rule-classes ((:rewrite)))
Theorem:
(defthm true-listp-when-vl-edgesynth-stmtlist-p-compound-recognizer (implies (vl-edgesynth-stmtlist-p acl2::x) (true-listp acl2::x)) :rule-classes :compound-recognizer)
Theorem:
(defthm vl-edgesynth-stmtlist-p-of-list-fix (implies (vl-edgesynth-stmtlist-p acl2::x) (vl-edgesynth-stmtlist-p (list-fix acl2::x))) :rule-classes ((:rewrite)))
Theorem:
(defthm vl-edgesynth-stmtlist-p-of-sfix (iff (vl-edgesynth-stmtlist-p (sfix acl2::x)) (or (vl-edgesynth-stmtlist-p acl2::x) (not (setp acl2::x)))) :rule-classes ((:rewrite)))
Theorem:
(defthm vl-edgesynth-stmtlist-p-of-insert (iff (vl-edgesynth-stmtlist-p (insert acl2::a acl2::x)) (and (vl-edgesynth-stmtlist-p (sfix acl2::x)) (vl-edgesynth-stmt-p acl2::a))) :rule-classes ((:rewrite)))
Theorem:
(defthm vl-edgesynth-stmtlist-p-of-delete (implies (vl-edgesynth-stmtlist-p acl2::x) (vl-edgesynth-stmtlist-p (delete acl2::k acl2::x))) :rule-classes ((:rewrite)))
Theorem:
(defthm vl-edgesynth-stmtlist-p-of-mergesort (iff (vl-edgesynth-stmtlist-p (mergesort acl2::x)) (vl-edgesynth-stmtlist-p (list-fix acl2::x))) :rule-classes ((:rewrite)))
Theorem:
(defthm vl-edgesynth-stmtlist-p-of-union (iff (vl-edgesynth-stmtlist-p (union acl2::x acl2::y)) (and (vl-edgesynth-stmtlist-p (sfix acl2::x)) (vl-edgesynth-stmtlist-p (sfix acl2::y)))) :rule-classes ((:rewrite)))
Theorem:
(defthm vl-edgesynth-stmtlist-p-of-intersect-1 (implies (vl-edgesynth-stmtlist-p acl2::x) (vl-edgesynth-stmtlist-p (intersect acl2::x acl2::y))) :rule-classes ((:rewrite)))
Theorem:
(defthm vl-edgesynth-stmtlist-p-of-intersect-2 (implies (vl-edgesynth-stmtlist-p acl2::y) (vl-edgesynth-stmtlist-p (intersect acl2::x acl2::y))) :rule-classes ((:rewrite)))
Theorem:
(defthm vl-edgesynth-stmtlist-p-of-difference (implies (vl-edgesynth-stmtlist-p acl2::x) (vl-edgesynth-stmtlist-p (difference acl2::x acl2::y))) :rule-classes ((:rewrite)))
Theorem:
(defthm vl-edgesynth-stmtlist-p-of-duplicated-members (implies (vl-edgesynth-stmtlist-p acl2::x) (vl-edgesynth-stmtlist-p (duplicated-members acl2::x))) :rule-classes ((:rewrite)))
Theorem:
(defthm vl-edgesynth-stmtlist-p-of-rev (equal (vl-edgesynth-stmtlist-p (rev acl2::x)) (vl-edgesynth-stmtlist-p (list-fix acl2::x))) :rule-classes ((:rewrite)))
Theorem:
(defthm vl-edgesynth-stmtlist-p-of-append (equal (vl-edgesynth-stmtlist-p (append acl2::a acl2::b)) (and (vl-edgesynth-stmtlist-p (list-fix acl2::a)) (vl-edgesynth-stmtlist-p acl2::b))) :rule-classes ((:rewrite)))
Theorem:
(defthm vl-edgesynth-stmtlist-p-of-rcons (iff (vl-edgesynth-stmtlist-p (acl2::rcons acl2::a acl2::x)) (and (vl-edgesynth-stmt-p acl2::a) (vl-edgesynth-stmtlist-p (list-fix acl2::x)))) :rule-classes ((:rewrite)))
Theorem:
(defthm vl-edgesynth-stmt-p-when-member-equal-of-vl-edgesynth-stmtlist-p (and (implies (and (member-equal acl2::a acl2::x) (vl-edgesynth-stmtlist-p acl2::x)) (vl-edgesynth-stmt-p acl2::a)) (implies (and (vl-edgesynth-stmtlist-p acl2::x) (member-equal acl2::a acl2::x)) (vl-edgesynth-stmt-p acl2::a))) :rule-classes ((:rewrite)))
Theorem:
(defthm vl-edgesynth-stmtlist-p-when-subsetp-equal (and (implies (and (subsetp-equal acl2::x acl2::y) (vl-edgesynth-stmtlist-p acl2::y)) (equal (vl-edgesynth-stmtlist-p acl2::x) (true-listp acl2::x))) (implies (and (vl-edgesynth-stmtlist-p acl2::y) (subsetp-equal acl2::x acl2::y)) (equal (vl-edgesynth-stmtlist-p acl2::x) (true-listp acl2::x)))) :rule-classes ((:rewrite)))
Theorem:
(defthm vl-edgesynth-stmtlist-p-of-set-difference-equal (implies (vl-edgesynth-stmtlist-p acl2::x) (vl-edgesynth-stmtlist-p (set-difference-equal acl2::x acl2::y))) :rule-classes ((:rewrite)))
Theorem:
(defthm vl-edgesynth-stmtlist-p-of-intersection-equal-1 (implies (vl-edgesynth-stmtlist-p (double-rewrite acl2::x)) (vl-edgesynth-stmtlist-p (intersection-equal acl2::x acl2::y))) :rule-classes ((:rewrite)))
Theorem:
(defthm vl-edgesynth-stmtlist-p-of-intersection-equal-2 (implies (vl-edgesynth-stmtlist-p (double-rewrite acl2::y)) (vl-edgesynth-stmtlist-p (intersection-equal acl2::x acl2::y))) :rule-classes ((:rewrite)))
Theorem:
(defthm vl-edgesynth-stmtlist-p-of-union-equal (equal (vl-edgesynth-stmtlist-p (union-equal acl2::x acl2::y)) (and (vl-edgesynth-stmtlist-p (list-fix acl2::x)) (vl-edgesynth-stmtlist-p (double-rewrite acl2::y)))) :rule-classes ((:rewrite)))
Theorem:
(defthm vl-edgesynth-stmtlist-p-of-take (implies (vl-edgesynth-stmtlist-p (double-rewrite acl2::x)) (iff (vl-edgesynth-stmtlist-p (take acl2::n acl2::x)) (or (vl-edgesynth-stmt-p nil) (<= (nfix acl2::n) (len acl2::x))))) :rule-classes ((:rewrite)))
Theorem:
(defthm vl-edgesynth-stmtlist-p-of-repeat (iff (vl-edgesynth-stmtlist-p (repeat acl2::n acl2::x)) (or (vl-edgesynth-stmt-p acl2::x) (zp acl2::n))) :rule-classes ((:rewrite)))
Theorem:
(defthm vl-edgesynth-stmt-p-of-nth-when-vl-edgesynth-stmtlist-p (implies (and (vl-edgesynth-stmtlist-p acl2::x) (< (nfix acl2::n) (len acl2::x))) (vl-edgesynth-stmt-p (nth acl2::n acl2::x))) :rule-classes ((:rewrite)))
Theorem:
(defthm vl-edgesynth-stmtlist-p-of-update-nth (implies (vl-edgesynth-stmtlist-p (double-rewrite acl2::x)) (iff (vl-edgesynth-stmtlist-p (update-nth acl2::n acl2::y acl2::x)) (and (vl-edgesynth-stmt-p acl2::y) (or (<= (nfix acl2::n) (len acl2::x)) (vl-edgesynth-stmt-p nil))))) :rule-classes ((:rewrite)))
Theorem:
(defthm vl-edgesynth-stmtlist-p-of-butlast (implies (vl-edgesynth-stmtlist-p (double-rewrite acl2::x)) (vl-edgesynth-stmtlist-p (butlast acl2::x acl2::n))) :rule-classes ((:rewrite)))
Theorem:
(defthm vl-edgesynth-stmtlist-p-of-nthcdr (implies (vl-edgesynth-stmtlist-p (double-rewrite acl2::x)) (vl-edgesynth-stmtlist-p (nthcdr acl2::n acl2::x))) :rule-classes ((:rewrite)))
Theorem:
(defthm vl-edgesynth-stmtlist-p-of-last (implies (vl-edgesynth-stmtlist-p (double-rewrite acl2::x)) (vl-edgesynth-stmtlist-p (last acl2::x))) :rule-classes ((:rewrite)))
Theorem:
(defthm vl-edgesynth-stmtlist-p-of-remove (implies (vl-edgesynth-stmtlist-p acl2::x) (vl-edgesynth-stmtlist-p (remove acl2::a acl2::x))) :rule-classes ((:rewrite)))
Theorem:
(defthm vl-edgesynth-stmtlist-p-of-revappend (equal (vl-edgesynth-stmtlist-p (revappend acl2::x acl2::y)) (and (vl-edgesynth-stmtlist-p (list-fix acl2::x)) (vl-edgesynth-stmtlist-p acl2::y))) :rule-classes ((:rewrite)))
Theorem:
(defthm vl-stmt-p-when-vl-edgesynth-stmt-p (implies (vl-edgesynth-stmt-p x) (vl-stmt-p x)))
Theorem:
(defthm vl-stmtlist-p-when-vl-edgesynth-stmtlist-p (implies (vl-edgesynth-stmtlist-p x) (vl-stmtlist-p x)))
Theorem:
(defthm vl-edgesynth-stmt-p-of-make-vl-assignstmt (implies (and (force (equal type :vl-nonblocking)) (force (vl-idexpr-p lvalue)) (force (vl-expr->finaltype lvalue)) (force (posp (vl-expr->finalwidth lvalue))) (force (vl-expr-p expr)) (force (vl-maybe-delayoreventcontrol-p ctrl)) (force (vl-atts-p atts)) (force (vl-location-p loc))) (vl-edgesynth-stmt-p (make-vl-assignstmt :type type :lvalue lvalue :expr expr :ctrl ctrl :atts atts :loc loc))))
Theorem:
(defthm vl-assignstmt->type-when-vl-edgesynth-stmt-p (implies (and (vl-assignstmt-p x) (vl-edgesynth-stmt-p x)) (equal (vl-assignstmt->type x) :vl-nonblocking)))
Theorem:
(defthm vl-idexpr-p-of-vl-assignstmt->lvalue-when-vl-edgesynth-stmt-p (implies (and (vl-assignstmt-p x) (vl-edgesynth-stmt-p x)) (and (vl-idexpr-p (vl-assignstmt->lvalue x)) (posp (vl-expr->finalwidth (vl-assignstmt->lvalue x))) (vl-expr->finaltype (vl-assignstmt->lvalue x)))))
Theorem:
(defthm vl-edgesynth-stmt-p-of-vl-ifstmt (implies (and (vl-edgesynth-stmt-p truebranch) (vl-edgesynth-stmt-p falsebranch) (force (vl-expr-p condition)) (force (vl-atts-p atts))) (vl-edgesynth-stmt-p (make-vl-ifstmt :condition condition :truebranch truebranch :falsebranch falsebranch :atts atts))))
Theorem:
(defthm vl-edgesynth-stmt-p-of-vl-ifstmt->truebranch (implies (and (vl-edgesynth-stmt-p x) (force (vl-ifstmt-p x))) (vl-edgesynth-stmt-p (vl-ifstmt->truebranch x))))
Theorem:
(defthm vl-edgesynth-stmt-p-of-vl-ifstmt->falsebranch (implies (and (vl-edgesynth-stmt-p x) (force (vl-ifstmt-p x))) (vl-edgesynth-stmt-p (vl-ifstmt->falsebranch x))))
Theorem:
(defthm vl-edgesynth-stmt-p-of-vl-blockstmt (implies (and (vl-edgesynth-stmtlist-p stmts) (force (equal sequentialp t)) (force (not name)) (force (not vardecls)) (force (not paramdecls)) (force (not imports)) (force (vl-atts-p atts))) (vl-edgesynth-stmt-p (make-vl-blockstmt :sequentialp sequentialp :name name :vardecls vardecls :paramdecls paramdecls :imports imports :loaditems loaditems :stmts stmts :atts atts))))
Theorem:
(defthm vl-blockstmt->sequentialp-when-vl-edgesynth-stmt-p (implies (and (vl-edgesynth-stmt-p x) (force (vl-blockstmt-p x))) (equal (vl-blockstmt->sequentialp x) t)))
Theorem:
(defthm vl-blockstmt->name-when-vl-edgesynth-stmt-p (implies (and (vl-edgesynth-stmt-p x) (force (vl-blockstmt-p x))) (equal (vl-blockstmt->name x) nil)))
Theorem:
(defthm vl-blockstmt->decls-when-vl-edgesynth-stmt-p (implies (and (vl-edgesynth-stmt-p x) (force (vl-blockstmt-p x))) (and (equal (vl-blockstmt->vardecls x) nil) (equal (vl-blockstmt->paramdecls x) nil) (equal (vl-blockstmt->imports x) nil))))
Theorem:
(defthm vl-edgesynth-stmtlist-p-of-vl-blockstmt->stmts (implies (and (vl-edgesynth-stmt-p x) (force (vl-blockstmt-p x))) (vl-edgesynth-stmtlist-p (vl-blockstmt->stmts x))))
Theorem:
(defthm atomic-cases-for-vl-edgesynth-stmt-p (implies (and (vl-edgesynth-stmt-p x) (vl-atomicstmt-p x)) (or (eq (vl-stmt-kind x) :vl-assignstmt) (eq (vl-stmt-kind x) :vl-nullstmt))) :rule-classes :forward-chaining)