mark_object_invL_def: shows "mark_object_invL = (\<lambda>s. (at p (l @ ''_mo_null'') s \<longrightarrow> True) \<and> (at p (l @ ''_mo_mark'') s \<longrightarrow> ref (s\<down> p) \<noteq> None \<and> obj_at (\<lambda>s. True) ((the \<circ> (\<lambda>s. ref (s p))) s\<down>) s\<down>) \<and> (at p (l @ ''_mo_fM'') s \<longrightarrow> (ref (s\<down> p) \<noteq> None \<and> obj_at (\<lambda>s. True) ((the \<circ> (\<lambda>s. ref (s p))) s\<down>) s\<down>) \<and> (p_ph_enabled s\<down> \<longrightarrow> mark (s\<down> p) \<noteq> None \<and> (obj_at (\<lambda>obj. Some (obj_mark obj) = mark (s\<down> p)) ((the \<circ> (\<lambda>s. ref (s p))) s\<down>) s\<down> \<or> marked ((the \<circ> (\<lambda>s. ref (s p))) s\<down>) s\<down>))) \<and> (at p (l @ ''_mo_mtest'') s \<longrightarrow> (ref (s\<down> p) \<noteq> None \<and> obj_at (\<lambda>s. True) ((the \<circ> (\<lambda>s. ref (s p))) s\<down>) s\<down>) \<and> (p_ph_enabled s\<down> \<longrightarrow> (mark (s\<down> p) \<noteq> None \<and> (obj_at (\<lambda>obj. Some (obj_mark obj) = mark (s\<down> p)) ((the \<circ> (\<lambda>s. ref (s p))) s\<down>) s\<down> \<or> marked ((the \<circ> (\<lambda>s. ref (s p))) s\<down>) s\<down>)) \<and> fM (s\<down> p) = sys_fM s\<down>)) \<and> (at p (l @ ''_mo_phase'') s \<longrightarrow> (ref (s\<down> p) \<noteq> None \<and> obj_at (\<lambda>s. True) ((the \<circ> (\<lambda>s. ref (s p))) s\<down>) s\<down>) \<and> mark (s\<down> p) \<noteq> (Some \<circ> (\<lambda>s. fM (s p))) s\<down> \<and> (p_ph_enabled s\<down> \<longrightarrow> (mark (s\<down> p) \<noteq> None \<and> (obj_at (\<lambda>obj. Some (obj_mark obj) = mark (s\<down> p)) ((the \<circ> (\<lambda>s. ref (s p))) s\<down>) s\<down> \<or> marked ((the \<circ> (\<lambda>s. ref (s p))) s\<down>) s\<down>)) \<and> fM (s\<down> p) = sys_fM s\<down>)) \<and> (at p (l @ ''_mo_ptest'') s \<longrightarrow> (ref (s\<down> p) \<noteq> None \<and> obj_at (\<lambda>s. True) ((the \<circ> (\<lambda>s. ref (s p))) s\<down>) s\<down>) \<and> mark (s\<down> p) \<noteq> (Some \<circ> (\<lambda>s. fM (s p))) s\<down> \<and> (p_ph_enabled s\<down> \<longrightarrow> (mark (s\<down> p) \<noteq> None \<and> (obj_at (\<lambda>obj. Some (obj_mark obj) = mark (s\<down> p)) ((the \<circ> (\<lambda>s. ref (s p))) s\<down>) s\<down> \<or> marked ((the \<circ> (\<lambda>s. ref (s p))) s\<down>) s\<down>)) \<and> fM (s\<down> p) = sys_fM s\<down>)) \<and> (at p (l @ ''_mo_co_lock'') s \<longrightarrow> (ref (s\<down> p) \<noteq> None \<and> obj_at (\<lambda>s. True) ((the \<circ> (\<lambda>s. ref (s p))) s\<down>) s\<down>) \<and> (mark (s\<down> p) \<noteq> None \<and> (obj_at (\<lambda>obj. Some (obj_mark obj) = mark (s\<down> p)) ((the \<circ> (\<lambda>s. ref (s p))) s\<down>) s\<down> \<or> marked ((the \<circ> (\<lambda>s. ref (s p))) s\<down>) s\<down>)) \<and> fM (s\<down> p) = sys_fM s\<down> \<and> mark (s\<down> p) \<noteq> (Some \<circ> (\<lambda>s. fM (s p))) s\<down> \<and> filter is_mw_Mark (sys_mem_store_buffers p s\<down>) = []) \<and> (at p (l @ ''_mo_co_cmark'') s \<longrightarrow> (ref (s\<down> p) \<noteq> None \<and> obj_at (\<lambda>s. True) ((the \<circ> (\<lambda>s. ref (s p))) s\<down>) s\<down>) \<and> (mark (s\<down> p) \<noteq> None \<and> (obj_at (\<lambda>obj. Some (obj_mark obj) = mark (s\<down> p)) ((the \<circ> (\<lambda>s. ref (s p))) s\<down>) s\<down> \<or> marked ((the \<circ> (\<lambda>s. ref (s p))) s\<down>) s\<down>)) \<and> fM (s\<down> p) = sys_fM s\<down> \<and> mark (s\<down> p) \<noteq> (Some \<circ> (\<lambda>s. fM (s p))) s\<down> \<and> filter is_mw_Mark (sys_mem_store_buffers p s\<down>) = []) \<and> (at p (l @ ''_mo_co_ctest'') s \<longrightarrow> (ref (s\<down> p) \<noteq> None \<and> obj_at (\<lambda>s. True) ((the \<circ> (\<lambda>s. ref (s p))) s\<down>) s\<down>) \<and> (mark (s\<down> p) \<noteq> None \<and> (obj_at (\<lambda>obj. Some (obj_mark obj) = mark (s\<down> p)) ((the \<circ> (\<lambda>s. ref (s p))) s\<down>) s\<down> \<or> marked ((the \<circ> (\<lambda>s. ref (s p))) s\<down>) s\<down>)) \<and> fM (s\<down> p) = sys_fM s\<down> \<and> mark (s\<down> p) \<noteq> (Some \<circ> (\<lambda>s. fM (s p))) s\<down> \<and> obj_at (\<lambda>obj. Some (obj_mark obj) = cas_mark (s\<down> p)) ((the \<circ> (\<lambda>s. ref (s p))) s\<down>) s\<down> \<and> filter is_mw_Mark (sys_mem_store_buffers p s\<down>) = []) \<and> (at p (l @ ''_mo_co_mark'') s \<longrightarrow> cas_mark (s\<down> p) = mark (s\<down> p) \<and> (ref (s\<down> p) \<noteq> None \<and> obj_at (\<lambda>s. True) ((the \<circ> (\<lambda>s. ref (s p))) s\<down>) s\<down>) \<and> fM (s\<down> p) = sys_fM s\<down> \<and> white ((the \<circ> (\<lambda>s. ref (s p))) s\<down>) s\<down> \<and> filter is_mw_Mark (sys_mem_store_buffers p s\<down>) = []) \<and> (at p (l @ ''_mo_co_unlock'') s \<longrightarrow> (if cas_mark (s\<down> p) = mark (s\<down> p) then ghost_honorary_grey (s\<down> p) = {(the \<circ> (\<lambda>s. ref (s p))) s\<down>} else ghost_honorary_grey (s\<down> p) = {}) \<and> (ref (s\<down> p) \<noteq> None \<and> obj_at (\<lambda>s. True) ((the \<circ> (\<lambda>s. ref (s p))) s\<down>) s\<down>) \<and> fM (s\<down> p) = sys_fM s\<down> \<and> (cas_mark (s\<down> p) \<noteq> mark (s\<down> p) \<or> filter is_mw_Mark (sys_mem_store_buffers p s\<down>) = [] \<longrightarrow> marked ((the \<circ> (\<lambda>s. ref (s p))) s\<down>) s\<down>) \<and> filter is_mw_Mark (sys_mem_store_buffers p s\<down>) \<in> {[], [mw_Mark ((the \<circ> (\<lambda>s. ref (s p))) s\<down>) (fM (s\<down> p))]}) \<and> (at p (l @ ''_mo_co_won'') s \<longrightarrow> (if cas_mark (s\<down> p) = mark (s\<down> p) then ghost_honorary_grey (s\<down> p) = {(the \<circ> (\<lambda>s. ref (s p))) s\<down>} else ghost_honorary_grey (s\<down> p) = {}) \<and> (ref (s\<down> p) \<noteq> None \<and> obj_at (\<lambda>s. True) ((the \<circ> (\<lambda>s. ref (s p))) s\<down>) s\<down>) \<and> fM (s\<down> p) = sys_fM s\<down> \<and> marked ((the \<circ> (\<lambda>s. ref (s p))) s\<down>) s\<down> \<and> filter (\<lambda>s. is_mw_Mutate s \<or> is_mw_Mutate_Payload s) (sys_mem_store_buffers p s\<down>) = []) \<and> (at p (l @ ''_mo_co_W'') s \<longrightarrow> ghost_honorary_grey (s\<down> p) = {(the \<circ> (\<lambda>s. ref (s p))) s\<down>} \<and> (ref (s\<down> p) \<noteq> None \<and> obj_at (\<lambda>s. True) ((the \<circ> (\<lambda>s. ref (s p))) s\<down>) s\<down>) \<and> fM (s\<down> p) = sys_fM s\<down> \<and> marked ((the \<circ> (\<lambda>s. ref (s p))) s\<down>) s\<down> \<and> filter (\<lambda>s. is_mw_Mutate s \<or> is_mw_Mutate_Payload s) (sys_mem_store_buffers p s\<down>) = []))"