(svex-call-simp fn args simp) → call
Function:
(defun svex-call-simp (fn args simp) (declare (xargs :guard (and (fnsym-p fn) (svexlist-p args) (svex-simpconfig-p simp)))) (let ((__function__ 'svex-call-simp)) (declare (ignorable __function__)) (let ((simp (svex-simpconfig-fix simp))) (case simp ((t) (svex-call* fn args)) ((nil) (svex-call fn args)) (otherwise (svex-rewrite-fncall simp -1 fn args t t))))))
Theorem:
(defthm svex-p-of-svex-call-simp (b* ((call (svex-call-simp fn args simp))) (svex-p call)) :rule-classes :rewrite)
Theorem:
(defthm svex-call-simp-correct (b* ((?call (svex-call-simp fn args simp))) (equal (svex-eval call env) (svex-eval (svex-call fn args) env))))
Theorem:
(defthm svex-call-simp-vars (b* ((?call (svex-call-simp fn args simp))) (implies (not (member v (svexlist-vars args))) (not (member v (svex-vars call))))))
Theorem:
(defthm svex-call-simp-of-fnsym-fix-fn (equal (svex-call-simp (fnsym-fix fn) args simp) (svex-call-simp fn args simp)))
Theorem:
(defthm svex-call-simp-fnsym-equiv-congruence-on-fn (implies (fnsym-equiv fn fn-equiv) (equal (svex-call-simp fn args simp) (svex-call-simp fn-equiv args simp))) :rule-classes :congruence)
Theorem:
(defthm svex-call-simp-of-svexlist-fix-args (equal (svex-call-simp fn (svexlist-fix args) simp) (svex-call-simp fn args simp)))
Theorem:
(defthm svex-call-simp-svexlist-equiv-congruence-on-args (implies (svexlist-equiv args args-equiv) (equal (svex-call-simp fn args simp) (svex-call-simp fn args-equiv simp))) :rule-classes :congruence)
Theorem:
(defthm svex-call-simp-of-svex-simpconfig-fix-simp (equal (svex-call-simp fn args (svex-simpconfig-fix simp)) (svex-call-simp fn args simp)))
Theorem:
(defthm svex-call-simp-svex-simpconfig-equiv-congruence-on-simp (implies (svex-simpconfig-equiv simp simp-equiv) (equal (svex-call-simp fn args simp) (svex-call-simp fn args simp-equiv))) :rule-classes :congruence)