(cgraph-derive-assignments-for-vars
x vals assigns sts env$ cgraph
replimit &optional (logicman 'logicman)
(bvar-db 'bvar-db)
(state 'state))
→
(mv new-vals new-assigns new-sts)Function:
(defun cgraph-derive-assignments-for-vars-fn (x vals assigns sts env$ cgraph replimit logicman bvar-db state) (declare (xargs :stobjs (env$ logicman bvar-db state))) (declare (xargs :guard (and (pseudo-var-list-p x) (obj-alist-p vals) (cgraph-alist-p assigns) (cgraph-derivstates-p sts) (cgraph-p cgraph) (posp replimit)))) (declare (xargs :guard (and (bfr-env$-p env$ (logicman->bfrstate)) (equal (bfr-nvars) (next-bvar bvar-db)) (lbfr-listp (cgraph-bfrlist cgraph))))) (let ((__function__ 'cgraph-derive-assignments-for-vars)) (declare (ignorable __function__)) (b* (((when (atom x)) (mv (obj-alist-fix vals) (cgraph-alist-fix assigns) (cgraph-derivstates-fix sts))) (obj (g-var (car x))) ((mv assigns sts) (cgraph-derive-assignments-obj obj assigns sts env$ cgraph replimit)) (pair (hons-get obj assigns)) (vals (if pair (cons (cons (pseudo-var-fix (car x)) (cgraph-value->val (cdr pair))) vals) vals))) (cgraph-derive-assignments-for-vars (cdr x) vals assigns sts env$ cgraph replimit))))
Theorem:
(defthm obj-alist-p-of-cgraph-derive-assignments-for-vars.new-vals (b* (((mv ?new-vals ?new-assigns ?new-sts) (cgraph-derive-assignments-for-vars-fn x vals assigns sts env$ cgraph replimit logicman bvar-db state))) (obj-alist-p new-vals)) :rule-classes :rewrite)
Theorem:
(defthm cgraph-alist-p-of-cgraph-derive-assignments-for-vars.new-assigns (b* (((mv ?new-vals ?new-assigns ?new-sts) (cgraph-derive-assignments-for-vars-fn x vals assigns sts env$ cgraph replimit logicman bvar-db state))) (cgraph-alist-p new-assigns)) :rule-classes :rewrite)
Theorem:
(defthm cgraph-derivstates-p-of-cgraph-derive-assignments-for-vars.new-sts (b* (((mv ?new-vals ?new-assigns ?new-sts) (cgraph-derive-assignments-for-vars-fn x vals assigns sts env$ cgraph replimit logicman bvar-db state))) (cgraph-derivstates-p new-sts)) :rule-classes :rewrite)
Theorem:
(defthm cgraph-derive-assignments-for-vars-fn-of-pseudo-var-list-fix-x (equal (cgraph-derive-assignments-for-vars-fn (pseudo-var-list-fix x) vals assigns sts env$ cgraph replimit logicman bvar-db state) (cgraph-derive-assignments-for-vars-fn x vals assigns sts env$ cgraph replimit logicman bvar-db state)))
Theorem:
(defthm cgraph-derive-assignments-for-vars-fn-pseudo-var-list-equiv-congruence-on-x (implies (pseudo-var-list-equiv x x-equiv) (equal (cgraph-derive-assignments-for-vars-fn x vals assigns sts env$ cgraph replimit logicman bvar-db state) (cgraph-derive-assignments-for-vars-fn x-equiv vals assigns sts env$ cgraph replimit logicman bvar-db state))) :rule-classes :congruence)
Theorem:
(defthm cgraph-derive-assignments-for-vars-fn-of-obj-alist-fix-vals (equal (cgraph-derive-assignments-for-vars-fn x (obj-alist-fix vals) assigns sts env$ cgraph replimit logicman bvar-db state) (cgraph-derive-assignments-for-vars-fn x vals assigns sts env$ cgraph replimit logicman bvar-db state)))
Theorem:
(defthm cgraph-derive-assignments-for-vars-fn-obj-alist-equiv-congruence-on-vals (implies (obj-alist-equiv vals vals-equiv) (equal (cgraph-derive-assignments-for-vars-fn x vals assigns sts env$ cgraph replimit logicman bvar-db state) (cgraph-derive-assignments-for-vars-fn x vals-equiv assigns sts env$ cgraph replimit logicman bvar-db state))) :rule-classes :congruence)
Theorem:
(defthm cgraph-derive-assignments-for-vars-fn-of-cgraph-alist-fix-assigns (equal (cgraph-derive-assignments-for-vars-fn x vals (cgraph-alist-fix assigns) sts env$ cgraph replimit logicman bvar-db state) (cgraph-derive-assignments-for-vars-fn x vals assigns sts env$ cgraph replimit logicman bvar-db state)))
Theorem:
(defthm cgraph-derive-assignments-for-vars-fn-cgraph-alist-equiv-congruence-on-assigns (implies (cgraph-alist-equiv assigns assigns-equiv) (equal (cgraph-derive-assignments-for-vars-fn x vals assigns sts env$ cgraph replimit logicman bvar-db state) (cgraph-derive-assignments-for-vars-fn x vals assigns-equiv sts env$ cgraph replimit logicman bvar-db state))) :rule-classes :congruence)
Theorem:
(defthm cgraph-derive-assignments-for-vars-fn-of-cgraph-derivstates-fix-sts (equal (cgraph-derive-assignments-for-vars-fn x vals assigns (cgraph-derivstates-fix sts) env$ cgraph replimit logicman bvar-db state) (cgraph-derive-assignments-for-vars-fn x vals assigns sts env$ cgraph replimit logicman bvar-db state)))
Theorem:
(defthm cgraph-derive-assignments-for-vars-fn-cgraph-derivstates-equiv-congruence-on-sts (implies (cgraph-derivstates-equiv sts sts-equiv) (equal (cgraph-derive-assignments-for-vars-fn x vals assigns sts env$ cgraph replimit logicman bvar-db state) (cgraph-derive-assignments-for-vars-fn x vals assigns sts-equiv env$ cgraph replimit logicman bvar-db state))) :rule-classes :congruence)
Theorem:
(defthm cgraph-derive-assignments-for-vars-fn-of-cgraph-fix-cgraph (equal (cgraph-derive-assignments-for-vars-fn x vals assigns sts env$ (cgraph-fix cgraph) replimit logicman bvar-db state) (cgraph-derive-assignments-for-vars-fn x vals assigns sts env$ cgraph replimit logicman bvar-db state)))
Theorem:
(defthm cgraph-derive-assignments-for-vars-fn-cgraph-equiv-congruence-on-cgraph (implies (cgraph-equiv cgraph cgraph-equiv) (equal (cgraph-derive-assignments-for-vars-fn x vals assigns sts env$ cgraph replimit logicman bvar-db state) (cgraph-derive-assignments-for-vars-fn x vals assigns sts env$ cgraph-equiv replimit logicman bvar-db state))) :rule-classes :congruence)
Theorem:
(defthm cgraph-derive-assignments-for-vars-fn-of-pos-fix-replimit (equal (cgraph-derive-assignments-for-vars-fn x vals assigns sts env$ cgraph (pos-fix replimit) logicman bvar-db state) (cgraph-derive-assignments-for-vars-fn x vals assigns sts env$ cgraph replimit logicman bvar-db state)))
Theorem:
(defthm cgraph-derive-assignments-for-vars-fn-pos-equiv-congruence-on-replimit (implies (acl2::pos-equiv replimit replimit-equiv) (equal (cgraph-derive-assignments-for-vars-fn x vals assigns sts env$ cgraph replimit logicman bvar-db state) (cgraph-derive-assignments-for-vars-fn x vals assigns sts env$ cgraph replimit-equiv logicman bvar-db state))) :rule-classes :congruence)