Transform a translation unit.
(transunit-wrap-fn transunit target-name wrapper-name? blacklist) → (mv er? warnings? foundp transunit$)
Function:
(defun transunit-wrap-fn (transunit target-name wrapper-name? blacklist) (declare (xargs :guard (and (transunitp transunit) (identp target-name) (ident-optionp wrapper-name?) (ident-setp blacklist)))) (declare (xargs :guard (transunit-annop transunit))) (b* (((reterr) nil nil (c$::transunit-fix transunit)) ((transunit transunit) transunit) ((erp foundp found-satp extdecls) (ext-declon-list-wrap-fn transunit.declons target-name wrapper-name? blacklist)) (warnings? (if (and foundp (not found-satp)) (msg$ "Declaration of ~x0 found, but couldn't create a wrapper." (ident->unwrap target-name)) nil))) (retok warnings? foundp (c$::change-transunit transunit :declons extdecls :info nil))))
Theorem:
(defthm maybe-msgp-of-transunit-wrap-fn.er? (b* (((mv ?er? ?warnings? ?foundp ?transunit$) (transunit-wrap-fn transunit target-name wrapper-name? blacklist))) (maybe-msgp er?)) :rule-classes :rewrite)
Theorem:
(defthm maybe-msgp-of-transunit-wrap-fn.warnings? (b* (((mv ?er? ?warnings? ?foundp ?transunit$) (transunit-wrap-fn transunit target-name wrapper-name? blacklist))) (maybe-msgp warnings?)) :rule-classes :rewrite)
Theorem:
(defthm booleanp-of-transunit-wrap-fn.foundp (b* (((mv ?er? ?warnings? ?foundp ?transunit$) (transunit-wrap-fn transunit target-name wrapper-name? blacklist))) (booleanp foundp)) :rule-classes :type-prescription)
Theorem:
(defthm transunitp-of-transunit-wrap-fn.transunit$ (b* (((mv ?er? ?warnings? ?foundp ?transunit$) (transunit-wrap-fn transunit target-name wrapper-name? blacklist))) (transunitp transunit$)) :rule-classes :rewrite)
Theorem:
(defthm transunit-wrap-fn-of-transunit-fix-transunit (equal (transunit-wrap-fn (c$::transunit-fix transunit) target-name wrapper-name? blacklist) (transunit-wrap-fn transunit target-name wrapper-name? blacklist)))
Theorem:
(defthm transunit-wrap-fn-transunit-equiv-congruence-on-transunit (implies (c$::transunit-equiv transunit transunit-equiv) (equal (transunit-wrap-fn transunit target-name wrapper-name? blacklist) (transunit-wrap-fn transunit-equiv target-name wrapper-name? blacklist))) :rule-classes :congruence)
Theorem:
(defthm transunit-wrap-fn-of-ident-fix-target-name (equal (transunit-wrap-fn transunit (ident-fix target-name) wrapper-name? blacklist) (transunit-wrap-fn transunit target-name wrapper-name? blacklist)))
Theorem:
(defthm transunit-wrap-fn-ident-equiv-congruence-on-target-name (implies (c$::ident-equiv target-name target-name-equiv) (equal (transunit-wrap-fn transunit target-name wrapper-name? blacklist) (transunit-wrap-fn transunit target-name-equiv wrapper-name? blacklist))) :rule-classes :congruence)
Theorem:
(defthm transunit-wrap-fn-of-ident-option-fix-wrapper-name? (equal (transunit-wrap-fn transunit target-name (ident-option-fix wrapper-name?) blacklist) (transunit-wrap-fn transunit target-name wrapper-name? blacklist)))
Theorem:
(defthm transunit-wrap-fn-ident-option-equiv-congruence-on-wrapper-name? (implies (c$::ident-option-equiv wrapper-name? wrapper-name?-equiv) (equal (transunit-wrap-fn transunit target-name wrapper-name? blacklist) (transunit-wrap-fn transunit target-name wrapper-name?-equiv blacklist))) :rule-classes :congruence)
Theorem:
(defthm transunit-wrap-fn-of-ident-set-fix-blacklist (equal (transunit-wrap-fn transunit target-name wrapper-name? (ident-set-fix blacklist)) (transunit-wrap-fn transunit target-name wrapper-name? blacklist)))
Theorem:
(defthm transunit-wrap-fn-ident-set-equiv-congruence-on-blacklist (implies (c$::ident-set-equiv blacklist blacklist-equiv) (equal (transunit-wrap-fn transunit target-name wrapper-name? blacklist) (transunit-wrap-fn transunit target-name wrapper-name? blacklist-equiv))) :rule-classes :congruence)