Recognizer for unop structures.
(unopp x) → *
Function:
(defun unopp (x) (declare (xargs :guard t)) (and (consp x) (cond ((or (atom x) (eq (car x) :address)) (and (eq (cdr x) nil) (b* nil t))) ((eq (car x) :indir) (and (eq (cdr x) nil) (b* nil t))) ((eq (car x) :plus) (and (eq (cdr x) nil) (b* nil t))) ((eq (car x) :minus) (and (eq (cdr x) nil) (b* nil t))) ((eq (car x) :bitnot) (and (eq (cdr x) nil) (b* nil t))) ((eq (car x) :lognot) (and (eq (cdr x) nil) (b* nil t))) ((eq (car x) :preinc) (and (eq (cdr x) nil) (b* nil t))) ((eq (car x) :predec) (and (eq (cdr x) nil) (b* nil t))) ((eq (car x) :postinc) (and (eq (cdr x) nil) (b* nil t))) ((eq (car x) :postdec) (and (eq (cdr x) nil) (b* nil t))) ((eq (car x) :sizeof) (and (eq (cdr x) nil) (b* nil t))) ((eq (car x) :alignof) (and (b* ((uscores (cdr x))) (keyword-uscores-p uscores)))) ((eq (car x) :real) (and (eq (cdr x) nil) (b* nil t))) (t (and (eq (car x) :imag) (and (eq (cdr x) nil)) (b* nil t))))))
Theorem:
(defthm consp-when-unopp (implies (unopp x) (consp x)) :rule-classes :compound-recognizer)