See stypep.
Function:
(defun stypep (x) (declare (xargs :guard t)) (or (eq x ':pi) (eq x ':reg) (eq x ':po) (eq x ':nxst) (eq x ':and) (eq x ':xor) (eq x ':const)))
Theorem:
(defthm type-when-stypep (implies (stypep x) (if (symbolp x) (if (not (equal x 't)) (not (equal x 'nil)) 'nil) 'nil)) :rule-classes :compound-recognizer)
Theorem:
(defthm stypep-possibilities (implies (stypep x) (or (equal x ':pi) (equal x ':reg) (equal x ':po) (equal x ':nxst) (equal x ':and) (equal x ':xor) (equal x ':const))) :rule-classes :forward-chaining)
Function:
(defun stype-fix$inline (x) (declare (xargs :guard (stypep x))) (mbe :logic (if (stypep x) x ':const) :exec x))
Theorem:
(defthm return-type-of-stype-fix (stypep (stype-fix x)))
Theorem:
(defthm stype-fix-idempotent (implies (stypep x) (equal (stype-fix x) x)))
Function:
(defun stype-equiv$inline (x acl2::y) (declare (xargs :guard (and (stypep x) (stypep acl2::y)))) (equal (stype-fix x) (stype-fix acl2::y)))
Theorem:
(defthm stype-equiv-is-an-equivalence (and (booleanp (stype-equiv x y)) (stype-equiv x x) (implies (stype-equiv x y) (stype-equiv y x)) (implies (and (stype-equiv x y) (stype-equiv y z)) (stype-equiv x z))) :rule-classes (:equivalence))
Theorem:
(defthm stype-equiv-implies-equal-stype-fix-1 (implies (stype-equiv x x-equiv) (equal (stype-fix x) (stype-fix x-equiv))) :rule-classes (:congruence))
Theorem:
(defthm stype-fix-under-stype-equiv (stype-equiv (stype-fix x) x) :rule-classes (:rewrite :rewrite-quoted-constant))