Check that the parameter list is supported and add parameter names as necessary.
(wrap-fn-process-param-declon-list
params fresh-ident-base blacklist)
→
(mv erp blacklist$ params$ idents)Function:
(defun wrap-fn-process-param-declon-list (params fresh-ident-base blacklist) (declare (xargs :guard (and (param-declon-listp params) (identp fresh-ident-base) (ident-setp blacklist)))) (b* (((reterr) nil nil nil) (blacklist (ident-set-fix blacklist)) (params (param-declon-list-fix params)) ((when (equal params (list (make-param-declon :specs (list (decl-spec-typespec (c$::type-spec-void))) :declor (param-declor-none) :attribs nil)))) (retok blacklist params nil))) (wrap-fn-process-param-declon-list-loop params fresh-ident-base blacklist)))
Theorem:
(defthm booleanp-of-wrap-fn-process-param-declon-list.erp (b* (((mv acl2::?erp ?blacklist$ ?params$ ?idents) (wrap-fn-process-param-declon-list params fresh-ident-base blacklist))) (booleanp erp)) :rule-classes :type-prescription)
Theorem:
(defthm ident-setp-of-wrap-fn-process-param-declon-list.blacklist$ (b* (((mv acl2::?erp ?blacklist$ ?params$ ?idents) (wrap-fn-process-param-declon-list params fresh-ident-base blacklist))) (ident-setp blacklist$)) :rule-classes :rewrite)
Theorem:
(defthm param-declon-listp-of-wrap-fn-process-param-declon-list.params$ (b* (((mv acl2::?erp ?blacklist$ ?params$ ?idents) (wrap-fn-process-param-declon-list params fresh-ident-base blacklist))) (param-declon-listp params$)) :rule-classes :rewrite)
Theorem:
(defthm ident-listp-of-wrap-fn-process-param-declon-list.idents (b* (((mv acl2::?erp ?blacklist$ ?params$ ?idents) (wrap-fn-process-param-declon-list params fresh-ident-base blacklist))) (ident-listp idents)) :rule-classes :rewrite)
Theorem:
(defthm true-listp-of-wrap-fn-process-param-declon-list.idents (b* (((mv acl2::?erp ?blacklist$ ?params$ ?idents) (wrap-fn-process-param-declon-list params fresh-ident-base blacklist))) (true-listp idents)) :rule-classes :type-prescription)
Theorem:
(defthm wrap-fn-process-param-declon-list-of-param-declon-list-fix-params (equal (wrap-fn-process-param-declon-list (param-declon-list-fix params) fresh-ident-base blacklist) (wrap-fn-process-param-declon-list params fresh-ident-base blacklist)))
Theorem:
(defthm wrap-fn-process-param-declon-list-param-declon-list-equiv-congruence-on-params (implies (c$::param-declon-list-equiv params params-equiv) (equal (wrap-fn-process-param-declon-list params fresh-ident-base blacklist) (wrap-fn-process-param-declon-list params-equiv fresh-ident-base blacklist))) :rule-classes :congruence)
Theorem:
(defthm wrap-fn-process-param-declon-list-of-ident-fix-fresh-ident-base (equal (wrap-fn-process-param-declon-list params (ident-fix fresh-ident-base) blacklist) (wrap-fn-process-param-declon-list params fresh-ident-base blacklist)))
Theorem:
(defthm wrap-fn-process-param-declon-list-ident-equiv-congruence-on-fresh-ident-base (implies (c$::ident-equiv fresh-ident-base fresh-ident-base-equiv) (equal (wrap-fn-process-param-declon-list params fresh-ident-base blacklist) (wrap-fn-process-param-declon-list params fresh-ident-base-equiv blacklist))) :rule-classes :congruence)
Theorem:
(defthm wrap-fn-process-param-declon-list-of-ident-set-fix-blacklist (equal (wrap-fn-process-param-declon-list params fresh-ident-base (ident-set-fix blacklist)) (wrap-fn-process-param-declon-list params fresh-ident-base blacklist)))
Theorem:
(defthm wrap-fn-process-param-declon-list-ident-set-equiv-congruence-on-blacklist (implies (c$::ident-set-equiv blacklist blacklist-equiv) (equal (wrap-fn-process-param-declon-list params fresh-ident-base blacklist) (wrap-fn-process-param-declon-list params fresh-ident-base blacklist-equiv))) :rule-classes :congruence)