PIPBasics.thy
changeset 110 4782d82c3ae9
parent 109 4e59c0ce1511
child 111 4b416723a616
--- a/PIPBasics.thy	Fri Feb 05 20:11:12 2016 +0800
+++ b/PIPBasics.thy	Sat Feb 06 08:35:45 2016 +0800
@@ -1185,18 +1185,31 @@
 section {* The change of @{term RAG} *}
 
 text {*
+  The whole of PIP resides on the understanding of the formation
+  of @{term RAG}. In this section, we are going to investigate how
+  @{term RAG} is changed with the execution of every event (or operation).
+  The effect of every event on @{text RAG} is derived in its respective
+  locale named @{text "RAG_es"} with all lemmas before auxiliary. 
+
+  The derivation of these @{text "RAG_es"}s forms the very basis 
+  to show the well-formedness of @{term RAG}, 
+  for example, @{term RAG} is finite, acyclic, and single-valued, etc.
+
+*}
+
+text {*
   The following three lemmas show that @{text "RAG"} does not change
   by the happening of @{text "Set"}, @{text "Create"} and @{text "Exit"}
   events, respectively.
 *}
 
-lemma (in valid_trace_set) RAG_unchanged [simp]: "(RAG (e # s)) = RAG s"
+lemma (in valid_trace_set) RAG_es [simp]: "(RAG (e # s)) = RAG s"
    by (unfold is_set s_RAG_def s_waiting_def wq_def, simp add:Let_def)
 
-lemma (in valid_trace_create) RAG_unchanged [simp]: "(RAG (e # s)) = RAG s"
+lemma (in valid_trace_create) RAG_es [simp]: "(RAG (e # s)) = RAG s"
  by (unfold is_create s_RAG_def s_waiting_def wq_def, simp add:Let_def)
 
-lemma (in valid_trace_exit) RAG_unchanged[simp]: "(RAG (e # s)) = RAG s"
+lemma (in valid_trace_exit) RAG_es[simp]: "(RAG (e # s)) = RAG s"
   by (unfold is_exit s_RAG_def s_waiting_def wq_def, simp add:Let_def)
 
 context valid_trace_v
@@ -1701,24 +1714,6 @@
  qed
 qed
 
-lemma 
-  finite_RAG_kept:
-  assumes "finite (RAG s)"
-  shows "finite (RAG (e#s))"
-proof(cases "rest = []")
-  case True
-  interpret vt: valid_trace_v_e using True
-    by (unfold_locales, simp)
-  show ?thesis using assms
-    by  (unfold RAG_es vt.waiting_set_eq vt.holding_set_eq, simp)
-next
-  case False
-  interpret vt: valid_trace_v_n using False
-    by (unfold_locales, simp)
-  show ?thesis using assms
-    by  (unfold RAG_es vt.waiting_set_eq vt.holding_set_eq, simp)
-qed
-
 end
 
 context valid_trace_p
@@ -1981,6 +1976,29 @@
 
 section {* RAG is finite *}
 
+context valid_trace_v
+begin
+
+lemma 
+  finite_RAG_kept:
+  assumes "finite (RAG s)"
+  shows "finite (RAG (e#s))"
+proof(cases "rest = []")
+  case True
+  interpret vt: valid_trace_v_e using True
+    by (unfold_locales, simp)
+  show ?thesis using assms
+    by  (unfold RAG_es vt.waiting_set_eq vt.holding_set_eq, simp)
+next
+  case False
+  interpret vt: valid_trace_v_n using False
+    by (unfold_locales, simp)
+  show ?thesis using assms
+    by  (unfold RAG_es vt.waiting_set_eq vt.holding_set_eq, simp)
+qed
+
+end
+
 context valid_trace
 begin