Evaluate an output expression.
(eval-output-expression outexpr curve) → val
Function:
(defun eval-output-expression (outexpr curve) (declare (xargs :guard (and (output-expressionp outexpr) (curvep curve)))) (let ((__function__ 'eval-output-expression)) (declare (ignorable __function__)) (b* ((expr (output-expression->get outexpr)) ((unless (expression-valuep expr)) (reserrf (list :not-value-expression expr)))) (value-expr-to-value expr curve))))
Theorem:
(defthm value-resultp-of-eval-output-expression (b* ((val (eval-output-expression outexpr curve))) (value-resultp val)) :rule-classes :rewrite)
Theorem:
(defthm eval-output-expression-of-output-expression-fix-outexpr (equal (eval-output-expression (output-expression-fix outexpr) curve) (eval-output-expression outexpr curve)))
Theorem:
(defthm eval-output-expression-output-expression-equiv-congruence-on-outexpr (implies (output-expression-equiv outexpr outexpr-equiv) (equal (eval-output-expression outexpr curve) (eval-output-expression outexpr-equiv curve))) :rule-classes :congruence)
Theorem:
(defthm eval-output-expression-of-curve-fix-curve (equal (eval-output-expression outexpr (curve-fix curve)) (eval-output-expression outexpr curve)))
Theorem:
(defthm eval-output-expression-curve-equiv-congruence-on-curve (implies (curve-equiv curve curve-equiv) (equal (eval-output-expression outexpr curve) (eval-output-expression outexpr curve-equiv))) :rule-classes :congruence)