(fresh-numbered-string-wrt base number-prefix
number number-suffix blacklist)
→
stringFunction:
(defun fresh-numbered-string-wrt0 (base number-prefix number number-suffix blacklist steps) (declare (type (unsigned-byte 60) steps)) (declare (xargs :guard (and (stringp base) (stringp number-prefix) (natp number) (stringp number-suffix) (acl2::string-setp blacklist)))) (b* ((number (mbe :logic (nfix number) :exec number)) (steps (mbe :logic (nfix steps) :exec (acl2::the-fixnat steps))) (blacklist (acl2::string-sfix blacklist)) ((when (= 0 steps)) (mbe :logic (acl2::str-fix base) :exec base)) (numbered-string (make-numbered-string base number-prefix number number-suffix))) (if (in numbered-string blacklist) (fresh-numbered-string-wrt0 base number-prefix (+ number 1) number-suffix blacklist (- steps 1)) numbered-string)))
Theorem:
(defthm stringp-of-fresh-numbered-string-wrt0 (b* ((string (fresh-numbered-string-wrt0 base number-prefix number number-suffix blacklist steps))) (stringp string)) :rule-classes :rewrite)
Theorem:
(defthm fresh-numbered-string-wrt0-of-str-fix-base (equal (fresh-numbered-string-wrt0 (acl2::str-fix base) number-prefix number number-suffix blacklist steps) (fresh-numbered-string-wrt0 base number-prefix number number-suffix blacklist steps)))
Theorem:
(defthm fresh-numbered-string-wrt0-streqv-congruence-on-base (implies (acl2::streqv base base-equiv) (equal (fresh-numbered-string-wrt0 base number-prefix number number-suffix blacklist steps) (fresh-numbered-string-wrt0 base-equiv number-prefix number number-suffix blacklist steps))) :rule-classes :congruence)
Theorem:
(defthm fresh-numbered-string-wrt0-of-str-fix-number-prefix (equal (fresh-numbered-string-wrt0 base (acl2::str-fix number-prefix) number number-suffix blacklist steps) (fresh-numbered-string-wrt0 base number-prefix number number-suffix blacklist steps)))
Theorem:
(defthm fresh-numbered-string-wrt0-streqv-congruence-on-number-prefix (implies (acl2::streqv number-prefix number-prefix-equiv) (equal (fresh-numbered-string-wrt0 base number-prefix number number-suffix blacklist steps) (fresh-numbered-string-wrt0 base number-prefix-equiv number number-suffix blacklist steps))) :rule-classes :congruence)
Theorem:
(defthm fresh-numbered-string-wrt0-of-nfix-number (equal (fresh-numbered-string-wrt0 base number-prefix (nfix number) number-suffix blacklist steps) (fresh-numbered-string-wrt0 base number-prefix number number-suffix blacklist steps)))
Theorem:
(defthm fresh-numbered-string-wrt0-nat-equiv-congruence-on-number (implies (acl2::nat-equiv number number-equiv) (equal (fresh-numbered-string-wrt0 base number-prefix number number-suffix blacklist steps) (fresh-numbered-string-wrt0 base number-prefix number-equiv number-suffix blacklist steps))) :rule-classes :congruence)
Theorem:
(defthm fresh-numbered-string-wrt0-of-str-fix-number-suffix (equal (fresh-numbered-string-wrt0 base number-prefix number (acl2::str-fix number-suffix) blacklist steps) (fresh-numbered-string-wrt0 base number-prefix number number-suffix blacklist steps)))
Theorem:
(defthm fresh-numbered-string-wrt0-streqv-congruence-on-number-suffix (implies (acl2::streqv number-suffix number-suffix-equiv) (equal (fresh-numbered-string-wrt0 base number-prefix number number-suffix blacklist steps) (fresh-numbered-string-wrt0 base number-prefix number number-suffix-equiv blacklist steps))) :rule-classes :congruence)
Theorem:
(defthm fresh-numbered-string-wrt0-of-string-sfix-blacklist (equal (fresh-numbered-string-wrt0 base number-prefix number number-suffix (acl2::string-sfix blacklist) steps) (fresh-numbered-string-wrt0 base number-prefix number number-suffix blacklist steps)))
Theorem:
(defthm fresh-numbered-string-wrt0-string-sequiv-congruence-on-blacklist (implies (acl2::string-sequiv blacklist blacklist-equiv) (equal (fresh-numbered-string-wrt0 base number-prefix number number-suffix blacklist steps) (fresh-numbered-string-wrt0 base number-prefix number number-suffix blacklist-equiv steps))) :rule-classes :congruence)
Function:
(defun fresh-numbered-string-wrt (base number-prefix number number-suffix blacklist) (declare (xargs :guard (and (stringp base) (stringp number-prefix) (natp number) (stringp number-suffix) (acl2::string-setp blacklist)))) (fresh-numbered-string-wrt0 base number-prefix number number-suffix blacklist (acl2::the-fixnat (- (expt 2 acl2::*fixnat-bits*) 1))))
Theorem:
(defthm stringp-of-fresh-numbered-string-wrt (b* ((string (fresh-numbered-string-wrt base number-prefix number number-suffix blacklist))) (stringp string)) :rule-classes :rewrite)
Theorem:
(defthm fresh-numbered-string-wrt-of-str-fix-base (equal (fresh-numbered-string-wrt (acl2::str-fix base) number-prefix number number-suffix blacklist) (fresh-numbered-string-wrt base number-prefix number number-suffix blacklist)))
Theorem:
(defthm fresh-numbered-string-wrt-streqv-congruence-on-base (implies (acl2::streqv base base-equiv) (equal (fresh-numbered-string-wrt base number-prefix number number-suffix blacklist) (fresh-numbered-string-wrt base-equiv number-prefix number number-suffix blacklist))) :rule-classes :congruence)
Theorem:
(defthm fresh-numbered-string-wrt-of-str-fix-number-prefix (equal (fresh-numbered-string-wrt base (acl2::str-fix number-prefix) number number-suffix blacklist) (fresh-numbered-string-wrt base number-prefix number number-suffix blacklist)))
Theorem:
(defthm fresh-numbered-string-wrt-streqv-congruence-on-number-prefix (implies (acl2::streqv number-prefix number-prefix-equiv) (equal (fresh-numbered-string-wrt base number-prefix number number-suffix blacklist) (fresh-numbered-string-wrt base number-prefix-equiv number number-suffix blacklist))) :rule-classes :congruence)
Theorem:
(defthm fresh-numbered-string-wrt-of-nfix-number (equal (fresh-numbered-string-wrt base number-prefix (nfix number) number-suffix blacklist) (fresh-numbered-string-wrt base number-prefix number number-suffix blacklist)))
Theorem:
(defthm fresh-numbered-string-wrt-nat-equiv-congruence-on-number (implies (acl2::nat-equiv number number-equiv) (equal (fresh-numbered-string-wrt base number-prefix number number-suffix blacklist) (fresh-numbered-string-wrt base number-prefix number-equiv number-suffix blacklist))) :rule-classes :congruence)
Theorem:
(defthm fresh-numbered-string-wrt-of-str-fix-number-suffix (equal (fresh-numbered-string-wrt base number-prefix number (acl2::str-fix number-suffix) blacklist) (fresh-numbered-string-wrt base number-prefix number number-suffix blacklist)))
Theorem:
(defthm fresh-numbered-string-wrt-streqv-congruence-on-number-suffix (implies (acl2::streqv number-suffix number-suffix-equiv) (equal (fresh-numbered-string-wrt base number-prefix number number-suffix blacklist) (fresh-numbered-string-wrt base number-prefix number number-suffix-equiv blacklist))) :rule-classes :congruence)