Check if a Java Unicode character can be non-starting part of identifiers.
This puts together ascii-identifier-part-p and nonascii-identifier-part-p.
Function:
(defun identifier-part-p (char) (declare (xargs :guard (unicodep char))) (let ((__function__ 'identifier-part-p)) (declare (ignorable __function__)) (b* ((char (mbe :logic (unicode-fix char) :exec char))) (cond ((asciip char) (ascii-identifier-part-p char)) (t (nonascii-identifier-part-p char))))))
Theorem:
(defthm booleanp-of-identifier-part-p (b* ((yes/no (identifier-part-p char))) (booleanp yes/no)) :rule-classes :rewrite)
Theorem:
(defthm identifier-part-p-of-unicode-fix-char (equal (identifier-part-p (unicode-fix char)) (identifier-part-p char)))
Theorem:
(defthm identifier-part-p-unicode-equiv-congruence-on-char (implies (unicode-equiv char char-equiv) (equal (identifier-part-p char) (identifier-part-p char-equiv))) :rule-classes :congruence)