Push information about a call onto the call stack of a dynamic environment.
(push-call-dinfo info env) → new-env
Function:
(defun push-call-dinfo (info env) (declare (xargs :guard (and (call-dinfop info) (denvp env)))) (let ((__function__ 'push-call-dinfo)) (declare (ignorable __function__)) (b* ((calls (denv->call-stack env)) (new-calls (cons info calls)) (new-env (change-denv env :call-stack new-calls))) new-env)))
Theorem:
(defthm denvp-of-push-call-dinfo (b* ((new-env (push-call-dinfo info env))) (denvp new-env)) :rule-classes :rewrite)
Theorem:
(defthm push-call-dinfo-of-call-dinfo-fix-info (equal (push-call-dinfo (call-dinfo-fix info) env) (push-call-dinfo info env)))
Theorem:
(defthm push-call-dinfo-call-dinfo-equiv-congruence-on-info (implies (call-dinfo-equiv info info-equiv) (equal (push-call-dinfo info env) (push-call-dinfo info-equiv env))) :rule-classes :congruence)
Theorem:
(defthm push-call-dinfo-of-denv-fix-env (equal (push-call-dinfo info (denv-fix env)) (push-call-dinfo info env)))
Theorem:
(defthm push-call-dinfo-denv-equiv-congruence-on-env (implies (denv-equiv env env-equiv) (equal (push-call-dinfo info env) (push-call-dinfo info env-equiv))) :rule-classes :congruence)