Check if a preprocessing lexeme is a token or a (single) space.
This is used to represent, and facilitate comparison of, replacement lists of macros, as explained in more detail elsewhere.
Function:
(defun plexeme-token/space-p (lexeme) (declare (xargs :guard (plexemep lexeme))) (or (plexeme-tokenp lexeme) (and (plexeme-case lexeme :spaces) (equal (plexeme-spaces->count lexeme) 1))))
Theorem:
(defthm booleanp-of-plexeme-token/space-p (b* ((yes/no (plexeme-token/space-p lexeme))) (booleanp yes/no)) :rule-classes :rewrite)
Theorem:
(defthm plexeme-token/space-p-of-plexeme-fix-lexeme (equal (plexeme-token/space-p (plexeme-fix lexeme)) (plexeme-token/space-p lexeme)))
Theorem:
(defthm plexeme-token/space-p-plexeme-equiv-congruence-on-lexeme (implies (plexeme-equiv lexeme lexeme-equiv) (equal (plexeme-token/space-p lexeme) (plexeme-token/space-p lexeme-equiv))) :rule-classes :congruence)