Generate a lemma instance
for each
(expdata-gen-lemma-instances-x1...xn-to-rec-call-args-back lemma rec-calls old$ arg-surjmaps wrld) → lemma-instances
Function:
(defun expdata-gen-lemma-instances-x1...xn-to-rec-call-args-back (lemma rec-calls old$ arg-surjmaps wrld) (declare (xargs :guard (and (symbolp lemma) (pseudo-tests-and-call-listp rec-calls) (symbolp old$) (expdata-symbol-surjmap-alistp arg-surjmaps) (plist-worldp wrld)))) (let ((__function__ 'expdata-gen-lemma-instances-x1...xn-to-rec-call-args-back)) (declare (ignorable __function__)) (b* (((when (endp rec-calls)) nil) (tests-and-call (car rec-calls)) (rec-call (access tests-and-call tests-and-call :call)) (rec-call-args (fargs rec-call)) (x1...xn (formals old$ wrld)) (back-of-x1...xn (expdata-gen-back-of-terms x1...xn arg-surjmaps)) (rec-call-args-back (subcor-var-lst x1...xn back-of-x1...xn rec-call-args)) (inst (alist-to-doublets (pairlis$ x1...xn rec-call-args-back))) (instance (cons ':instance (cons lemma (cons ':extra-bindings-ok inst)))) (instances (expdata-gen-lemma-instances-x1...xn-to-rec-call-args-back lemma (cdr rec-calls) old$ arg-surjmaps wrld))) (cons instance instances))))
Theorem:
(defthm true-list-listp-of-expdata-gen-lemma-instances-x1...xn-to-rec-call-args-back (b* ((lemma-instances (expdata-gen-lemma-instances-x1...xn-to-rec-call-args-back lemma rec-calls old$ arg-surjmaps wrld))) (true-list-listp lemma-instances)) :rule-classes :rewrite)