Extend a flattening environment with a constant.
(fenv-const-add const val env) → new-env
We return
Function:
(defun fenv-const-add (const val env) (declare (xargs :guard (and (identifierp const) (valuep val) (fenvp env)))) (let ((__function__ 'fenv-const-add)) (declare (ignorable __function__)) (b* ((const-env (fenv->constants env)) ((when (consp (omap::assoc (identifier-fix const) const-env))) nil) (new-const-env (omap::update (identifier-fix const) (value-fix val) const-env))) (change-fenv env :constants new-const-env))))
Theorem:
(defthm fenv-optionp-of-fenv-const-add (b* ((new-env (fenv-const-add const val env))) (fenv-optionp new-env)) :rule-classes :rewrite)
Theorem:
(defthm fenv-const-add-of-identifier-fix-const (equal (fenv-const-add (identifier-fix const) val env) (fenv-const-add const val env)))
Theorem:
(defthm fenv-const-add-identifier-equiv-congruence-on-const (implies (identifier-equiv const const-equiv) (equal (fenv-const-add const val env) (fenv-const-add const-equiv val env))) :rule-classes :congruence)
Theorem:
(defthm fenv-const-add-of-value-fix-val (equal (fenv-const-add const (value-fix val) env) (fenv-const-add const val env)))
Theorem:
(defthm fenv-const-add-value-equiv-congruence-on-val (implies (value-equiv val val-equiv) (equal (fenv-const-add const val env) (fenv-const-add const val-equiv env))) :rule-classes :congruence)
Theorem:
(defthm fenv-const-add-of-fenv-fix-env (equal (fenv-const-add const val (fenv-fix env)) (fenv-const-add const val env)))
Theorem:
(defthm fenv-const-add-fenv-equiv-congruence-on-env (implies (fenv-equiv env env-equiv) (equal (fenv-const-add const val env) (fenv-const-add const val env-equiv))) :rule-classes :congruence)