Skip to content

Commit 6392cc3

Browse files
committed
fix the free memory of the second goal of byehoare
1 parent b46c8c7 commit 6392cc3

2 files changed

Lines changed: 21 additions & 3 deletions

File tree

src/phl/ecPhlDeno.ml

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,8 @@ let t_phoare_deno_r pre post tc =
8686

8787
(* -------------------------------------------------------------------- *)
8888
let 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

tests/byehoare-arg.ec

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
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+

0 commit comments

Comments
 (0)