Function:
(defun make-numbered-string (base number-prefix number number-suffix) (declare (xargs :guard (and (stringp base) (stringp number-prefix) (natp number) (stringp number-suffix)))) (concatenate 'string (mbe :logic (acl2::str-fix base) :exec base) (mbe :logic (acl2::str-fix number-prefix) :exec number-prefix) (acl2::implode (explode-nonnegative-integer (mbe :logic (nfix number) :exec number) 10 nil)) (mbe :logic (acl2::str-fix number-suffix) :exec number-suffix)))
Theorem:
(defthm stringp-of-make-numbered-string (b* ((string (make-numbered-string base number-prefix number number-suffix))) (stringp string)) :rule-classes :rewrite)
Theorem:
(defthm make-numbered-string-of-str-fix-base (equal (make-numbered-string (acl2::str-fix base) number-prefix number number-suffix) (make-numbered-string base number-prefix number number-suffix)))
Theorem:
(defthm make-numbered-string-streqv-congruence-on-base (implies (acl2::streqv base base-equiv) (equal (make-numbered-string base number-prefix number number-suffix) (make-numbered-string base-equiv number-prefix number number-suffix))) :rule-classes :congruence)
Theorem:
(defthm make-numbered-string-of-str-fix-number-prefix (equal (make-numbered-string base (acl2::str-fix number-prefix) number number-suffix) (make-numbered-string base number-prefix number number-suffix)))
Theorem:
(defthm make-numbered-string-streqv-congruence-on-number-prefix (implies (acl2::streqv number-prefix number-prefix-equiv) (equal (make-numbered-string base number-prefix number number-suffix) (make-numbered-string base number-prefix-equiv number number-suffix))) :rule-classes :congruence)
Theorem:
(defthm make-numbered-string-of-nfix-number (equal (make-numbered-string base number-prefix (nfix number) number-suffix) (make-numbered-string base number-prefix number number-suffix)))
Theorem:
(defthm make-numbered-string-nat-equiv-congruence-on-number (implies (acl2::nat-equiv number number-equiv) (equal (make-numbered-string base number-prefix number number-suffix) (make-numbered-string base number-prefix number-equiv number-suffix))) :rule-classes :congruence)
Theorem:
(defthm make-numbered-string-of-str-fix-number-suffix (equal (make-numbered-string base number-prefix number (acl2::str-fix number-suffix)) (make-numbered-string base number-prefix number number-suffix)))
Theorem:
(defthm make-numbered-string-streqv-congruence-on-number-suffix (implies (acl2::streqv number-suffix number-suffix-equiv) (equal (make-numbered-string base number-prefix number number-suffix) (make-numbered-string base number-prefix number number-suffix-equiv))) :rule-classes :congruence)