Commit 5cb8bc17 authored by Ralf Jung's avatar Ralf Jung
Browse files

Merge branch 'robbert/twp_vals_compare_safe' into 'master'

Also use `solve_vals_compare_safe` in TWP case of `wp_pure`.

See merge request !444
parents a5eb66d3 91cc6ffc
Pipeline #28268 passed with stage
in 21 minutes and 52 seconds
...@@ -121,6 +121,23 @@ Section tests. ...@@ -121,6 +121,23 @@ Section tests.
WP let: "x" := Pred #42 in Pred "x" @ E [{ v, v = #40 }]. WP let: "x" := Pred #42 in Pred "x" @ E [{ v, v = #40 }].
Proof. iIntros "". wp_apply Pred_spec. by wp_apply Pred_spec. Qed. Proof. iIntros "". wp_apply Pred_spec. by wp_apply Pred_spec. Qed.
Definition Id : val :=
rec: "go" "x" :=
if: "x" = #0 then #() else "go" ("x" - #1).
(** These tests specially test the handling of the [vals_compare_safe]
side-condition of the [=] operator. *)
Lemma Id_wp (n : nat) : WP Id #n {{ v, v = #() }}.
Proof.
iInduction n as [|n] "IH"; wp_rec; wp_pures; first done.
by replace (S n - 1) with (n:Z) by lia.
Qed.
Lemma Id_twp (n : nat) : WP Id #n [{ v, v = #() }].
Proof.
iInduction n as [|n] "IH"; wp_rec; wp_pures; first done.
by replace (S n - 1) with (n:Z) by lia.
Qed.
Lemma wp_apply_evar e P : Lemma wp_apply_evar e P :
P - ( Q Φ, Q - WP e {{ Φ }}) - WP e {{ _, True }}. P - ( Q Φ, Q - WP e {{ Φ }}) - WP e {{ _, True }}.
Proof. iIntros "HP HW". wp_apply "HW". iExact "HP". Qed. Proof. iIntros "HP HW". wp_apply "HW". iExact "HP". Qed.
......
...@@ -97,7 +97,7 @@ Tactic Notation "wp_pure" open_constr(efoc) := ...@@ -97,7 +97,7 @@ Tactic Notation "wp_pure" open_constr(efoc) :=
unify e' efoc; unify e' efoc;
eapply (tac_twp_pure _ _ _ (fill K e')); eapply (tac_twp_pure _ _ _ (fill K e'));
[iSolveTC (* PureExec *) [iSolveTC (* PureExec *)
|try fast_done (* The pure condition for PureExec *) |try solve_vals_compare_safe (* The pure condition for PureExec *)
|wp_finish (* new goal *) |wp_finish (* new goal *)
]) ])
|| fail "wp_pure: cannot find" efoc "in" e "or" efoc "is not a redex" || fail "wp_pure: cannot find" efoc "in" e "or" efoc "is not a redex"
......
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