Transform a translation unit ensemble.
(simpadd0-transunit-ensemble tunits gin) → (mv new-tunits gout)
Function:
(defun simpadd0-transunit-ensemble (tunits gin) (declare (xargs :guard (and (transunit-ensemblep tunits) (ginp gin)))) (declare (xargs :guard (and (transunit-ensemble-unambp tunits) (transunit-ensemble-annop tunits)))) (let ((__function__ 'simpadd0-transunit-ensemble)) (declare (ignorable __function__)) (b* (((transunit-ensemble tunits) tunits) ((mv new-map (gout gout-map)) (simpadd0-filepath-transunit-map tunits.units gin)) (gin (gin-update gin gout-map))) (mv (transunit-ensemble new-map) (gout-no-thm gin)))))
Theorem:
(defthm transunit-ensemblep-of-simpadd0-transunit-ensemble.new-tunits (b* (((mv ?new-tunits ?gout) (simpadd0-transunit-ensemble tunits gin))) (transunit-ensemblep new-tunits)) :rule-classes :rewrite)
Theorem:
(defthm goutp-of-simpadd0-transunit-ensemble.gout (b* (((mv ?new-tunits ?gout) (simpadd0-transunit-ensemble tunits gin))) (goutp gout)) :rule-classes :rewrite)
Theorem:
(defthm transunit-ensemble-unambp-of-simpadd0-transunit-ensemble (b* (((mv ?new-tunits ?gout) (simpadd0-transunit-ensemble tunits gin))) (transunit-ensemble-unambp new-tunits)))
Theorem:
(defthm transunit-ensemble-annop-of-simpadd0-transunit-ensemble (implies (and (transunit-ensemble-unambp tunits) (transunit-ensemble-annop tunits)) (b* (((mv ?new-tunits ?gout) (simpadd0-transunit-ensemble tunits gin))) (transunit-ensemble-annop new-tunits))))
Theorem:
(defthm transunit-ensemble-aidentp-of-simpadd0-transunit-ensemble (implies (and (transunit-ensemble-unambp tunits) (transunit-ensemble-aidentp tunits gcc)) (b* (((mv ?new-tunits ?gout) (simpadd0-transunit-ensemble tunits gin))) (transunit-ensemble-aidentp new-tunits gcc))))
Theorem:
(defthm simpadd0-transunit-ensemble-of-transunit-ensemble-fix-tunits (equal (simpadd0-transunit-ensemble (c$::transunit-ensemble-fix tunits) gin) (simpadd0-transunit-ensemble tunits gin)))
Theorem:
(defthm simpadd0-transunit-ensemble-transunit-ensemble-equiv-congruence-on-tunits (implies (c$::transunit-ensemble-equiv tunits tunits-equiv) (equal (simpadd0-transunit-ensemble tunits gin) (simpadd0-transunit-ensemble tunits-equiv gin))) :rule-classes :congruence)
Theorem:
(defthm simpadd0-transunit-ensemble-of-gin-fix-gin (equal (simpadd0-transunit-ensemble tunits (gin-fix gin)) (simpadd0-transunit-ensemble tunits gin)))
Theorem:
(defthm simpadd0-transunit-ensemble-gin-equiv-congruence-on-gin (implies (gin-equiv gin gin-equiv) (equal (simpadd0-transunit-ensemble tunits gin) (simpadd0-transunit-ensemble tunits gin-equiv))) :rule-classes :congruence)