theory SR_lemmas_C

lemma cmap_relation_ntfn [intro]:
  "(s, s') \<in> rf_sr \<Longrightarrow> cpspace_ntfn_relation (ksPSpace s) (t_hrs_' (globals s'))" unfolding rf_sr_def state_relation_def cstate_relation_def cpspace_relation_def by (simp add: Let_def)

(* Proof state trace *)
proof (prove)
goal (1 subgoal):
 1. (s, s') \<in> rf_sr \<Longrightarrow> cmap_relation (map_to_ntfns (ksPSpace s)) (cslift s') ntfn_Ptr (cnotification_relation (cslift s')) proof (prove)
goal (1 subgoal):
 1. (s, s') \<in> {(s, s'). let cheap = t_hrs_' (globals s') in (cmap_relation (ctes_of s) (clift cheap) cte_Ptr ccte_relation \<and> cpspace_tcb_relation (ksPSpace s) cheap \<and> cmap_relation (map_to_eps (ksPSpace s)) (clift cheap) ep_Ptr (cendpoint_relation (clift cheap)) \<and> cmap_relation (map_to_ntfns (ksPSpace s)) (clift cheap) ntfn_Ptr (cnotification_relation (clift cheap)) \<and> cmap_relation (map_to_pdes (ksPSpace s)) (clift cheap) pde_Ptr cpde_relation \<and> cmap_relation (map_to_ptes (ksPSpace s)) (clift cheap) pte_Ptr cpte_relation \<and> cmap_relation (map_to_asidpools (ksPSpace s)) (clift cheap) ap_Ptr casid_pool_relation \<and> cpspace_user_data_relation (ksPSpace s) (underlying_memory (ksMachineState s)) cheap \<and> cpspace_device_data_relation (ksPSpace s) (underlying_memory (ksMachineState s)) cheap \<and> cpspace_pde_array_relation (ksPSpace s) cheap \<and> cpspace_pte_array_relation (ksPSpace s) cheap) \<and> cready_queues_relation (clift cheap) (ksReadyQueues_' (globals s')) (ksReadyQueues s) \<and> zero_ranges_are_zero (gsUntypedZeroRanges s) cheap \<and> cbitmap_L1_relation (ksReadyQueuesL1Bitmap_' (globals s')) (ksReadyQueuesL1Bitmap s) \<and> cbitmap_L2_relation (ksReadyQueuesL2Bitmap_' (globals s')) (ksReadyQueuesL2Bitmap s) \<and> ksCurThread_' (globals s') = tcb_ptr_to_ctcb_ptr (ksCurThread s) \<and> ksIdleThread_' (globals s') = tcb_ptr_to_ctcb_ptr (ksIdleThread s) \<and> cinterrupt_relation (ksInterruptState s) intStateIRQNode_array_Ptr (intStateIRQTable_' (globals s')) \<and> cscheduler_action_relation (ksSchedulerAction s) (ksSchedulerAction_' (globals s')) \<and> carch_state_relation (ksArchState s) (globals s') \<and> cmachine_state_relation (ksMachineState s) (globals s') \<and> cte_array_relation s (globals s') \<and> tcb_cte_array_relation s (globals s') \<and> apsnd fst (ghost'state_' (globals s')) = (gsUserPages s, gsCNodes s) \<and> ghost_size_rel (ghost'state_' (globals s')) (gsMaxObjectSize s) \<and> ksWorkUnitsCompleted_' (globals s') = ksWorkUnitsCompleted s \<and> s' \<Turnstile>\<^sub>c intStateIRQNode_array_Ptr \<and> ptr_span intStateIRQNode_array_Ptr \<subseteq> kernel_data_refs \<and> s' \<Turnstile>\<^sub>c armKSGlobalPD_Ptr \<and> ptr_span armKSGlobalPD_Ptr \<subseteq> kernel_data_refs \<and> htd_safe domain (hrs_htd (t_hrs_' (globals s'))) \<and> - domain \<subseteq> kernel_data_refs \<and> globals_list_distinct (- kernel_data_refs) symbol_table kernel_all_global_addresses.global_data_list \<and> cdom_schedule_relation (kernel_state.ksDomSchedule s) kernel_all_global_addresses.ksDomSchedule \<and> ksDomScheduleIdx_' (globals s') = word_of_nat (ksDomScheduleIdx s) \<and> ksCurDomain_' (globals s') = UCAST(8 \<rightarrow> 32) (ksCurDomain s) \<and> ksDomainTime_' (globals s') = ksDomainTime s} \<Longrightarrow> cmap_relation (map_to_ntfns (ksPSpace s)) (cslift s') ntfn_Ptr (cnotification_relation (cslift s'))