assert ((toRExp (Var Q x)) = Var R x) by (simpl; auto).
rewrite <- H3 in eval_float.
pose proof (validIntervalbounds_sound (Var Q x) A P (E:=fun y : nat => if y =? x then Some nR else E1 y) (vR:=nR) defVars bounds_valid (fVars := (NatSet.add x fVars))) as valid_bounds_prf.
rewrite absenv_var in valid_bounds_prf; simpl in valid_bounds_prf.
apply valid_bounds_prf; try auto.
- intros v v_mem_diff.
...
...
@@ -180,9 +180,9 @@ Proof.
+ apply IHapproxCEnv; try auto.
* constructor; auto.
* constructor; auto.
*introsv0m2mem_dVars.
specialize(dVars_soundv0m2mem_dVars).
destructdVars_soundas[vR0[mR0iv_sound_val]].
* intros v0 mem_dVars.
specialize (dVars_sound v0 mem_dVars).
destruct dVars_sound as [vR0 iv_sound_val].
case_eq (v0 =? x); intros case_mem;
rewrite case_mem in iv_sound_val; simpl in iv_sound_val.
{ rewrite Nat.eqb_eq in case_mem; subst.
...
...
@@ -191,7 +191,7 @@ Proof.
as x_in_union by (rewrite NatSet.union_spec; auto).