other
(in-package "ACL2")
other
(verify-termination quote-listp)
character-listp-make-character-listtheorem
(defthm character-listp-make-character-list (character-listp (make-character-list x)))
other
(verify-termination cons-term1)
other
(verify-termination cons-term)
other
(verify-termination cons-term1-mv2)
other
(verify-termination sublis-var1 (declare (xargs :verify-guards nil)))
local
(local (defun sublis-var1-flg (flg alist x) (cond (flg (cond ((endp x) (mv nil x)) (t (mv-let (changedp1 term) (sublis-var1-flg nil alist (car x)) (mv-let (changedp2 lst) (sublis-var1-flg t alist (cdr x)) (cond ((or changedp1 changedp2) (mv t (cons term lst))) (t (mv nil x)))))))) (t (cond ((variablep x) (let ((a (assoc-eq x alist))) (cond (a (mv (not (eq x (cdr a))) (cdr a))) (t (mv nil x))))) ((fquotep x) (mv nil x)) (t (mv-let (changedp lst) (sublis-var1-flg t alist (fargs x)) (let ((fn (ffn-symb x))) (cond (changedp (mv t (cons-term fn lst))) ((and (symbolp fn) (quote-listp lst)) (cons-term1-mv2 fn lst x)) (t (mv nil x)))))))))))
local
(local (defthmd sublis-var1-flg-property (equal (sublis-var1-flg flg alist x) (if flg (sublis-var1-lst alist x) (sublis-var1 alist x)))))
pseudo-termp-cdr-assoc-equaltheorem
(defthm pseudo-termp-cdr-assoc-equal (implies (pseudo-term-listp (strip-cdrs alist)) (pseudo-termp (cdr (assoc-equal x alist)))))
local
(local (defthm sublis-var1-flg-preserves-len (implies flg (equal (len (mv-nth 1 (sublis-var1-flg flg alist x))) (len x)))))
local
(local (defthm pseudo-termp-sublis-var1-flg (implies (and (symbol-alistp alist) (pseudo-term-listp (strip-cdrs alist)) (if flg (pseudo-term-listp x) (pseudo-termp x))) (if flg (pseudo-term-listp (mv-nth 1 (sublis-var1-flg flg alist x))) (pseudo-termp (mv-nth 1 (sublis-var1-flg flg alist x))))) :rule-classes nil))
pseudo-termp-sublis-var1theorem
(defthm pseudo-termp-sublis-var1 (implies (and (symbol-alistp alist) (pseudo-term-listp (strip-cdrs alist)) (pseudo-termp x)) (pseudo-termp (mv-nth 1 (sublis-var1 alist x)))) :hints (("Goal" :in-theory (enable sublis-var1-flg-property) :use ((:instance pseudo-termp-sublis-var1-flg (flg nil))))))
pseudo-termp-sublis-var1-lsttheorem
(defthm pseudo-termp-sublis-var1-lst (implies (and (symbol-alistp alist) (pseudo-term-listp (strip-cdrs alist)) (pseudo-term-listp x)) (pseudo-term-listp (mv-nth 1 (sublis-var1-lst alist x)))) :hints (("Goal" :in-theory (enable sublis-var1-flg-property) :use ((:instance pseudo-termp-sublis-var1-flg (flg t))))))
local
(local (defthm pseudo-termp-implies-pseudo-term-listp-cdr (implies (and (pseudo-termp x) (consp x) (not (equal (car x) 'quote))) (pseudo-term-listp (cdr x)))))
local
(local (defthm pseudo-term-listp-implies-true-listp (implies (pseudo-term-listp x) (true-listp x))))
other
(verify-guards sublis-var1)
other
(verify-termination sublis-var)
other
(verify-termination sublis-var-lst)