Get the kind (tag) of a op-funct structure.
(op-funct-kind x) → kind
Function:
(defun op-funct-kind$inline (x) (declare (xargs :guard (op-funct-p x))) (let ((__function__ 'op-funct-kind)) (declare (ignorable __function__)) (mbe :logic (cond ((or (atom x) (eq (car x) :add)) :add) ((eq (car x) :sub) :sub) ((eq (car x) :slt) :slt) ((eq (car x) :sltu) :sltu) ((eq (car x) :and) :and) ((eq (car x) :or) :or) ((eq (car x) :xor) :xor) ((eq (car x) :sll) :sll) ((eq (car x) :srl) :srl) ((eq (car x) :sra) :sra) ((eq (car x) :mul) :mul) ((eq (car x) :mulh) :mulh) ((eq (car x) :mulhu) :mulhu) ((eq (car x) :mulhsu) :mulhsu) ((eq (car x) :div) :div) ((eq (car x) :divu) :divu) ((eq (car x) :rem) :rem) (t :remu)) :exec (car x))))
Theorem:
(defthm op-funct-kind-possibilities (or (equal (op-funct-kind x) :add) (equal (op-funct-kind x) :sub) (equal (op-funct-kind x) :slt) (equal (op-funct-kind x) :sltu) (equal (op-funct-kind x) :and) (equal (op-funct-kind x) :or) (equal (op-funct-kind x) :xor) (equal (op-funct-kind x) :sll) (equal (op-funct-kind x) :srl) (equal (op-funct-kind x) :sra) (equal (op-funct-kind x) :mul) (equal (op-funct-kind x) :mulh) (equal (op-funct-kind x) :mulhu) (equal (op-funct-kind x) :mulhsu) (equal (op-funct-kind x) :div) (equal (op-funct-kind x) :divu) (equal (op-funct-kind x) :rem) (equal (op-funct-kind x) :remu)) :rule-classes ((:forward-chaining :trigger-terms ((op-funct-kind x)))))