We say a vl-evatom-p is plain when it has no
(vl-evatom-plain-p x) → plainp
Typically an
Function:
(defun vl-evatom-plain-p (x) (declare (xargs :guard (vl-evatom-p x))) (let ((__function__ 'vl-evatom-plain-p)) (declare (ignorable __function__)) (b* (((vl-evatom x) x)) (and (eq x.type :vl-noedge) (vl-idexpr-p x.expr)))))
Theorem:
(defthm vl-evatom->type-when-vl-evatom-plain-p (implies (vl-evatom-plain-p x) (equal (vl-evatom->type x) :vl-noedge)))
Theorem:
(defthm vl-idexpr-p-of-vl-evatom->expr-when-vl-evatom-plain-p (implies (vl-evatom-plain-p x) (vl-idexpr-p (vl-evatom->expr x))))
Theorem:
(defthm vl-evatom-plain-p-of-vl-evatom-fix-x (equal (vl-evatom-plain-p (vl-evatom-fix x)) (vl-evatom-plain-p x)))
Theorem:
(defthm vl-evatom-plain-p-vl-evatom-equiv-congruence-on-x (implies (vl-evatom-equiv x x-equiv) (equal (vl-evatom-plain-p x) (vl-evatom-plain-p x-equiv))) :rule-classes :congruence)