Recognize symbols that denote the kinds of second-order functions supported by SOFT.
(sofun-kindp kind) → yes/no
Following the terminology used in the Workshop paper, in the implementation we use:
Function:
(defun sofun-kindp (kind) (declare (xargs :guard t)) (let ((__function__ 'sofun-kindp)) (declare (ignorable __function__)) (or (eq kind 'plain) (eq kind 'choice) (eq kind 'quant))))
Theorem:
(defthm booleanp-of-sofun-kindp (b* ((yes/no (sofun-kindp kind))) (booleanp yes/no)) :rule-classes :rewrite)