Generate lemma instances to prove the fixing of all the arguments.
(deffixequiv-sk-lemma-insts-args fn-rule fn-witness bvars args-names args-alist wrld) → lemma-instances
This loops through the alist of arguments and collects the lemma instances.
Function:
(defun deffixequiv-sk-lemma-insts-args (fn-rule fn-witness bvars args-names args-alist wrld) (declare (xargs :guard (and (symbolp fn-rule) (symbolp fn-witness) (symbol-listp bvars) (symbol-listp args-names) (acl2::symbol-symbol-alistp args-alist) (plist-worldp wrld)))) (declare (xargs :guard (not (eq fn-witness 'quote)))) (let ((__function__ 'deffixequiv-sk-lemma-insts-args)) (declare (ignorable __function__)) (b* (((when (endp args-alist)) nil) (arg (car args-alist)) (arg-name (car arg)) (arg-pred (cdr arg)) (arg-fty-info (find-fixtype-for-pred arg-pred (get-fixtypes-alist wrld))) (arg-fix (fixtype->fix arg-fty-info)) (arg-lemma-instances (deffixequiv-sk-lemma-insts-arg fn-rule fn-witness bvars args-names arg-name arg-fix)) (rest-lemma-instances (deffixequiv-sk-lemma-insts-args fn-rule fn-witness bvars args-names (cdr args-alist) wrld))) (append arg-lemma-instances rest-lemma-instances))))
Theorem:
(defthm true-list-listp-of-deffixequiv-sk-lemma-insts-args (b* ((lemma-instances (deffixequiv-sk-lemma-insts-args fn-rule fn-witness bvars args-names args-alist wrld))) (true-list-listp lemma-instances)) :rule-classes :rewrite)