riscv refine: simplify setASIDPool_invs

Does not require valid_asid_pool in weakened invariant setting.
This commit is contained in:
Gerwin Klein 2019-07-07 13:42:19 +10:00
parent e46023fe12
commit e6da934e7d
1 changed files with 13 additions and 17 deletions

View File

@ -1336,13 +1336,10 @@ lemma storePTE_valid_objs[wp]:
done
lemma setASIDPool_valid_objs [wp]:
"\<lbrace>valid_objs' and valid_asid_pool' ap\<rbrace> setObject p (ap::asidpool) \<lbrace>\<lambda>_. valid_objs'\<rbrace>"
apply (rule hoare_pre)
apply (rule setObject_valid_objs')
prefer 2
apply assumption
apply (clarsimp simp: updateObject_default_def in_monad)
apply (clarsimp simp: valid_obj'_def)
"setObject p (ap::asidpool) \<lbrace>valid_objs'\<rbrace>"
apply (wp setObject_valid_objs'[where P=\<top>])
apply (clarsimp simp: updateObject_default_def in_monad valid_obj'_def)
apply simp
done
lemma setASIDPool_valid_mdb [wp]:
@ -1505,17 +1502,16 @@ lemma setObject_ap_ksDomScheduleIdx [wp]:
by (wp updateObject_default_inv|simp add:setObject_def | wpc)+
lemma setASIDPool_invs [wp]:
"\<lbrace>invs' and valid_asid_pool' ap\<rbrace> setObject p (ap::asidpool) \<lbrace>\<lambda>_. invs'\<rbrace>"
"setObject p (ap::asidpool) \<lbrace>invs'\<rbrace>"
apply (simp add: invs'_def valid_state'_def valid_pspace'_def)
apply (rule hoare_pre)
apply (wp sch_act_wf_lift valid_global_refs_lift' irqs_masked_lift
valid_arch_state_lift' valid_irq_node_lift
cur_tcb_lift valid_irq_handlers_lift''
untyped_ranges_zero_lift
updateObject_default_inv
| simp add: cteCaps_of_def
| rule setObject_ksPSpace_only)+
apply (clarsimp simp add: setObject_def o_def)
apply (wp sch_act_wf_lift valid_global_refs_lift' irqs_masked_lift
valid_arch_state_lift' valid_irq_node_lift
cur_tcb_lift valid_irq_handlers_lift''
untyped_ranges_zero_lift
updateObject_default_inv
| simp add: cteCaps_of_def
| rule setObject_ksPSpace_only)+
apply (clarsimp simp: o_def)
done
(* FIXME RISCV