Update the dynamic information for a variable or constant in a scope.
(update-var/const-dinfo-in-scope name info scope) → new-scope
We return `none' if no variable or constant with that name is found.
Note that this may turn a constant into a variable or vice versa. However, this operation is never used in that way.
Function:
(defun update-var/const-dinfo-in-scope (name info scope) (declare (xargs :guard (and (identifierp name) (var/const-dinfop info) (vcscope-dinfop scope)))) (let ((__function__ 'update-var/const-dinfo-in-scope)) (declare (ignorable __function__)) (if (consp (omap::assoc (identifier-fix name) (vcscope-dinfo-fix scope))) (vcscope-dinfo-option-some (omap::update (identifier-fix name) (var/const-dinfo-fix info) (vcscope-dinfo-fix scope))) (vcscope-dinfo-option-none))))
Theorem:
(defthm vcscope-dinfo-optionp-of-update-var/const-dinfo-in-scope (b* ((new-scope (update-var/const-dinfo-in-scope name info scope))) (vcscope-dinfo-optionp new-scope)) :rule-classes :rewrite)
Theorem:
(defthm update-var/const-dinfo-in-scope-of-identifier-fix-name (equal (update-var/const-dinfo-in-scope (identifier-fix name) info scope) (update-var/const-dinfo-in-scope name info scope)))
Theorem:
(defthm update-var/const-dinfo-in-scope-identifier-equiv-congruence-on-name (implies (identifier-equiv name name-equiv) (equal (update-var/const-dinfo-in-scope name info scope) (update-var/const-dinfo-in-scope name-equiv info scope))) :rule-classes :congruence)
Theorem:
(defthm update-var/const-dinfo-in-scope-of-var/const-dinfo-fix-info (equal (update-var/const-dinfo-in-scope name (var/const-dinfo-fix info) scope) (update-var/const-dinfo-in-scope name info scope)))
Theorem:
(defthm update-var/const-dinfo-in-scope-var/const-dinfo-equiv-congruence-on-info (implies (var/const-dinfo-equiv info info-equiv) (equal (update-var/const-dinfo-in-scope name info scope) (update-var/const-dinfo-in-scope name info-equiv scope))) :rule-classes :congruence)
Theorem:
(defthm update-var/const-dinfo-in-scope-of-vcscope-dinfo-fix-scope (equal (update-var/const-dinfo-in-scope name info (vcscope-dinfo-fix scope)) (update-var/const-dinfo-in-scope name info scope)))
Theorem:
(defthm update-var/const-dinfo-in-scope-vcscope-dinfo-equiv-congruence-on-scope (implies (vcscope-dinfo-equiv scope scope-equiv) (equal (update-var/const-dinfo-in-scope name info scope) (update-var/const-dinfo-in-scope name info scope-equiv))) :rule-classes :congruence)