Commit 87e74ade authored by Heiko Becker's avatar Heiko Becker

Show stronger soundness in Error validator

parent 604e29ed
This diff is collapsed.
...@@ -394,19 +394,18 @@ For each evaluation of using an arbitrary epsilon, we can replace it by ...@@ -394,19 +394,18 @@ For each evaluation of using an arbitrary epsilon, we can replace it by
evaluating the subexpressions and then binding the result values to different evaluating the subexpressions and then binding the result values to different
variables in the Environment. variables in the Environment.
**) **)
Lemma binary_unfolding b f1 f2 E v1 v2 m1 m2 Gamma: Lemma binary_unfolding b f1 f2 E v1 v2 m1 m2 Gamma delta:
(b = Div -> ~(v2 = 0 )%R) -> (b = Div -> ~(v2 = 0 )%R) ->
(Rabs delta <= Q2R (mTypeToQ (join m1 m2)))%R ->
eval_exp E Gamma f1 v1 m1 -> eval_exp E Gamma f1 v1 m1 ->
eval_exp E Gamma f2 v2 m2 -> eval_exp E Gamma f2 v2 m2 ->
eval_exp E Gamma (Binop b f1 f2) (perturb (evalBinop b v1 v2) (Q2R (mTypeToQ (join m1 m2)))) (join m1 m2) -> eval_exp E Gamma (Binop b f1 f2) (perturb (evalBinop b v1 v2) delta) (join m1 m2) ->
eval_exp (updEnv 2 v2 (updEnv 1 v1 emptyEnv)) eval_exp (updEnv 2 v2 (updEnv 1 v1 emptyEnv))
(updDefVars 2 m2 (updDefVars 1 m1 Gamma)) (updDefVars 2 m2 (updDefVars 1 m1 Gamma))
(Binop b (Var R 1) (Var R 2)) (perturb (evalBinop b v1 v2) (Q2R (mTypeToQ (join m1 m2)))) (join m1 m2). (Binop b (Var R 1) (Var R 2)) (perturb (evalBinop b v1 v2) delta) (join m1 m2).
Proof. Proof.
intros no_div_zero eval_f1 eval_f2 eval_float. intros no_div_zero eval_f1 eval_f2 eval_float.
econstructor; try auto. econstructor; try auto.
rewrite Rabs_right; try lra.
auto using Rle_ge, mTypeToQ_pos_R.
Qed. Qed.
(* (*
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment