Check if a function definition matches the target, and create the function wrapper if so.
(fundef-wrap-fn-add-wrapper-def fundef
target-name wrapper-name? blacklist)
→
(mv er? uid? wrapper? wrapper-name?$)The returned
If
Function:
(defun fundef-wrap-fn-add-wrapper-def (fundef target-name wrapper-name? blacklist) (declare (xargs :guard (and (fundefp fundef) (identp target-name) (ident-optionp wrapper-name?) (ident-setp blacklist)))) (declare (xargs :guard (fundef-annop fundef))) (b* (((reterr) nil nil nil) ((fundef fundef) fundef) ((erp foundp wrapper? wrapper-name?) (declor-wrap-fn-add-wrapper-def fundef.declor target-name wrapper-name? blacklist fundef.spec)) ((erp uid?) (b* (((reterr) nil) ((unless foundp) (retok nil)) ((unless (fundef-infop (c$::fundef->info fundef))) (retmsg$ "Function definition does not have ~ fundef-info metadata: ~x0" (fundef-fix fundef)))) (retok (c$::fundef-info->uid (c$::fundef->info fundef)))))) (retok uid? wrapper? wrapper-name?)))
Theorem:
(defthm maybe-msgp-of-fundef-wrap-fn-add-wrapper-def.er? (b* (((mv ?er? ?uid? ?wrapper? ?wrapper-name?$) (fundef-wrap-fn-add-wrapper-def fundef target-name wrapper-name? blacklist))) (maybe-msgp er?)) :rule-classes :rewrite)
Theorem:
(defthm uid-optionp-of-fundef-wrap-fn-add-wrapper-def.uid? (b* (((mv ?er? ?uid? ?wrapper? ?wrapper-name?$) (fundef-wrap-fn-add-wrapper-def fundef target-name wrapper-name? blacklist))) (c$::uid-optionp uid?)) :rule-classes :rewrite)
Theorem:
(defthm fundef-optionp-of-fundef-wrap-fn-add-wrapper-def.wrapper? (b* (((mv ?er? ?uid? ?wrapper? ?wrapper-name?$) (fundef-wrap-fn-add-wrapper-def fundef target-name wrapper-name? blacklist))) (fundef-optionp wrapper?)) :rule-classes :rewrite)
Theorem:
(defthm ident-optionp-of-fundef-wrap-fn-add-wrapper-def.wrapper-name?$ (b* (((mv ?er? ?uid? ?wrapper? ?wrapper-name?$) (fundef-wrap-fn-add-wrapper-def fundef target-name wrapper-name? blacklist))) (ident-optionp wrapper-name?$)) :rule-classes :rewrite)
Theorem:
(defthm fundefp-of-fundef-wrap-fn-add-wrapper-def.wrapper?-under-iff (b* (((mv ?er? ?uid? ?wrapper? ?wrapper-name?$) (fundef-wrap-fn-add-wrapper-def fundef target-name wrapper-name? blacklist))) (iff (fundefp wrapper?) wrapper?)))
Theorem:
(defthm identp-of-fundef-wrap-fn-add-wrapper-def.wrapper-name?$ (b* (((mv ?er? ?uid? ?wrapper? ?wrapper-name?$) (fundef-wrap-fn-add-wrapper-def fundef target-name wrapper-name? blacklist))) (equal (identp wrapper-name?$) (fundefp wrapper?))))
Theorem:
(defthm fundef-wrap-fn-add-wrapper-def-of-fundef-fix-fundef (equal (fundef-wrap-fn-add-wrapper-def (fundef-fix fundef) target-name wrapper-name? blacklist) (fundef-wrap-fn-add-wrapper-def fundef target-name wrapper-name? blacklist)))
Theorem:
(defthm fundef-wrap-fn-add-wrapper-def-fundef-equiv-congruence-on-fundef (implies (c$::fundef-equiv fundef fundef-equiv) (equal (fundef-wrap-fn-add-wrapper-def fundef target-name wrapper-name? blacklist) (fundef-wrap-fn-add-wrapper-def fundef-equiv target-name wrapper-name? blacklist))) :rule-classes :congruence)
Theorem:
(defthm fundef-wrap-fn-add-wrapper-def-of-ident-fix-target-name (equal (fundef-wrap-fn-add-wrapper-def fundef (ident-fix target-name) wrapper-name? blacklist) (fundef-wrap-fn-add-wrapper-def fundef target-name wrapper-name? blacklist)))
Theorem:
(defthm fundef-wrap-fn-add-wrapper-def-ident-equiv-congruence-on-target-name (implies (c$::ident-equiv target-name target-name-equiv) (equal (fundef-wrap-fn-add-wrapper-def fundef target-name wrapper-name? blacklist) (fundef-wrap-fn-add-wrapper-def fundef target-name-equiv wrapper-name? blacklist))) :rule-classes :congruence)
Theorem:
(defthm fundef-wrap-fn-add-wrapper-def-of-ident-option-fix-wrapper-name? (equal (fundef-wrap-fn-add-wrapper-def fundef target-name (ident-option-fix wrapper-name?) blacklist) (fundef-wrap-fn-add-wrapper-def fundef target-name wrapper-name? blacklist)))
Theorem:
(defthm fundef-wrap-fn-add-wrapper-def-ident-option-equiv-congruence-on-wrapper-name? (implies (c$::ident-option-equiv wrapper-name? wrapper-name?-equiv) (equal (fundef-wrap-fn-add-wrapper-def fundef target-name wrapper-name? blacklist) (fundef-wrap-fn-add-wrapper-def fundef target-name wrapper-name?-equiv blacklist))) :rule-classes :congruence)
Theorem:
(defthm fundef-wrap-fn-add-wrapper-def-of-ident-set-fix-blacklist (equal (fundef-wrap-fn-add-wrapper-def fundef target-name wrapper-name? (ident-set-fix blacklist)) (fundef-wrap-fn-add-wrapper-def fundef target-name wrapper-name? blacklist)))
Theorem:
(defthm fundef-wrap-fn-add-wrapper-def-ident-set-equiv-congruence-on-blacklist (implies (c$::ident-set-equiv blacklist blacklist-equiv) (equal (fundef-wrap-fn-add-wrapper-def fundef target-name wrapper-name? blacklist) (fundef-wrap-fn-add-wrapper-def fundef target-name wrapper-name? blacklist-equiv))) :rule-classes :congruence)