Check if an external declaration matches the target, and create the function wrapper if so.
(extdecl-wrap-fn-add-wrapper-def
extdecl
target-name wrapper-name? blacklist)
→
(mv er? uid? wrapper? wrapper-name?$)The returned
If
Function:
(defun extdecl-wrap-fn-add-wrapper-def (extdecl target-name wrapper-name? blacklist) (declare (xargs :guard (and (extdeclp extdecl) (identp target-name) (ident-optionp wrapper-name?) (ident-setp blacklist)))) (declare (xargs :guard (extdecl-annop extdecl))) (extdecl-case extdecl :fundef (fundef-wrap-fn-add-wrapper-def extdecl.fundef target-name wrapper-name? blacklist) :decl (decl-wrap-fn-add-wrapper-def extdecl.decl target-name wrapper-name? blacklist) :otherwise (retok nil nil nil)))
Theorem:
(defthm maybe-msgp-of-extdecl-wrap-fn-add-wrapper-def.er? (b* (((mv ?er? ?uid? ?wrapper? ?wrapper-name?$) (extdecl-wrap-fn-add-wrapper-def extdecl target-name wrapper-name? blacklist))) (maybe-msgp er?)) :rule-classes :rewrite)
Theorem:
(defthm uid-optionp-of-extdecl-wrap-fn-add-wrapper-def.uid? (b* (((mv ?er? ?uid? ?wrapper? ?wrapper-name?$) (extdecl-wrap-fn-add-wrapper-def extdecl target-name wrapper-name? blacklist))) (c$::uid-optionp uid?)) :rule-classes :rewrite)
Theorem:
(defthm fundef-optionp-of-extdecl-wrap-fn-add-wrapper-def.wrapper? (b* (((mv ?er? ?uid? ?wrapper? ?wrapper-name?$) (extdecl-wrap-fn-add-wrapper-def extdecl target-name wrapper-name? blacklist))) (fundef-optionp wrapper?)) :rule-classes :rewrite)
Theorem:
(defthm ident-optionp-of-extdecl-wrap-fn-add-wrapper-def.wrapper-name?$ (b* (((mv ?er? ?uid? ?wrapper? ?wrapper-name?$) (extdecl-wrap-fn-add-wrapper-def extdecl target-name wrapper-name? blacklist))) (ident-optionp wrapper-name?$)) :rule-classes :rewrite)
Theorem:
(defthm fundefp-of-extdecl-wrap-fn-add-wrapper-def.wrapper?-under-iff (b* (((mv ?er? ?uid? ?wrapper? ?wrapper-name?$) (extdecl-wrap-fn-add-wrapper-def extdecl target-name wrapper-name? blacklist))) (iff (fundefp wrapper?) wrapper?)))
Theorem:
(defthm identp-of-extdecl-wrap-fn-add-wrapper-def.wrapper-name?$ (b* (((mv ?er? ?uid? ?wrapper? ?wrapper-name?$) (extdecl-wrap-fn-add-wrapper-def extdecl target-name wrapper-name? blacklist))) (equal (identp wrapper-name?$) (fundefp wrapper?))))
Theorem:
(defthm extdecl-wrap-fn-add-wrapper-def-of-extdecl-fix-extdecl (equal (extdecl-wrap-fn-add-wrapper-def (extdecl-fix extdecl) target-name wrapper-name? blacklist) (extdecl-wrap-fn-add-wrapper-def extdecl target-name wrapper-name? blacklist)))
Theorem:
(defthm extdecl-wrap-fn-add-wrapper-def-extdecl-equiv-congruence-on-extdecl (implies (c$::extdecl-equiv extdecl extdecl-equiv) (equal (extdecl-wrap-fn-add-wrapper-def extdecl target-name wrapper-name? blacklist) (extdecl-wrap-fn-add-wrapper-def extdecl-equiv target-name wrapper-name? blacklist))) :rule-classes :congruence)
Theorem:
(defthm extdecl-wrap-fn-add-wrapper-def-of-ident-fix-target-name (equal (extdecl-wrap-fn-add-wrapper-def extdecl (ident-fix target-name) wrapper-name? blacklist) (extdecl-wrap-fn-add-wrapper-def extdecl target-name wrapper-name? blacklist)))
Theorem:
(defthm extdecl-wrap-fn-add-wrapper-def-ident-equiv-congruence-on-target-name (implies (c$::ident-equiv target-name target-name-equiv) (equal (extdecl-wrap-fn-add-wrapper-def extdecl target-name wrapper-name? blacklist) (extdecl-wrap-fn-add-wrapper-def extdecl target-name-equiv wrapper-name? blacklist))) :rule-classes :congruence)
Theorem:
(defthm extdecl-wrap-fn-add-wrapper-def-of-ident-option-fix-wrapper-name? (equal (extdecl-wrap-fn-add-wrapper-def extdecl target-name (ident-option-fix wrapper-name?) blacklist) (extdecl-wrap-fn-add-wrapper-def extdecl target-name wrapper-name? blacklist)))
Theorem:
(defthm extdecl-wrap-fn-add-wrapper-def-ident-option-equiv-congruence-on-wrapper-name? (implies (c$::ident-option-equiv wrapper-name? wrapper-name?-equiv) (equal (extdecl-wrap-fn-add-wrapper-def extdecl target-name wrapper-name? blacklist) (extdecl-wrap-fn-add-wrapper-def extdecl target-name wrapper-name?-equiv blacklist))) :rule-classes :congruence)
Theorem:
(defthm extdecl-wrap-fn-add-wrapper-def-of-ident-set-fix-blacklist (equal (extdecl-wrap-fn-add-wrapper-def extdecl target-name wrapper-name? (ident-set-fix blacklist)) (extdecl-wrap-fn-add-wrapper-def extdecl target-name wrapper-name? blacklist)))
Theorem:
(defthm extdecl-wrap-fn-add-wrapper-def-ident-set-equiv-congruence-on-blacklist (implies (c$::ident-set-equiv blacklist blacklist-equiv) (equal (extdecl-wrap-fn-add-wrapper-def extdecl target-name wrapper-name? blacklist) (extdecl-wrap-fn-add-wrapper-def extdecl target-name wrapper-name? blacklist-equiv))) :rule-classes :congruence)