From 1f53f0a4f74b0760646417ab111d740be37e6dc5 Mon Sep 17 00:00:00 2001 From: Ralf Jung <jung@mpi-sws.org> Date: Tue, 19 Apr 2016 17:39:03 +0200 Subject: [PATCH] some more playing around with the proof mode. --- heap_lang/lifting.v | 19 +++++++++++-------- program_logic/hoare.v | 2 +- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/heap_lang/lifting.v b/heap_lang/lifting.v index 3735ab340..07c50ce49 100644 --- a/heap_lang/lifting.v +++ b/heap_lang/lifting.v @@ -2,6 +2,7 @@ From iris.program_logic Require Export ectx_weakestpre. From iris.program_logic Require Import ownership. (* for ownP *) From iris.heap_lang Require Export lang. From iris.heap_lang Require Import tactics. +From iris.proofmode Require Import weakestpre. Import uPred. Local Hint Extern 0 (head_reducible _ _) => do_head_step eauto 2. @@ -32,14 +33,16 @@ Proof. ef = None ∧ e' = Loc l ∧ σ' = <[l:=v]>σ ∧ σ !! l = None). rewrite -(wp_lift_atomic_head_step (Alloc e) φ σ) // /φ; last (by intros; inv_head_step; eauto 8); last (by simpl; eauto). - apply sep_mono, later_mono; first done. - apply forall_intro=>v2; apply forall_intro=>σ2; apply forall_intro=>ef. - apply wand_intro_l. - rewrite always_and_sep_l -assoc -always_and_sep_l. - apply const_elim_l=>-[l [-> [Hl [-> ?]]]]. - rewrite (forall_elim l) right_id const_equiv // left_id wand_elim_r. - rewrite -(of_to_val (Loc l) (LocV l)) // in Hl. - by apply of_val_inj in Hl as ->. + iIntros "[HP HΦ]". iFrame "HP". iNext. + iIntros {v2 σ2 ef} "[% HP]". + (* FIXME: I should not have to refer to "H0". *) + destruct H0 as (l & -> & ? & -> & ?). + rewrite -(of_to_val (Loc l) (LocV l)) // in H0. + apply of_val_inj in H0 as ->. + simpl. iSplitL; last done. + (* FIXME: I should be able to do [iSpecialize "HΦ" l]. *) + (* FIXME: I should be able to do [iApply "HΦ" l]. *) + iApply "HΦ". iSplit; done. Qed. Lemma wp_load_pst E σ l v Φ : diff --git a/program_logic/hoare.v b/program_logic/hoare.v index 48eaeb379..7a0958c07 100644 --- a/program_logic/hoare.v +++ b/program_logic/hoare.v @@ -115,7 +115,7 @@ Proof. - iPvs "Hvs1" "HR" as "HR"; first by set_solver. iPvsIntro. iNext. iPvs "Hvs2" "HR" as "HR"; first by set_solver. iPvsIntro. iApply "HR". - - iApply "Hwp". done. + - iApply "Hwp" "HP". Qed. Lemma ht_frame_step_r E E1 E2 P R1 R2 R3 e Φ : -- GitLab