other
(in-package "ACL2")
enumerate!function
(defun enumerate! (term i j) (declare (xargs :measure (acl2-count (nfix (- (+ 1 (ifix j)) (ifix i)))))) (cond ((and (integerp i) (integerp j) (<= i j)) (if (equal term i) t (enumerate! term (+ i 1) j))) (t nil)))
enumeratetheorem
(defthm enumerate (implies (and (integerp term) (integerp i) (integerp j) (<= i term) (<= term j)) (enumerate! term i j)) :rule-classes nil)
enumerate-expandertheorem
(defthm enumerate-expander (and (implies (and (syntaxp (and (quotep i) (quotep j))) (integerp i) (integerp j) (< j i)) (equal (enumerate! term i j) nil)) (implies (and (syntaxp (and (quotep i) (quotep j))) (integerp i) (integerp j) (<= i j)) (equal (enumerate! term i j) (or (equal term i) (enumerate! term (+ i 1) j))))))
in-theory
(in-theory (disable enumerate!))