Create a list of indexed names,
with the same base and indices from 0 to
(names-indexed-below base n) → names
Function:
(defun names-indexed-below-rev (base n) (declare (xargs :guard (and (stringp base) (natp n)))) (let ((__function__ 'names-indexed-below-rev)) (declare (ignorable __function__)) (b* (((when (zp n)) nil) (n-1 (1- n)) (name (name-indexed base n-1)) (names (names-indexed-below-rev base n-1))) (cons name names))))
Theorem:
(defthm name-listp-of-names-indexed-below-rev (b* ((names-rev (names-indexed-below-rev base n))) (name-listp names-rev)) :rule-classes :rewrite)
Theorem:
(defthm len-of-names-indexed-below-rev (b* ((?names-rev (names-indexed-below-rev base n))) (equal (len names-rev) (nfix n))))
Theorem:
(defthm consp-of-names-indexed-below-rev (b* ((?names-rev (names-indexed-below-rev base n))) (equal (consp names-rev) (> (nfix n) 0))))
Theorem:
(defthm base-not-member-of-names-indexed-below-rev (implies (stringp base) (not (member-equal (name-simple base) (names-indexed-below-rev base n)))))
Theorem:
(defthm member-equal-of-names-indexed-below-rev (iff (member-equal (name-indexed base i) (names-indexed-below-rev base1 n)) (and (equal (str-fix base) (str-fix base1)) (< (nfix i) (nfix n)))))
Theorem:
(defthm no-duplicatesp-equal-of-names-indexed-below-rev (no-duplicatesp-equal (names-indexed-below-rev base n)))
Function:
(defun names-indexed-below (base n) (declare (xargs :guard (and (stringp base) (natp n)))) (let ((__function__ 'names-indexed-below)) (declare (ignorable __function__)) (rev (names-indexed-below-rev base n))))
Theorem:
(defthm name-listp-of-names-indexed-below (b* ((names (names-indexed-below base n))) (name-listp names)) :rule-classes :rewrite)
Theorem:
(defthm len-of-names-indexed-below (b* ((?names (names-indexed-below base n))) (equal (len names) (nfix n))))
Theorem:
(defthm consp-of-names-indexed-below (b* ((?names (names-indexed-below base n))) (equal (consp names) (> (nfix n) 0))))
Theorem:
(defthm base-not-member-of-names-indexed-below (implies (stringp base) (not (member-equal (name-simple base) (names-indexed-below base n)))))
Theorem:
(defthm member-equal-of-names-indexed-below (iff (member-equal (name-indexed base i) (names-indexed-below base1 n)) (and (equal (str-fix base) (str-fix base1)) (< (nfix i) (nfix n)))))
Theorem:
(defthm no-duplicatesp-equal-of-names-indexed-below (no-duplicatesp-equal (names-indexed-below base n)))