(svjumpstate-merge-svstate-branches cond thencond elsecond thenst elsest) → merged-st
Function:
(defun svjumpstate-merge-svstate-branches (cond thencond elsecond thenst elsest) (declare (xargs :guard (and (svex-p cond) (svex-p thencond) (svex-p elsecond) (svstate-p thenst) (svstate-p elsest)))) (let ((__function__ 'svjumpstate-merge-svstate-branches)) (declare (ignorable __function__)) (b* ((thencond (svex-fix thencond)) (elsecond (svex-fix elsecond)) (thenst (svstate-fix thenst)) (elsest (svstate-fix elsest)) ((when (eql 0 elsecond)) thenst) ((when (eql 0 thencond)) elsest)) (svstate-merge-branches cond thenst elsest))))
Theorem:
(defthm svstate-p-of-svjumpstate-merge-svstate-branches (b* ((merged-st (svjumpstate-merge-svstate-branches cond thencond elsecond thenst elsest))) (svstate-p merged-st)) :rule-classes :rewrite)
Theorem:
(defthm vars-of-svjumpstate-merge-svstate-branches (b* ((?merged-st (svjumpstate-merge-svstate-branches cond thencond elsecond thenst elsest))) (implies (and (svstates-compatible thenst elsest) (not (member v (svex-vars cond))) (not (member v (svstate-vars thenst))) (not (member v (svstate-vars elsest)))) (not (member v (svstate-vars merged-st))))))
Theorem:
(defthm svjumpstate-merge-svstate-branches-preserves-compatible (b* ((?merged-st (svjumpstate-merge-svstate-branches cond thencond elsecond thenst elsest))) (implies (svstates-compatible thenst elsest) (svstates-compatible merged-st thenst))))
Theorem:
(defthm svjumpstate-merge-svstate-branches-of-svex-fix-cond (equal (svjumpstate-merge-svstate-branches (svex-fix cond) thencond elsecond thenst elsest) (svjumpstate-merge-svstate-branches cond thencond elsecond thenst elsest)))
Theorem:
(defthm svjumpstate-merge-svstate-branches-svex-equiv-congruence-on-cond (implies (svex-equiv cond cond-equiv) (equal (svjumpstate-merge-svstate-branches cond thencond elsecond thenst elsest) (svjumpstate-merge-svstate-branches cond-equiv thencond elsecond thenst elsest))) :rule-classes :congruence)
Theorem:
(defthm svjumpstate-merge-svstate-branches-of-svex-fix-thencond (equal (svjumpstate-merge-svstate-branches cond (svex-fix thencond) elsecond thenst elsest) (svjumpstate-merge-svstate-branches cond thencond elsecond thenst elsest)))
Theorem:
(defthm svjumpstate-merge-svstate-branches-svex-equiv-congruence-on-thencond (implies (svex-equiv thencond thencond-equiv) (equal (svjumpstate-merge-svstate-branches cond thencond elsecond thenst elsest) (svjumpstate-merge-svstate-branches cond thencond-equiv elsecond thenst elsest))) :rule-classes :congruence)
Theorem:
(defthm svjumpstate-merge-svstate-branches-of-svex-fix-elsecond (equal (svjumpstate-merge-svstate-branches cond thencond (svex-fix elsecond) thenst elsest) (svjumpstate-merge-svstate-branches cond thencond elsecond thenst elsest)))
Theorem:
(defthm svjumpstate-merge-svstate-branches-svex-equiv-congruence-on-elsecond (implies (svex-equiv elsecond elsecond-equiv) (equal (svjumpstate-merge-svstate-branches cond thencond elsecond thenst elsest) (svjumpstate-merge-svstate-branches cond thencond elsecond-equiv thenst elsest))) :rule-classes :congruence)
Theorem:
(defthm svjumpstate-merge-svstate-branches-of-svstate-fix-thenst (equal (svjumpstate-merge-svstate-branches cond thencond elsecond (svstate-fix thenst) elsest) (svjumpstate-merge-svstate-branches cond thencond elsecond thenst elsest)))
Theorem:
(defthm svjumpstate-merge-svstate-branches-svstate-equiv-congruence-on-thenst (implies (svstate-equiv thenst thenst-equiv) (equal (svjumpstate-merge-svstate-branches cond thencond elsecond thenst elsest) (svjumpstate-merge-svstate-branches cond thencond elsecond thenst-equiv elsest))) :rule-classes :congruence)
Theorem:
(defthm svjumpstate-merge-svstate-branches-of-svstate-fix-elsest (equal (svjumpstate-merge-svstate-branches cond thencond elsecond thenst (svstate-fix elsest)) (svjumpstate-merge-svstate-branches cond thencond elsecond thenst elsest)))
Theorem:
(defthm svjumpstate-merge-svstate-branches-svstate-equiv-congruence-on-elsest (implies (svstate-equiv elsest elsest-equiv) (equal (svjumpstate-merge-svstate-branches cond thencond elsecond thenst elsest) (svjumpstate-merge-svstate-branches cond thencond elsecond thenst elsest-equiv))) :rule-classes :congruence)