Transform a translation unit.
(simpadd0-transunit tunit gin) → (mv new-tunit gout)
The
Function:
(defun simpadd0-transunit (tunit gin) (declare (xargs :guard (and (transunitp tunit) (ginp gin)))) (declare (xargs :guard (and (transunit-unambp tunit) (transunit-annop tunit)))) (let ((__function__ 'simpadd0-transunit)) (declare (ignorable __function__)) (b* (((gin gin) gin) ((transunit tunit) tunit) ((mv new-decls (gout gout-decls)) (simpadd0-extdecl-list tunit.decls gin)) (gin (gin-update gin gout-decls))) (mv (make-transunit :decls new-decls :info tunit.info) (gout-no-thm gin)))))
Theorem:
(defthm transunitp-of-simpadd0-transunit.new-tunit (b* (((mv ?new-tunit ?gout) (simpadd0-transunit tunit gin))) (transunitp new-tunit)) :rule-classes :rewrite)
Theorem:
(defthm goutp-of-simpadd0-transunit.gout (b* (((mv ?new-tunit ?gout) (simpadd0-transunit tunit gin))) (goutp gout)) :rule-classes :rewrite)
Theorem:
(defthm transunit-unambp-of-simpadd0-transunit (b* (((mv ?new-tunit ?gout) (simpadd0-transunit tunit gin))) (transunit-unambp new-tunit)))
Theorem:
(defthm transunit-annop-of-simpadd0-transunit (implies (and (transunit-unambp tunit) (transunit-annop tunit)) (b* (((mv ?new-tunit ?gout) (simpadd0-transunit tunit gin))) (transunit-annop new-tunit))))
Theorem:
(defthm transunit-aidentp-of-simpadd0-transunit (implies (and (transunit-unambp tunit) (transunit-aidentp tunit gcc)) (b* (((mv ?new-tunit ?gout) (simpadd0-transunit tunit gin))) (transunit-aidentp new-tunit gcc))))
Theorem:
(defthm simpadd0-transunit-of-transunit-fix-tunit (equal (simpadd0-transunit (c$::transunit-fix tunit) gin) (simpadd0-transunit tunit gin)))
Theorem:
(defthm simpadd0-transunit-transunit-equiv-congruence-on-tunit (implies (c$::transunit-equiv tunit tunit-equiv) (equal (simpadd0-transunit tunit gin) (simpadd0-transunit tunit-equiv gin))) :rule-classes :congruence)
Theorem:
(defthm simpadd0-transunit-of-gin-fix-gin (equal (simpadd0-transunit tunit (gin-fix gin)) (simpadd0-transunit tunit gin)))
Theorem:
(defthm simpadd0-transunit-gin-equiv-congruence-on-gin (implies (gin-equiv gin gin-equiv) (equal (simpadd0-transunit tunit gin) (simpadd0-transunit tunit gin-equiv))) :rule-classes :congruence)