Abstract a
(abs-unicode-character-escape tree) → char
Function:
(defun abs-unicode-character-escape (tree) (declare (xargs :guard (abnf::treep tree))) (let ((__function__ 'abs-unicode-character-escape)) (declare (ignorable __function__)) (b* (((okf (abnf::tree-list-tuple3 sub)) (abnf::check-tree-nonleaf-3 tree "unicode-character-escape")) ((okf u-tree) (abnf::check-tree-list-1 sub.1st)) ((okf &) (abnf::check-tree-schars u-tree "\\u{")) ((unless (and (<= 1 (len sub.2nd)) (<= (len sub.2nd) 6))) (reserrf (list :found-hex-digits (len sub.2nd)))) ((okf nat) (abs-*-hexadecimal-digit-to-nat sub.2nd)) ((unless (<= nat 1114111)) (reserrf (list :bad-code-point nat))) ((okf cb-tree) (abnf::check-tree-list-1 sub.3rd)) ((okf &) (abnf::check-tree-schars cb-tree "}"))) (char nat))))
Theorem:
(defthm char-resultp-of-abs-unicode-character-escape (b* ((char (abs-unicode-character-escape tree))) (char-resultp char)) :rule-classes :rewrite)
Theorem:
(defthm abs-unicode-character-escape-of-tree-fix-tree (equal (abs-unicode-character-escape (abnf::tree-fix tree)) (abs-unicode-character-escape tree)))
Theorem:
(defthm abs-unicode-character-escape-tree-equiv-congruence-on-tree (implies (abnf::tree-equiv tree tree-equiv) (equal (abs-unicode-character-escape tree) (abs-unicode-character-escape tree-equiv))) :rule-classes :congruence)