(fresh-idents idents
blacklist &key (force-suffix 'nil)
(number-prefix '"_")
(number-suffix '""))
→
idents$Function:
(defun fresh-idents-fn (idents blacklist force-suffix number-prefix number-suffix) (declare (xargs :guard (and (ident-listp idents) (ident-setp blacklist) (booleanp force-suffix) (stringp number-prefix) (stringp number-suffix)))) (b* ((idents (c$::ident-list-fix idents)) (blacklist (ident-set-fix blacklist)) (force-suffix (mbe :logic (acl2::bool-fix force-suffix) :exec force-suffix)) (number-prefix (mbe :logic (acl2::str-fix number-prefix) :exec number-prefix)) (number-suffix (mbe :logic (acl2::str-fix number-suffix) :exec number-suffix)) ((when (endp idents)) nil) (ident$ (fresh-ident (first idents) blacklist :force-suffix force-suffix :number-prefix number-prefix :number-suffix number-suffix))) (cons ident$ (fresh-idents (rest idents) (insert ident$ blacklist) :force-suffix force-suffix :number-prefix number-prefix :number-suffix number-suffix))))
Theorem:
(defthm ident-listp-of-fresh-idents (b* ((idents$ (fresh-idents-fn idents blacklist force-suffix number-prefix number-suffix))) (ident-listp idents$)) :rule-classes :rewrite)
Theorem:
(defthm fresh-idents-fn-of-ident-list-fix-idents (equal (fresh-idents-fn (c$::ident-list-fix idents) blacklist force-suffix number-prefix number-suffix) (fresh-idents-fn idents blacklist force-suffix number-prefix number-suffix)))
Theorem:
(defthm fresh-idents-fn-ident-list-equiv-congruence-on-idents (implies (c$::ident-list-equiv idents idents-equiv) (equal (fresh-idents-fn idents blacklist force-suffix number-prefix number-suffix) (fresh-idents-fn idents-equiv blacklist force-suffix number-prefix number-suffix))) :rule-classes :congruence)
Theorem:
(defthm fresh-idents-fn-of-ident-set-fix-blacklist (equal (fresh-idents-fn idents (ident-set-fix blacklist) force-suffix number-prefix number-suffix) (fresh-idents-fn idents blacklist force-suffix number-prefix number-suffix)))
Theorem:
(defthm fresh-idents-fn-ident-set-equiv-congruence-on-blacklist (implies (c$::ident-set-equiv blacklist blacklist-equiv) (equal (fresh-idents-fn idents blacklist force-suffix number-prefix number-suffix) (fresh-idents-fn idents blacklist-equiv force-suffix number-prefix number-suffix))) :rule-classes :congruence)
Theorem:
(defthm fresh-idents-fn-of-bool-fix-force-suffix (equal (fresh-idents-fn idents blacklist (acl2::bool-fix force-suffix) number-prefix number-suffix) (fresh-idents-fn idents blacklist force-suffix number-prefix number-suffix)))
Theorem:
(defthm fresh-idents-fn-iff-congruence-on-force-suffix (implies (iff force-suffix force-suffix-equiv) (equal (fresh-idents-fn idents blacklist force-suffix number-prefix number-suffix) (fresh-idents-fn idents blacklist force-suffix-equiv number-prefix number-suffix))) :rule-classes :congruence)
Theorem:
(defthm fresh-idents-fn-of-str-fix-number-prefix (equal (fresh-idents-fn idents blacklist force-suffix (acl2::str-fix number-prefix) number-suffix) (fresh-idents-fn idents blacklist force-suffix number-prefix number-suffix)))
Theorem:
(defthm fresh-idents-fn-streqv-congruence-on-number-prefix (implies (acl2::streqv number-prefix number-prefix-equiv) (equal (fresh-idents-fn idents blacklist force-suffix number-prefix number-suffix) (fresh-idents-fn idents blacklist force-suffix number-prefix-equiv number-suffix))) :rule-classes :congruence)
Theorem:
(defthm fresh-idents-fn-of-str-fix-number-suffix (equal (fresh-idents-fn idents blacklist force-suffix number-prefix (acl2::str-fix number-suffix)) (fresh-idents-fn idents blacklist force-suffix number-prefix number-suffix)))
Theorem:
(defthm fresh-idents-fn-streqv-congruence-on-number-suffix (implies (acl2::streqv number-suffix number-suffix-equiv) (equal (fresh-idents-fn idents blacklist force-suffix number-prefix number-suffix) (fresh-idents-fn idents blacklist force-suffix number-prefix number-suffix-equiv))) :rule-classes :congruence)