Abstract a
(abs-numeric-literal tree) → lit
Function:
(defun abs-numeric-literal (tree) (declare (xargs :guard (abnf::treep tree))) (let ((__function__ 'abs-numeric-literal)) (declare (ignorable __function__)) (b* (((okf tree) (abnf::check-tree-nonleaf-1-1 tree "numeric-literal")) ((okf rulename?) (abnf::check-tree-nonleaf? tree))) (cond ((equal rulename? "integer-literal") (abs-integer-literal tree)) ((equal rulename? "field-literal") (abs-field-literal tree)) ((equal rulename? "product-group-literal") (abs-product-group-literal tree)) ((equal rulename? "scalar-literal") (abs-scalar-literal tree)) (t (reserrf (list :found-subtree (abnf::tree-info-for-error tree))))))))
Theorem:
(defthm literal-resultp-of-abs-numeric-literal (b* ((lit (abs-numeric-literal tree))) (literal-resultp lit)) :rule-classes :rewrite)
Theorem:
(defthm abs-numeric-literal-of-tree-fix-tree (equal (abs-numeric-literal (abnf::tree-fix tree)) (abs-numeric-literal tree)))
Theorem:
(defthm abs-numeric-literal-tree-equiv-congruence-on-tree (implies (abnf::tree-equiv tree tree-equiv) (equal (abs-numeric-literal tree) (abs-numeric-literal tree-equiv))) :rule-classes :congruence)