diff --git a/program_logic/hoare.v b/program_logic/hoare.v index 84346a0a095f8e860fe3c57343105cc5c1fb06a5..48eaeb379395842d8994cfe04251c0c4810d512f 100644 --- a/program_logic/hoare.v +++ b/program_logic/hoare.v @@ -112,12 +112,9 @@ Proof. iIntros {???} "[#Hvs1 [#Hvs2 #Hwp]] ! [HR HP]". iApply (wp_frame_step_l E E1 E2); try done. iSplitL "HR". - - (* TODO: Is there a way to do "apply Hvs1 in Hr"? *) - iPvs "Hvs1" "HR"; first by set_solver. - (* TODO: iApply pvs_intro? *) - rewrite -pvs_intro. - iNext. iPvs "Hvs2" "Hvs1"; first by set_solver. - rewrite -pvs_intro. done. + - 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. Qed. @@ -126,10 +123,10 @@ Lemma ht_frame_step_r E E1 E2 P R1 R2 R3 e Φ : ((R1 ={E1,E2}=> ▷ R2) ∧ (R2 ={E2,E1}=> R3) ∧ {{ P }} e @ E {{ Φ }}) ⊢ {{ R1 ★ P }} e @ (E ∪ E1) {{ λ v, Φ v ★ R3 }}. Proof. - iIntros {???} "[#Hvs1 [#Hvs2 #Hwp]]". + iIntros {???} "[Hvs1 [Hvs2 Hwp]]". setoid_rewrite (comm _ _ R3). - iApply ht_frame_step_l; try eassumption. iSplit; last iSplit; - iIntros "!"; done. + iApply ht_frame_step_l; try eassumption. + iSplit; last iSplit; done. Qed. Lemma ht_frame_step_l' E P R e Φ :