File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -86,6 +86,8 @@ let t_phoare_deno_r pre post tc =
8686
8787(* -------------------------------------------------------------------- *)
8888let t_ehoare_deno_r pre post tc =
89+ assert (pre.m = post.m);
90+ let m = pre.m in
8991 let env, _, concl = FApi. tc1_eflat tc in
9092
9193 let f, bd =
@@ -99,11 +101,11 @@ let t_ehoare_deno_r pre post tc =
99101
100102 let pr = destr_pr f in
101103 let concl_e = f_eHoareF pre pr.pr_fun post in
102- let mpr , mpo = EcEnv.Fun. hoareF_memenv pr.pr_mem pr.pr_fun env in
104+ let _ , mpo = EcEnv.Fun. hoareF_memenv m pr.pr_fun env in
103105 (* pre <= bd *)
104106 (* building the substitution for the pre *)
105- let sargs = PVM. add env pv_arg (fst mpr) pr.pr_args PVM. empty in
106- let smem = Fsubst. f_bind_mem Fsubst. f_subst_id (fst mpr) pr.pr_mem in
107+ let sargs = PVM. add env pv_arg m pr.pr_args PVM. empty in
108+ let smem = Fsubst. f_bind_mem Fsubst. f_subst_id m pr.pr_mem in
107109 let pre = Fsubst. f_subst smem (PVM. subst env sargs pre.inv) in
108110 let concl_pr = f_xreal_le pre (f_r2xr bd) in
109111
Original file line number Diff line number Diff line change 1+ require import AllCore Int Real Xreal.
2+
3+ module M = {
4+ proc main (x : int ) = {
5+ return x;
6+ }
7+ }.
8+
9+ lemma L &m (_x : int ):
10+ Pr [ M.main(_x) @ &m : _x = res ] <= 1%r.
11+ proof.
12+ byehoare (_: ((arg = _x) `|` (1 %xr)) ==> _) => // .
13+ - proc; auto => &hr.
14+ by apply xle_cxr_r => ->.
15+ qed.
16+
You can’t perform that action at this time.
0 commit comments