Filtering...

subcor-var

books/system/subcor-var

Included Books

other
(in-package "ACL2")
include-book
(include-book "sublis-var")
local
(local (include-book "pseudo-termp-lemmas"))
other
(verify-termination subcor-var1)
other
(verify-termination subcor-var
  (declare (xargs :verify-guards nil)))
local
(local (defun subcor-var-flg
    (flg vars terms x)
    (cond (flg (cond ((endp x) nil)
          (t (cons (subcor-var-flg nil vars terms (car x))
              (subcor-var-flg t vars terms (cdr x))))))
      (t (cond ((variablep x) (subcor-var1 vars terms x))
          ((fquotep x) x)
          (t (cons-term (ffn-symb x)
              (subcor-var-flg t vars terms (fargs x)))))))))
local
(local (defthmd subcor-var-flg-property
    (equal (subcor-var-flg flg vars term x)
      (if flg
        (subcor-var-lst vars term x)
        (subcor-var vars term x)))))
local
(local (defthm subcor-var-flg-preserves-len
    (implies flg
      (equal (len (subcor-var-flg flg vars terms x)) (len x)))))
local
(local (defthm pseudo-termp-subcor-var-flg
    (implies (and (symbol-listp vars)
        (pseudo-term-listp terms)
        (equal (len vars) (len terms))
        (if flg
          (pseudo-term-listp x)
          (pseudo-termp x)))
      (if flg
        (pseudo-term-listp (subcor-var-flg flg vars terms x))
        (pseudo-termp (subcor-var-flg flg vars terms x))))
    :rule-classes nil))
pseudo-term-listp-subcor-var-lsttheorem
(defthm pseudo-term-listp-subcor-var-lst
  (implies (and (symbol-listp vars)
      (pseudo-term-listp terms)
      (equal (len vars) (len terms))
      (pseudo-term-listp forms))
    (pseudo-term-listp (subcor-var-lst vars terms forms)))
  :hints (("Goal" :in-theory (enable subcor-var-flg-property)
     :use ((:instance pseudo-termp-subcor-var-flg (flg t) (x forms))))))
pseudo-term-listp-subcor-vartheorem
(defthm pseudo-term-listp-subcor-var
  (implies (and (symbol-listp vars)
      (pseudo-term-listp terms)
      (equal (len vars) (len terms))
      (pseudo-termp form))
    (pseudo-termp (subcor-var vars terms form)))
  :hints (("Goal" :in-theory (enable subcor-var-flg-property)
     :use ((:instance pseudo-termp-subcor-var-flg (flg nil) (x form))))))
other
(verify-guards subcor-var)
other
(verify-termination remove-lambdas1)
other
(verify-termination remove-lambdas)
local
(local (include-book "tools/flag" :dir :system))
local
(local (make-flag flag-remove-lambdas remove-lambdas1))
local
(local (defthm len-mv-nth-1-remove-lambdas-lst
    (equal (len (mv-nth 1 (remove-lambdas-lst x))) (len x))))
local
(local (defthm-flag-remove-lambdas (defthm pseudo-termp-mv-nth-1-remove-lambdas1
      (implies (pseudo-termp term)
        (pseudo-termp (mv-nth 1 (remove-lambdas1 term))))
      :flag remove-lambdas1)
    (defthm pseudo-term-listp-mv-nth-1-remove-lambdas-lst
      (implies (pseudo-term-listp termlist)
        (pseudo-term-listp (mv-nth 1 (remove-lambdas-lst termlist))))
      :flag remove-lambdas-lst)))
local
(local (defthm true-listp-mv-nth-1-remove-lambdas-lst
    (implies (force (true-listp lst))
      (true-listp (mv-nth 1 (remove-lambdas-lst lst))))
    :rule-classes :type-prescription))
other
(verify-guards remove-lambdas1)
other
(verify-guards remove-lambdas)