Skip to content

Commit 54c1911

Browse files
committed
PR: #Pre/#Post meta vars in conseq
1 parent de800c1 commit 54c1911

File tree

1 file changed

+42
-6
lines changed

1 file changed

+42
-6
lines changed

src/phl/ecPhlConseq.ml

Lines changed: 42 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1521,9 +1521,22 @@ let process_conseq_2 notmod ((info1, info2, info3) : conseq_ppterm option tuple3
15211521
| _ -> tc_error !!tc "conseq: not a phl/prhl judgement"
15221522
in
15231523

1524+
let mv =
1525+
let pre, post = match concl.f_node with
1526+
| FeHoareS hs -> (ehs_pr hs).inv, (ehs_po hs).inv
1527+
| FeHoareF hf -> (ehf_pr hf).inv, (ehf_po hf).inv
1528+
| FbdHoareS bhs -> (bhs_pr bhs).inv, (bhs_po bhs).inv
1529+
| FbdHoareF bhf -> (bhf_pr bhf).inv, (bhf_po bhf).inv
1530+
| FequivF ef -> (ef_pr ef).inv, (ef_po ef).inv
1531+
| FequivS es -> (es_pr es).inv, (es_po es).inv
1532+
| _ -> tc_error !!tc "conseq: not a phl/prhl judgement" (* Match error above *)
1533+
in
1534+
EcSymbols.Msym.of_list [("pre", pre); ("post", post)]
1535+
in
1536+
15241537
ensure_none_poe poe;
1525-
let pre = pre |> omap (TTC.pf_process_form !!tc penv ty) |> odfl (inv_of_inv gpre) in
1526-
let post = post |> omap (TTC.pf_process_form !!tc qenv ty) |> odfl (inv_of_inv gpost) in
1538+
let pre = pre |> omap (TTC.pf_process_form !!tc ~mv penv ty) |> odfl (inv_of_inv gpre) in
1539+
let post = post |> omap (TTC.pf_process_form !!tc ~mv qenv ty) |> odfl (inv_of_inv gpost) in
15271540

15281541
let (pre, post, bd) = match gpre, gpost with
15291542
| Inv_ss gpre, Inv_ss gpost ->
@@ -1700,8 +1713,18 @@ let process_conseq_1 notmod ((info1, info2, info3) : conseq_ppterm option tuple3
17001713
| _ -> tc_error !!tc "conseq: not a phl/prhl judgement"
17011714
in
17021715

1703-
let pre = pre |> omap (TTC.pf_process_form !!tc penv ty) |> odfl (inv_of_inv gpre) in
1704-
let post = post |> omap (TTC.pf_process_form !!tc qenv ty) in
1716+
let mv =
1717+
let pre, post = match concl.f_node with
1718+
| FhoareS hs -> (hs_pr hs).inv, (hs_po hs).hsi_inv.main
1719+
| FhoareF hf -> (hf_pr hf).inv, (hf_po hf).hsi_inv.main
1720+
| _ -> tc_error !!tc "conseq: not a phl/prhl judgement" (* Matching above error message *)
1721+
in
1722+
EcSymbols.Msym.of_list [("pre", pre); ("post", post)]
1723+
in
1724+
1725+
1726+
let pre = pre |> omap (TTC.pf_process_form !!tc ~mv penv ty) |> odfl (inv_of_inv gpre) in
1727+
let post = post |> omap (TTC.pf_process_form !!tc ~mv qenv ty) in
17051728
let poe = poe |> omap (TTC.pf_process_poe env_e) in
17061729

17071730
let (pre, post, bd) = match gpre, gpost with
@@ -1756,8 +1779,21 @@ let process_conseq_1 notmod ((info1, info2, info3) : conseq_ppterm option tuple3
17561779
| _ -> tc_error !!tc "conseq: not a phl/prhl judgement"
17571780
in
17581781

1759-
let pre = pre |> omap (TTC.pf_process_form !!tc penv ty) |> odfl (inv_of_inv gpre) in
1760-
let post = post |> omap (TTC.pf_process_form !!tc qenv ty) in
1782+
let mv =
1783+
let pre, post = match concl.f_node with
1784+
| FhoareS hs -> (hs_pr hs).inv, (hs_po hs).hsi_inv.main
1785+
| FhoareF hf -> (hf_pr hf).inv, (hf_po hf).hsi_inv.main
1786+
| _ -> tc_error !!tc "conseq: not a phl/prhl judgement" (* Matching above error message *)
1787+
in
1788+
EcSymbols.Msym.of_list [
1789+
("pre", pre);
1790+
("post", post)
1791+
]
1792+
in
1793+
1794+
1795+
let pre = pre |> omap (TTC.pf_process_form !!tc ~mv penv ty) |> odfl (inv_of_inv gpre) in
1796+
let post = post |> omap (TTC.pf_process_form !!tc ~mv qenv ty) in
17611797
let poe = poe |> omap (TTC.pf_process_poe env_e) in
17621798

17631799
let (pre, post, bd) = match gpre, gpost with

0 commit comments

Comments
 (0)