Map an integer suffix to an integer constant length in the language definition and to an unsigned flag.
(ldm-isuffix isuffix) → (mv ilen unsignedp)
Function:
(defun ldm-isuffix (isuffix) (declare (xargs :guard (isuffixp isuffix))) (let ((__function__ 'ldm-isuffix)) (declare (ignorable __function__)) (isuffix-case isuffix :u (mv (c::iconst-length-none) t) :l (mv (ldm-lsuffix isuffix.length) nil) :ul (mv (ldm-lsuffix isuffix.length) t) :lu (mv (ldm-lsuffix isuffix.length) t))))
Theorem:
(defthm iconst-lengthp-of-ldm-isuffix.ilen (b* (((mv ?ilen ?unsignedp) (ldm-isuffix isuffix))) (c::iconst-lengthp ilen)) :rule-classes :rewrite)
Theorem:
(defthm booleanp-of-ldm-isuffix.unsignedp (b* (((mv ?ilen ?unsignedp) (ldm-isuffix isuffix))) (booleanp unsignedp)) :rule-classes :rewrite)
Theorem:
(defthm ldm-isuffix-of-isuffix-fix-isuffix (equal (ldm-isuffix (isuffix-fix isuffix)) (ldm-isuffix isuffix)))
Theorem:
(defthm ldm-isuffix-isuffix-equiv-congruence-on-isuffix (implies (isuffix-equiv isuffix isuffix-equiv) (equal (ldm-isuffix isuffix) (ldm-isuffix isuffix-equiv))) :rule-classes :congruence)