CpsG.thy~
changeset 65 633b1fc8631b
parent 63 b620a2a0806a
child 73 b0054fb0d1ce
equal deleted inserted replaced
64:b4bcd1edbb6d 65:633b1fc8631b
   399   assumes "(Th th) \<in> Field (RAG s)"
   399   assumes "(Th th) \<in> Field (RAG s)"
   400   shows "th \<in> threads s"
   400   shows "th \<in> threads s"
   401   using assms
   401   using assms
   402   by (metis Field_def UnE dm_RAG_threads range_in vt)
   402   by (metis Field_def UnE dm_RAG_threads range_in vt)
   403 
   403 
       
   404 lemma subtree_tRAG_thread:
       
   405   assumes "th \<in> threads s"
       
   406   shows "subtree (tRAG s) (Th th) \<subseteq> Th ` threads s" (is "?L \<subseteq> ?R")
       
   407 proof -
       
   408   have "?L = {Th th' |th'. Th th' \<in> subtree (RAG s) (Th th)}"
       
   409     by (unfold tRAG_subtree_eq, simp)
       
   410   also have "... \<subseteq> ?R"
       
   411   proof
       
   412     fix x
       
   413     assume "x \<in> {Th th' |th'. Th th' \<in> subtree (RAG s) (Th th)}"
       
   414     then obtain th' where h: "x = Th th'" "Th th' \<in> subtree (RAG s) (Th th)" by auto
       
   415     from this(2)
       
   416     show "x \<in> ?R"
       
   417     proof(cases rule:subtreeE)
       
   418       case 1
       
   419       thus ?thesis by (simp add: assms h(1)) 
       
   420     next
       
   421       case 2
       
   422       thus ?thesis by (metis ancestors_Field dm_RAG_threads h(1) image_eqI) 
       
   423     qed
       
   424   qed
       
   425   finally show ?thesis .
       
   426 qed
   404 
   427 
   405 lemma readys_root:
   428 lemma readys_root:
   406   assumes "th \<in> readys s"
   429   assumes "th \<in> readys s"
   407   shows "root (RAG s) (Th th)"
   430   shows "root (RAG s) (Th th)"
   408 proof -
   431 proof -