Value denoted by an expression value.
(value-expr-to-value expr curve) → val
If the expression value is a literal, we evaluate it.
If it is a unary expression,
whose operator must be
If any of these evaluations fails, we return
Theorem:
(defthm return-type-of-value-expr-to-value.val (b* ((?val (value-expr-to-value expr curve))) (value-resultp val)) :rule-classes :rewrite)
Theorem:
(defthm return-type-of-value-expr-list-to-value-list.vals (b* ((?vals (value-expr-list-to-value-list exprs curve))) (value-list-resultp vals)) :rule-classes :rewrite)
Theorem:
(defthm value-expr-to-value-of-expression-fix-expr (equal (value-expr-to-value (expression-fix expr) curve) (value-expr-to-value expr curve)))
Theorem:
(defthm value-expr-to-value-of-curve-fix-curve (equal (value-expr-to-value expr (curve-fix curve)) (value-expr-to-value expr curve)))
Theorem:
(defthm value-expr-list-to-value-list-of-expression-list-fix-exprs (equal (value-expr-list-to-value-list (expression-list-fix exprs) curve) (value-expr-list-to-value-list exprs curve)))
Theorem:
(defthm value-expr-list-to-value-list-of-curve-fix-curve (equal (value-expr-list-to-value-list exprs (curve-fix curve)) (value-expr-list-to-value-list exprs curve)))
Theorem:
(defthm value-expr-to-value-expression-equiv-congruence-on-expr (implies (expression-equiv expr expr-equiv) (equal (value-expr-to-value expr curve) (value-expr-to-value expr-equiv curve))) :rule-classes :congruence)
Theorem:
(defthm value-expr-to-value-curve-equiv-congruence-on-curve (implies (curve-equiv curve curve-equiv) (equal (value-expr-to-value expr curve) (value-expr-to-value expr curve-equiv))) :rule-classes :congruence)
Theorem:
(defthm value-expr-list-to-value-list-expression-list-equiv-congruence-on-exprs (implies (expression-list-equiv exprs exprs-equiv) (equal (value-expr-list-to-value-list exprs curve) (value-expr-list-to-value-list exprs-equiv curve))) :rule-classes :congruence)
Theorem:
(defthm value-expr-list-to-value-list-curve-equiv-congruence-on-curve (implies (curve-equiv curve curve-equiv) (equal (value-expr-list-to-value-list exprs curve) (value-expr-list-to-value-list exprs curve-equiv))) :rule-classes :congruence)