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