equal
deleted
inserted
replaced
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 - |