Return the kind of a pseudo-term input (a keyword symbol).
(pseudo-term-kind x) → kind
Function:
(defun pseudo-term-kind$inline (x) (declare (xargs :guard (pseudo-termp x))) (let ((__function__ 'pseudo-term-kind)) (declare (ignorable __function__)) (b* ((x (pseudo-term-fix x)) ((when (atom x)) (if x :var :null)) (fn (car x)) ((when (eq fn 'quote)) :quote) ((when (consp fn)) :lambda)) :fncall)))
Theorem:
(defthm symbolp-of-pseudo-term-kind (b* ((kind (pseudo-term-kind$inline x))) (symbolp kind)) :rule-classes :type-prescription)
Theorem:
(defthm pseudo-term-kind-possibilities (or (equal (pseudo-term-kind x) :null) (equal (pseudo-term-kind x) :var) (equal (pseudo-term-kind x) :quote) (equal (pseudo-term-kind x) :lambda) (equal (pseudo-term-kind x) :fncall)) :rule-classes ((:forward-chaining :trigger-terms ((pseudo-term-kind x)))))
Theorem:
(defthm pseudo-term-kind$inline-of-pseudo-term-fix-x (equal (pseudo-term-kind$inline (pseudo-term-fix x)) (pseudo-term-kind$inline x)))
Theorem:
(defthm pseudo-term-kind$inline-pseudo-term-equiv-congruence-on-x (implies (pseudo-term-equiv x x-equiv) (equal (pseudo-term-kind$inline x) (pseudo-term-kind$inline x-equiv))) :rule-classes :congruence)