Get the kind (tag) of a value structure.
(value-kind x) → kind
Function:
(defun value-kind$inline (x) (declare (xargs :guard (valuep x))) (let ((__function__ 'value-kind)) (declare (ignorable __function__)) (mbe :logic (cond ((or (atom x) (eq (car x) :bool)) :bool) ((eq (car x) :u8) :u8) ((eq (car x) :u16) :u16) ((eq (car x) :u32) :u32) ((eq (car x) :u64) :u64) ((eq (car x) :u128) :u128) ((eq (car x) :i8) :i8) ((eq (car x) :i16) :i16) ((eq (car x) :i32) :i32) ((eq (car x) :i64) :i64) ((eq (car x) :i128) :i128) ((eq (car x) :field) :field) ((eq (car x) :group) :group) ((eq (car x) :scalar) :scalar) ((eq (car x) :address) :address) ((eq (car x) :string) :string) ((eq (car x) :tuple) :tuple) (t :struct)) :exec (car x))))
Theorem:
(defthm value-kind-possibilities (or (equal (value-kind x) :bool) (equal (value-kind x) :u8) (equal (value-kind x) :u16) (equal (value-kind x) :u32) (equal (value-kind x) :u64) (equal (value-kind x) :u128) (equal (value-kind x) :i8) (equal (value-kind x) :i16) (equal (value-kind x) :i32) (equal (value-kind x) :i64) (equal (value-kind x) :i128) (equal (value-kind x) :field) (equal (value-kind x) :group) (equal (value-kind x) :scalar) (equal (value-kind x) :address) (equal (value-kind x) :string) (equal (value-kind x) :tuple) (equal (value-kind x) :struct)) :rule-classes ((:forward-chaining :trigger-terms ((value-kind x)))))