Get the kind (tag) of a vl-propexpr structure.
(vl-propexpr-kind x) → kind
Function:
(defun vl-propexpr-kind$inline (x) (declare (xargs :guard (vl-propexpr-p x))) (let ((__function__ 'vl-propexpr-kind)) (declare (ignorable __function__)) (mbe :logic (cond ((or (atom x) (eq (car x) :vl-propcore)) :vl-propcore) ((eq (car x) :vl-propinst) :vl-propinst) ((eq (car x) :vl-propthen) :vl-propthen) ((eq (car x) :vl-proprepeat) :vl-proprepeat) ((eq (car x) :vl-propassign) :vl-propassign) ((eq (car x) :vl-propthroughout) :vl-propthroughout) ((eq (car x) :vl-propclock) :vl-propclock) ((eq (car x) :vl-propunary) :vl-propunary) ((eq (car x) :vl-propbinary) :vl-propbinary) ((eq (car x) :vl-propalways) :vl-propalways) ((eq (car x) :vl-propeventually) :vl-propeventually) ((eq (car x) :vl-propaccept) :vl-propaccept) ((eq (car x) :vl-propnexttime) :vl-propnexttime) ((eq (car x) :vl-propif) :vl-propif) (t :vl-propcase)) :exec (car x))))
Theorem:
(defthm vl-propexpr-kind-possibilities (or (equal (vl-propexpr-kind x) :vl-propcore) (equal (vl-propexpr-kind x) :vl-propinst) (equal (vl-propexpr-kind x) :vl-propthen) (equal (vl-propexpr-kind x) :vl-proprepeat) (equal (vl-propexpr-kind x) :vl-propassign) (equal (vl-propexpr-kind x) :vl-propthroughout) (equal (vl-propexpr-kind x) :vl-propclock) (equal (vl-propexpr-kind x) :vl-propunary) (equal (vl-propexpr-kind x) :vl-propbinary) (equal (vl-propexpr-kind x) :vl-propalways) (equal (vl-propexpr-kind x) :vl-propeventually) (equal (vl-propexpr-kind x) :vl-propaccept) (equal (vl-propexpr-kind x) :vl-propnexttime) (equal (vl-propexpr-kind x) :vl-propif) (equal (vl-propexpr-kind x) :vl-propcase)) :rule-classes ((:forward-chaining :trigger-terms ((vl-propexpr-kind x)))))