Numeric version of the C standard (regardless of GCC extensions).
Function:
(defun ienv->std (ienv) (declare (xargs :guard (ienvp ienv))) (b* (((ienv ienv) ienv)) (cond ((c::version-std-c17p ienv.version) 17) ((c::version-std-c23p ienv.version) 23))))
Theorem:
(defthm posp-of-ienv->std (b* ((number (ienv->std ienv))) (posp number)) :rule-classes :rewrite)
Theorem:
(defthm ienv->std-of-ienv-fix-ienv (equal (ienv->std (ienv-fix ienv)) (ienv->std ienv)))
Theorem:
(defthm ienv->std-ienv-equiv-congruence-on-ienv (implies (ienv-equiv ienv ienv-equiv) (equal (ienv->std ienv) (ienv->std ienv-equiv))) :rule-classes :congruence)