Recognizer for constrel-set.
(constrel-setp x) → *
Function:
(defun constrel-setp (x) (declare (xargs :guard t)) (if (atom x) (null x) (and (constrelp (car x)) (or (null (cdr x)) (and (consp (cdr x)) (acl2::fast-<< (car x) (cadr x)) (constrel-setp (cdr x)))))))
Theorem:
(defthm booleanp-ofconstrel-setp (booleanp (constrel-setp x)))
Theorem:
(defthm setp-when-constrel-setp (implies (constrel-setp x) (setp x)) :rule-classes (:rewrite))
Theorem:
(defthm constrelp-of-head-when-constrel-setp (implies (constrel-setp x) (equal (constrelp (head x)) (not (emptyp x)))))
Theorem:
(defthm constrel-setp-of-tail-when-constrel-setp (implies (constrel-setp x) (constrel-setp (tail x))))
Theorem:
(defthm constrel-setp-of-insert (equal (constrel-setp (insert a x)) (and (constrelp a) (constrel-setp (sfix x)))))
Theorem:
(defthm constrelp-when-in-constrel-setp-binds-free-x (implies (and (in a x) (constrel-setp x)) (constrelp a)))
Theorem:
(defthm not-in-constrel-setp-when-not-constrelp (implies (and (constrel-setp x) (not (constrelp a))) (not (in a x))))
Theorem:
(defthm constrel-setp-of-union (equal (constrel-setp (union x y)) (and (constrel-setp (sfix x)) (constrel-setp (sfix y)))))
Theorem:
(defthm constrel-setp-of-intersect (implies (and (constrel-setp x) (constrel-setp y)) (constrel-setp (intersect x y))))
Theorem:
(defthm constrel-setp-of-difference (implies (constrel-setp x) (constrel-setp (difference x y))))
Theorem:
(defthm constrel-setp-of-delete (implies (constrel-setp x) (constrel-setp (delete a x))))