diff --git a/proof/refine/RISCV64/IpcCancel_R.thy b/proof/refine/RISCV64/IpcCancel_R.thy index d7e1f177ea..ed02829345 100644 --- a/proof/refine/RISCV64/IpcCancel_R.thy +++ b/proof/refine/RISCV64/IpcCancel_R.thy @@ -1051,8 +1051,7 @@ lemma scReplies_of_scTCB_update[simp]: crunch schedContextDonate for replies_of': "\s. P (replies_of' s)" (* this interfers with list_refs_of_replies' *) and scReplies_of[wp]: "\s. P' (scReplies_of s)" - (simp: crunch_simps wp: crunch_wps - rule: schedContextDonate_def[simplified updateSchedContext_def]) + (simp: crunch_simps wp: crunch_wps updateSchedContext_scReplies_of) lemma updateReply_replyNext_update_None: "\ \ \ diff --git a/proof/refine/RISCV64/KHeap_R.thy b/proof/refine/RISCV64/KHeap_R.thy index e1efe240eb..08b9475127 100644 --- a/proof/refine/RISCV64/KHeap_R.thy +++ b/proof/refine/RISCV64/KHeap_R.thy @@ -4900,6 +4900,12 @@ lemma setSchedContext_scReplies_of: apply (erule back_subst[where P=P], rule ext) by (clarsimp simp: opt_map_def) +lemma updateSchedContext_scReplies_of: + "(\sc. scReply (f sc) = scReply sc) \ updateSchedContext scPtr f \\s. P' (scReplies_of s)\" + apply (wpsimp simp: updateSchedContext_def wp: setSchedContext_scReplies_of) + apply (auto elim!: rsubst[where P=P'] simp: opt_map_def obj_at'_def) + done + lemma getObject_tcb_wp: "\\s. tcb_at' p s \ (\t::tcb. ko_at' t p s \ Q t s)\ getObject p \Q\" by (clarsimp simp: getObject_def valid_def in_monad