Generate a lemma instance where
each variable
(expdata-gen-lemma-instance-x1...xn-to-back-of-x1...xn lemma old$ arg-surjmaps wrld) → lemma-instance
Function:
(defun expdata-gen-lemma-instance-x1...xn-to-back-of-x1...xn (lemma old$ arg-surjmaps wrld) (declare (xargs :guard (and (or (symbolp lemma) (symbol-listp lemma)) (symbolp old$) (expdata-symbol-surjmap-alistp arg-surjmaps) (plist-worldp wrld)))) (declare (xargs :guard (= (len (formals old$ wrld)) (len arg-surjmaps)))) (let ((__function__ 'expdata-gen-lemma-instance-x1...xn-to-back-of-x1...xn)) (declare (ignorable __function__)) (b* ((x1...xn (formals old$ wrld)) (back-of-x1...xn (expdata-gen-back-of-terms x1...xn arg-surjmaps)) (inst (alist-to-doublets (pairlis$ x1...xn back-of-x1...xn)))) (cons ':instance (cons lemma (cons ':extra-bindings-ok inst))))))
Theorem:
(defthm true-listp-of-expdata-gen-lemma-instance-x1...xn-to-back-of-x1...xn (b* ((lemma-instance (expdata-gen-lemma-instance-x1...xn-to-back-of-x1...xn lemma old$ arg-surjmaps wrld))) (true-listp lemma-instance)) :rule-classes :rewrite)