| author | zhangx | 
| Fri, 29 Jan 2016 09:46:07 +0800 | |
| changeset 91 | 0525670d8e6a | 
| parent 81 | c495eb16beb6 | 
| permissions | -rw-r--r-- | 
| 81 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1 | theory CpsG | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 2 | imports PIPDefs | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 3 | begin | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 4 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 5 | lemma Max_f_mono: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 6 | assumes seq: "A \<subseteq> B" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 7 |   and np: "A \<noteq> {}"
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 8 | and fnt: "finite B" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 9 | shows "Max (f ` A) \<le> Max (f ` B)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 10 | proof(rule Max_mono) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 11 | from seq show "f ` A \<subseteq> f ` B" by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 12 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 13 |   from np show "f ` A \<noteq> {}" by auto
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 14 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 15 | from fnt and seq show "finite (f ` B)" by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 16 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 17 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 18 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 19 | locale valid_trace = | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 20 | fixes s | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 21 | assumes vt : "vt s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 22 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 23 | locale valid_trace_e = valid_trace + | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 24 | fixes e | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 25 | assumes vt_e: "vt (e#s)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 26 | begin | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 27 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 28 | lemma pip_e: "PIP s e" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 29 | using vt_e by (cases, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 30 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 31 | end | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 32 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 33 | locale valid_trace_create = valid_trace_e + | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 34 | fixes th prio | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 35 | assumes is_create: "e = Create th prio" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 36 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 37 | locale valid_trace_exit = valid_trace_e + | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 38 | fixes th | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 39 | assumes is_exit: "e = Exit th" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 40 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 41 | locale valid_trace_p = valid_trace_e + | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 42 | fixes th cs | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 43 | assumes is_p: "e = P th cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 44 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 45 | locale valid_trace_v = valid_trace_e + | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 46 | fixes th cs | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 47 | assumes is_v: "e = V th cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 48 | begin | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 49 | definition "rest = tl (wq s cs)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 50 | definition "wq' = (SOME q. distinct q \<and> set q = set rest)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 51 | end | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 52 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 53 | locale valid_trace_v_n = valid_trace_v + | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 54 | assumes rest_nnl: "rest \<noteq> []" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 55 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 56 | locale valid_trace_v_e = valid_trace_v + | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 57 | assumes rest_nil: "rest = []" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 58 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 59 | locale valid_trace_set= valid_trace_e + | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 60 | fixes th prio | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 61 | assumes is_set: "e = Set th prio" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 62 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 63 | context valid_trace | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 64 | begin | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 65 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 66 | lemma ind [consumes 0, case_names Nil Cons, induct type]: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 67 | assumes "PP []" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 68 | and "(\<And>s e. valid_trace_e s e \<Longrightarrow> | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 69 | PP s \<Longrightarrow> PIP s e \<Longrightarrow> PP (e # s))" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 70 | shows "PP s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 71 | proof(induct rule:vt.induct[OF vt, case_names Init Step]) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 72 | case Init | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 73 | from assms(1) show ?case . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 74 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 75 | case (Step s e) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 76 | show ?case | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 77 | proof(rule assms(2)) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 78 | show "valid_trace_e s e" using Step by (unfold_locales, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 79 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 80 | show "PP s" using Step by simp | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 81 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 82 | show "PIP s e" using Step by simp | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 83 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 84 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 85 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 86 | lemma vt_moment: "\<And> t. vt (moment t s)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 87 | proof(induct rule:ind) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 88 | case Nil | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 89 | thus ?case by (simp add:vt_nil) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 90 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 91 | case (Cons s e t) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 92 | show ?case | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 93 | proof(cases "t \<ge> length (e#s)") | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 94 | case True | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 95 | from True have "moment t (e#s) = e#s" by simp | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 96 | thus ?thesis using Cons | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 97 | by (simp add:valid_trace_def valid_trace_e_def, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 98 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 99 | case False | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 100 | from Cons have "vt (moment t s)" by simp | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 101 | moreover have "moment t (e#s) = moment t s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 102 | proof - | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 103 | from False have "t \<le> length s" by simp | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 104 | from moment_app [OF this, of "[e]"] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 105 | show ?thesis by simp | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 106 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 107 | ultimately show ?thesis by simp | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 108 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 109 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 110 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 111 | lemma finite_threads: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 112 | shows "finite (threads s)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 113 | using vt by (induct) (auto elim: step.cases) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 114 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 115 | end | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 116 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 117 | lemma cp_eq_cpreced: "cp s th = cpreced (wq s) s th" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 118 | unfolding cp_def wq_def | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 119 | apply(induct s rule: schs.induct) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 120 | apply(simp add: Let_def cpreced_initial) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 121 | apply(simp add: Let_def) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 122 | apply(simp add: Let_def) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 123 | apply(simp add: Let_def) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 124 | apply(subst (2) schs.simps) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 125 | apply(simp add: Let_def) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 126 | apply(subst (2) schs.simps) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 127 | apply(simp add: Let_def) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 128 | done | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 129 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 130 | lemma RAG_target_th: "(Th th, x) \<in> RAG (s::state) \<Longrightarrow> \<exists> cs. x = Cs cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 131 | by (unfold s_RAG_def, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 132 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 133 | locale valid_moment = valid_trace + | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 134 | fixes i :: nat | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 135 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 136 | sublocale valid_moment < vat_moment: valid_trace "(moment i s)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 137 | by (unfold_locales, insert vt_moment, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 138 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 139 | lemma waiting_eq: "waiting s th cs = waiting (wq s) th cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 140 | by (unfold s_waiting_def cs_waiting_def wq_def, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 141 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 142 | lemma holding_eq: "holding (s::state) th cs = holding (wq s) th cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 143 | by (unfold s_holding_def wq_def cs_holding_def, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 144 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 145 | lemma runing_ready: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 146 | shows "runing s \<subseteq> readys s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 147 | unfolding runing_def readys_def | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 148 | by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 149 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 150 | lemma readys_threads: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 151 | shows "readys s \<subseteq> threads s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 152 | unfolding readys_def | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 153 | by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 154 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 155 | lemma wq_v_neq [simp]: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 156 | "cs \<noteq> cs' \<Longrightarrow> wq (V thread cs#s) cs' = wq s cs'" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 157 | by (auto simp:wq_def Let_def cp_def split:list.splits) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 158 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 159 | lemma runing_head: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 160 | assumes "th \<in> runing s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 161 | and "th \<in> set (wq_fun (schs s) cs)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 162 | shows "th = hd (wq_fun (schs s) cs)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 163 | using assms | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 164 | by (simp add:runing_def readys_def s_waiting_def wq_def) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 165 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 166 | context valid_trace | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 167 | begin | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 168 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 169 | lemma runing_wqE: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 170 | assumes "th \<in> runing s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 171 | and "th \<in> set (wq s cs)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 172 | obtains rest where "wq s cs = th#rest" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 173 | proof - | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 174 | from assms(2) obtain th' rest where eq_wq: "wq s cs = th'#rest" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 175 | by (meson list.set_cases) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 176 | have "th' = th" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 177 | proof(rule ccontr) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 178 | assume "th' \<noteq> th" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 179 | hence "th \<noteq> hd (wq s cs)" using eq_wq by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 180 | with assms(2) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 181 | have "waiting s th cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 182 | by (unfold s_waiting_def, fold wq_def, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 183 | with assms show False | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 184 | by (unfold runing_def readys_def, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 185 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 186 | with eq_wq that show ?thesis by metis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 187 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 188 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 189 | end | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 190 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 191 | context valid_trace_create | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 192 | begin | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 193 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 194 | lemma wq_neq_simp [simp]: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 195 | shows "wq (e#s) cs' = wq s cs'" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 196 | using assms unfolding is_create wq_def | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 197 | by (auto simp:Let_def) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 198 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 199 | lemma wq_distinct_kept: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 200 | assumes "distinct (wq s cs')" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 201 | shows "distinct (wq (e#s) cs')" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 202 | using assms by simp | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 203 | end | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 204 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 205 | context valid_trace_exit | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 206 | begin | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 207 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 208 | lemma wq_neq_simp [simp]: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 209 | shows "wq (e#s) cs' = wq s cs'" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 210 | using assms unfolding is_exit wq_def | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 211 | by (auto simp:Let_def) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 212 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 213 | lemma wq_distinct_kept: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 214 | assumes "distinct (wq s cs')" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 215 | shows "distinct (wq (e#s) cs')" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 216 | using assms by simp | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 217 | end | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 218 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 219 | context valid_trace_p | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 220 | begin | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 221 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 222 | lemma wq_neq_simp [simp]: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 223 | assumes "cs' \<noteq> cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 224 | shows "wq (e#s) cs' = wq s cs'" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 225 | using assms unfolding is_p wq_def | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 226 | by (auto simp:Let_def) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 227 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 228 | lemma runing_th_s: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 229 | shows "th \<in> runing s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 230 | proof - | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 231 | from pip_e[unfolded is_p] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 232 | show ?thesis by (cases, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 233 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 234 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 235 | lemma th_not_waiting: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 236 | "\<not> waiting s th c" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 237 | proof - | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 238 | have "th \<in> readys s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 239 | using runing_ready runing_th_s by blast | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 240 | thus ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 241 | by (unfold readys_def, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 242 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 243 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 244 | lemma waiting_neq_th: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 245 | assumes "waiting s t c" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 246 | shows "t \<noteq> th" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 247 | using assms using th_not_waiting by blast | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 248 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 249 | lemma th_not_in_wq: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 250 | shows "th \<notin> set (wq s cs)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 251 | proof | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 252 | assume otherwise: "th \<in> set (wq s cs)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 253 | from runing_wqE[OF runing_th_s this] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 254 | obtain rest where eq_wq: "wq s cs = th#rest" by blast | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 255 | with otherwise | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 256 | have "holding s th cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 257 | by (unfold s_holding_def, fold wq_def, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 258 | hence cs_th_RAG: "(Cs cs, Th th) \<in> RAG s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 259 | by (unfold s_RAG_def, fold holding_eq, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 260 | from pip_e[unfolded is_p] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 261 | show False | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 262 | proof(cases) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 263 | case (thread_P) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 264 | with cs_th_RAG show ?thesis by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 265 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 266 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 267 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 268 | lemma wq_es_cs: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 269 | "wq (e#s) cs = wq s cs @ [th]" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 270 | by (unfold is_p wq_def, auto simp:Let_def) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 271 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 272 | lemma wq_distinct_kept: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 273 | assumes "distinct (wq s cs')" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 274 | shows "distinct (wq (e#s) cs')" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 275 | proof(cases "cs' = cs") | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 276 | case True | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 277 | show ?thesis using True assms th_not_in_wq | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 278 | by (unfold True wq_es_cs, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 279 | qed (insert assms, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 280 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 281 | end | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 282 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 283 | context valid_trace_v | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 284 | begin | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 285 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 286 | lemma wq_neq_simp [simp]: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 287 | assumes "cs' \<noteq> cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 288 | shows "wq (e#s) cs' = wq s cs'" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 289 | using assms unfolding is_v wq_def | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 290 | by (auto simp:Let_def) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 291 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 292 | lemma runing_th_s: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 293 | shows "th \<in> runing s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 294 | proof - | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 295 | from pip_e[unfolded is_v] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 296 | show ?thesis by (cases, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 297 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 298 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 299 | lemma th_not_waiting: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 300 | "\<not> waiting s th c" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 301 | proof - | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 302 | have "th \<in> readys s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 303 | using runing_ready runing_th_s by blast | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 304 | thus ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 305 | by (unfold readys_def, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 306 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 307 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 308 | lemma waiting_neq_th: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 309 | assumes "waiting s t c" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 310 | shows "t \<noteq> th" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 311 | using assms using th_not_waiting by blast | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 312 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 313 | lemma wq_s_cs: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 314 | "wq s cs = th#rest" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 315 | proof - | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 316 | from pip_e[unfolded is_v] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 317 | show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 318 | proof(cases) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 319 | case (thread_V) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 320 | from this(2) show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 321 | by (unfold rest_def s_holding_def, fold wq_def, | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 322 | metis empty_iff list.collapse list.set(1)) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 323 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 324 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 325 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 326 | lemma wq_es_cs: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 327 | "wq (e#s) cs = wq'" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 328 | using wq_s_cs[unfolded wq_def] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 329 | by (auto simp:Let_def wq_def rest_def wq'_def is_v, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 330 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 331 | lemma wq_distinct_kept: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 332 | assumes "distinct (wq s cs')" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 333 | shows "distinct (wq (e#s) cs')" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 334 | proof(cases "cs' = cs") | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 335 | case True | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 336 | show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 337 | proof(unfold True wq_es_cs wq'_def, rule someI2) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 338 | show "distinct rest \<and> set rest = set rest" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 339 | using assms[unfolded True wq_s_cs] by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 340 | qed simp | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 341 | qed (insert assms, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 342 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 343 | end | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 344 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 345 | context valid_trace_set | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 346 | begin | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 347 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 348 | lemma wq_neq_simp [simp]: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 349 | shows "wq (e#s) cs' = wq s cs'" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 350 | using assms unfolding is_set wq_def | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 351 | by (auto simp:Let_def) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 352 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 353 | lemma wq_distinct_kept: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 354 | assumes "distinct (wq s cs')" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 355 | shows "distinct (wq (e#s) cs')" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 356 | using assms by simp | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 357 | end | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 358 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 359 | context valid_trace | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 360 | begin | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 361 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 362 | lemma actor_inv: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 363 | assumes "PIP s e" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 364 | and "\<not> isCreate e" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 365 | shows "actor e \<in> runing s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 366 | using assms | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 367 | by (induct, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 368 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 369 | lemma isP_E: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 370 | assumes "isP e" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 371 | obtains cs where "e = P (actor e) cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 372 | using assms by (cases e, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 373 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 374 | lemma isV_E: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 375 | assumes "isV e" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 376 | obtains cs where "e = V (actor e) cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 377 | using assms by (cases e, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 378 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 379 | lemma wq_distinct: "distinct (wq s cs)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 380 | proof(induct rule:ind) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 381 | case (Cons s e) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 382 | interpret vt_e: valid_trace_e s e using Cons by simp | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 383 | show ?case | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 384 | proof(cases e) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 385 | case (Create th prio) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 386 | interpret vt_create: valid_trace_create s e th prio | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 387 | using Create by (unfold_locales, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 388 | show ?thesis using Cons by (simp add: vt_create.wq_distinct_kept) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 389 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 390 | case (Exit th) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 391 | interpret vt_exit: valid_trace_exit s e th | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 392 | using Exit by (unfold_locales, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 393 | show ?thesis using Cons by (simp add: vt_exit.wq_distinct_kept) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 394 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 395 | case (P th cs) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 396 | interpret vt_p: valid_trace_p s e th cs using P by (unfold_locales, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 397 | show ?thesis using Cons by (simp add: vt_p.wq_distinct_kept) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 398 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 399 | case (V th cs) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 400 | interpret vt_v: valid_trace_v s e th cs using V by (unfold_locales, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 401 | show ?thesis using Cons by (simp add: vt_v.wq_distinct_kept) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 402 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 403 | case (Set th prio) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 404 | interpret vt_set: valid_trace_set s e th prio | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 405 | using Set by (unfold_locales, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 406 | show ?thesis using Cons by (simp add: vt_set.wq_distinct_kept) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 407 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 408 | qed (unfold wq_def Let_def, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 409 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 410 | end | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 411 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 412 | context valid_trace_e | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 413 | begin | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 414 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 415 | text {*
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 416 |   The following lemma shows that only the @{text "P"}
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 417 | operation can add new thread into waiting queues. | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 418 | Such kind of lemmas are very obvious, but need to be checked formally. | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 419 | This is a kind of confirmation that our modelling is correct. | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 420 | *} | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 421 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 422 | lemma wq_in_inv: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 423 | assumes s_ni: "thread \<notin> set (wq s cs)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 424 | and s_i: "thread \<in> set (wq (e#s) cs)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 425 | shows "e = P thread cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 426 | proof(cases e) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 427 |   -- {* This is the only non-trivial case: *}
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 428 | case (V th cs1) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 429 | have False | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 430 | proof(cases "cs1 = cs") | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 431 | case True | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 432 | show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 433 | proof(cases "(wq s cs1)") | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 434 | case (Cons w_hd w_tl) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 435 | have "set (wq (e#s) cs) \<subseteq> set (wq s cs)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 436 | proof - | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 437 | have "(wq (e#s) cs) = (SOME q. distinct q \<and> set q = set w_tl)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 438 | using Cons V by (auto simp:wq_def Let_def True split:if_splits) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 439 | moreover have "set ... \<subseteq> set (wq s cs)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 440 | proof(rule someI2) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 441 | show "distinct w_tl \<and> set w_tl = set w_tl" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 442 | by (metis distinct.simps(2) local.Cons wq_distinct) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 443 | qed (insert Cons True, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 444 | ultimately show ?thesis by simp | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 445 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 446 | with assms show ?thesis by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 447 | qed (insert assms V True, auto simp:wq_def Let_def split:if_splits) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 448 | qed (insert assms V, auto simp:wq_def Let_def split:if_splits) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 449 | thus ?thesis by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 450 | qed (insert assms, auto simp:wq_def Let_def split:if_splits) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 451 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 452 | lemma wq_out_inv: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 453 | assumes s_in: "thread \<in> set (wq s cs)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 454 | and s_hd: "thread = hd (wq s cs)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 455 | and s_i: "thread \<noteq> hd (wq (e#s) cs)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 456 | shows "e = V thread cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 457 | proof(cases e) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 458 | -- {* There are only two non-trivial cases: *}
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 459 | case (V th cs1) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 460 | show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 461 | proof(cases "cs1 = cs") | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 462 | case True | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 463 | have "PIP s (V th cs)" using pip_e[unfolded V[unfolded True]] . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 464 | thus ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 465 | proof(cases) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 466 | case (thread_V) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 467 | moreover have "th = thread" using thread_V(2) s_hd | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 468 | by (unfold s_holding_def wq_def, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 469 | ultimately show ?thesis using V True by simp | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 470 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 471 | qed (insert assms V, auto simp:wq_def Let_def split:if_splits) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 472 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 473 | case (P th cs1) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 474 | show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 475 | proof(cases "cs1 = cs") | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 476 | case True | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 477 | with P have "wq (e#s) cs = wq_fun (schs s) cs @ [th]" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 478 | by (auto simp:wq_def Let_def split:if_splits) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 479 | with s_i s_hd s_in have False | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 480 | by (metis empty_iff hd_append2 list.set(1) wq_def) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 481 | thus ?thesis by simp | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 482 | qed (insert assms P, auto simp:wq_def Let_def split:if_splits) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 483 | qed (insert assms, auto simp:wq_def Let_def split:if_splits) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 484 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 485 | end | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 486 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 487 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 488 | context valid_trace | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 489 | begin | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 490 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 491 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 492 | text {* (* ddd *)
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 493 | The nature of the work is like this: since it starts from a very simple and basic | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 494 | model, even intuitively very `basic` and `obvious` properties need to derived from scratch. | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 495 | For instance, the fact | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 496 | that one thread can not be blocked by two critical resources at the same time | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 497 | is obvious, because only running threads can make new requests, if one is waiting for | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 498 | a critical resource and get blocked, it can not make another resource request and get | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 499 | blocked the second time (because it is not running). | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 500 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 501 | To derive this fact, one needs to prove by contraction and | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 502 |   reason about time (or @{text "moement"}). The reasoning is based on a generic theorem
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 503 |   named @{text "p_split"}, which is about status changing along the time axis. It says if 
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 504 |   a condition @{text "Q"} is @{text "True"} at a state @{text "s"},
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 505 |   but it was @{text "False"} at the very beginning, then there must exits a moment @{text "t"} 
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 506 |   in the history of @{text "s"} (notice that @{text "s"} itself is essentially the history 
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 507 |   of events leading to it), such that @{text "Q"} switched 
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 508 |   from being @{text "False"} to @{text "True"} and kept being @{text "True"}
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 509 |   till the last moment of @{text "s"}.
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 510 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 511 |   Suppose a thread @{text "th"} is blocked
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 512 |   on @{text "cs1"} and @{text "cs2"} in some state @{text "s"}, 
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 513 | since no thread is blocked at the very beginning, by applying | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 514 |   @{text "p_split"} to these two blocking facts, there exist 
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 515 |   two moments @{text "t1"} and @{text "t2"}  in @{text "s"}, such that 
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 516 |   @{text "th"} got blocked on @{text "cs1"} and @{text "cs2"} 
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 517 | and kept on blocked on them respectively ever since. | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 518 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 519 |   Without lost of generality, we assume @{text "t1"} is earlier than @{text "t2"}.
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 520 |   However, since @{text "th"} was blocked ever since memonent @{text "t1"}, so it was still
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 521 |   in blocked state at moment @{text "t2"} and could not
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 522 | make any request and get blocked the second time: Contradiction. | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 523 | *} | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 524 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 525 | lemma waiting_unique_pre: (* ddd *) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 526 | assumes h11: "thread \<in> set (wq s cs1)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 527 | and h12: "thread \<noteq> hd (wq s cs1)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 528 | assumes h21: "thread \<in> set (wq s cs2)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 529 | and h22: "thread \<noteq> hd (wq s cs2)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 530 | and neq12: "cs1 \<noteq> cs2" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 531 | shows "False" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 532 | proof - | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 533 | let "?Q" = "\<lambda> cs s. thread \<in> set (wq s cs) \<and> thread \<noteq> hd (wq s cs)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 534 | from h11 and h12 have q1: "?Q cs1 s" by simp | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 535 | from h21 and h22 have q2: "?Q cs2 s" by simp | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 536 | have nq1: "\<not> ?Q cs1 []" by (simp add:wq_def) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 537 | have nq2: "\<not> ?Q cs2 []" by (simp add:wq_def) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 538 | from p_split [of "?Q cs1", OF q1 nq1] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 539 | obtain t1 where lt1: "t1 < length s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 540 | and np1: "\<not> ?Q cs1 (moment t1 s)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 541 | and nn1: "(\<forall>i'>t1. ?Q cs1 (moment i' s))" by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 542 | from p_split [of "?Q cs2", OF q2 nq2] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 543 | obtain t2 where lt2: "t2 < length s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 544 | and np2: "\<not> ?Q cs2 (moment t2 s)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 545 | and nn2: "(\<forall>i'>t2. ?Q cs2 (moment i' s))" by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 546 |   { fix s cs
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 547 | assume q: "?Q cs s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 548 | have "thread \<notin> runing s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 549 | proof | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 550 | assume "thread \<in> runing s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 551 | hence " \<forall>cs. \<not> (thread \<in> set (wq_fun (schs s) cs) \<and> | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 552 | thread \<noteq> hd (wq_fun (schs s) cs))" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 553 | by (unfold runing_def s_waiting_def readys_def, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 554 | from this[rule_format, of cs] q | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 555 | show False by (simp add: wq_def) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 556 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 557 | } note q_not_runing = this | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 558 |   { fix t1 t2 cs1 cs2
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 559 | assume lt1: "t1 < length s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 560 | and np1: "\<not> ?Q cs1 (moment t1 s)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 561 | and nn1: "(\<forall>i'>t1. ?Q cs1 (moment i' s))" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 562 | and lt2: "t2 < length s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 563 | and np2: "\<not> ?Q cs2 (moment t2 s)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 564 | and nn2: "(\<forall>i'>t2. ?Q cs2 (moment i' s))" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 565 | and lt12: "t1 < t2" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 566 | let ?t3 = "Suc t2" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 567 | from lt2 have le_t3: "?t3 \<le> length s" by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 568 | from moment_plus [OF this] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 569 | obtain e where eq_m: "moment ?t3 s = e#moment t2 s" by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 570 | have "t2 < ?t3" by simp | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 571 | from nn2 [rule_format, OF this] and eq_m | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 572 | have h1: "thread \<in> set (wq (e#moment t2 s) cs2)" and | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 573 | h2: "thread \<noteq> hd (wq (e#moment t2 s) cs2)" by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 574 | have "vt (e#moment t2 s)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 575 | proof - | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 576 | from vt_moment | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 577 | have "vt (moment ?t3 s)" . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 578 | with eq_m show ?thesis by simp | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 579 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 580 | then interpret vt_e: valid_trace_e "moment t2 s" "e" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 581 | by (unfold_locales, auto, cases, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 582 | have ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 583 | proof - | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 584 | have "thread \<in> runing (moment t2 s)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 585 | proof(cases "thread \<in> set (wq (moment t2 s) cs2)") | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 586 | case True | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 587 | have "e = V thread cs2" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 588 | proof - | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 589 | have eq_th: "thread = hd (wq (moment t2 s) cs2)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 590 | using True and np2 by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 591 | from vt_e.wq_out_inv[OF True this h2] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 592 | show ?thesis . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 593 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 594 | thus ?thesis using vt_e.actor_inv[OF vt_e.pip_e] by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 595 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 596 | case False | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 597 | have "e = P thread cs2" using vt_e.wq_in_inv[OF False h1] . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 598 | with vt_e.actor_inv[OF vt_e.pip_e] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 599 | show ?thesis by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 600 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 601 | moreover have "thread \<notin> runing (moment t2 s)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 602 | by (rule q_not_runing[OF nn1[rule_format, OF lt12]]) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 603 | ultimately show ?thesis by simp | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 604 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 605 | } note lt_case = this | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 606 | show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 607 | proof - | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 608 |     { assume "t1 < t2"
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 609 | from lt_case[OF lt1 np1 nn1 lt2 np2 nn2 this] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 610 | have ?thesis . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 611 |     } moreover {
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 612 | assume "t2 < t1" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 613 | from lt_case[OF lt2 np2 nn2 lt1 np1 nn1 this] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 614 | have ?thesis . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 615 |     } moreover {
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 616 | assume eq_12: "t1 = t2" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 617 | let ?t3 = "Suc t2" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 618 | from lt2 have le_t3: "?t3 \<le> length s" by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 619 | from moment_plus [OF this] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 620 | obtain e where eq_m: "moment ?t3 s = e#moment t2 s" by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 621 | have lt_2: "t2 < ?t3" by simp | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 622 | from nn2 [rule_format, OF this] and eq_m | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 623 | have h1: "thread \<in> set (wq (e#moment t2 s) cs2)" and | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 624 | h2: "thread \<noteq> hd (wq (e#moment t2 s) cs2)" by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 625 | from nn1[rule_format, OF lt_2[folded eq_12]] eq_m[folded eq_12] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 626 | have g1: "thread \<in> set (wq (e#moment t1 s) cs1)" and | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 627 | g2: "thread \<noteq> hd (wq (e#moment t1 s) cs1)" by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 628 | have "vt (e#moment t2 s)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 629 | proof - | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 630 | from vt_moment | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 631 | have "vt (moment ?t3 s)" . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 632 | with eq_m show ?thesis by simp | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 633 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 634 | then interpret vt_e: valid_trace_e "moment t2 s" "e" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 635 | by (unfold_locales, auto, cases, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 636 | have "e = V thread cs2 \<or> e = P thread cs2" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 637 | proof(cases "thread \<in> set (wq (moment t2 s) cs2)") | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 638 | case True | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 639 | have "e = V thread cs2" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 640 | proof - | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 641 | have eq_th: "thread = hd (wq (moment t2 s) cs2)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 642 | using True and np2 by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 643 | from vt_e.wq_out_inv[OF True this h2] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 644 | show ?thesis . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 645 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 646 | thus ?thesis by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 647 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 648 | case False | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 649 | have "e = P thread cs2" using vt_e.wq_in_inv[OF False h1] . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 650 | thus ?thesis by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 651 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 652 | moreover have "e = V thread cs1 \<or> e = P thread cs1" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 653 | proof(cases "thread \<in> set (wq (moment t1 s) cs1)") | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 654 | case True | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 655 | have eq_th: "thread = hd (wq (moment t1 s) cs1)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 656 | using True and np1 by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 657 | from vt_e.wq_out_inv[folded eq_12, OF True this g2] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 658 | have "e = V thread cs1" . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 659 | thus ?thesis by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 660 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 661 | case False | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 662 | have "e = P thread cs1" using vt_e.wq_in_inv[folded eq_12, OF False g1] . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 663 | thus ?thesis by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 664 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 665 | ultimately have ?thesis using neq12 by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 666 | } ultimately show ?thesis using nat_neq_iff by blast | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 667 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 668 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 669 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 670 | text {*
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 671 |   This lemma is a simple corrolary of @{text "waiting_unique_pre"}.
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 672 | *} | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 673 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 674 | lemma waiting_unique: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 675 | assumes "waiting s th cs1" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 676 | and "waiting s th cs2" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 677 | shows "cs1 = cs2" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 678 | using waiting_unique_pre assms | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 679 | unfolding wq_def s_waiting_def | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 680 | by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 681 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 682 | end | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 683 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 684 | (* not used *) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 685 | text {*
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 686 | Every thread can only be blocked on one critical resource, | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 687 | symmetrically, every critical resource can only be held by one thread. | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 688 | This fact is much more easier according to our definition. | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 689 | *} | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 690 | lemma held_unique: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 691 | assumes "holding (s::event list) th1 cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 692 | and "holding s th2 cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 693 | shows "th1 = th2" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 694 | by (insert assms, unfold s_holding_def, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 695 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 696 | lemma last_set_lt: "th \<in> threads s \<Longrightarrow> last_set th s < length s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 697 | apply (induct s, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 698 | by (case_tac a, auto split:if_splits) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 699 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 700 | lemma last_set_unique: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 701 | "\<lbrakk>last_set th1 s = last_set th2 s; th1 \<in> threads s; th2 \<in> threads s\<rbrakk> | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 702 | \<Longrightarrow> th1 = th2" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 703 | apply (induct s, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 704 | by (case_tac a, auto split:if_splits dest:last_set_lt) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 705 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 706 | lemma preced_unique : | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 707 | assumes pcd_eq: "preced th1 s = preced th2 s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 708 | and th_in1: "th1 \<in> threads s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 709 | and th_in2: " th2 \<in> threads s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 710 | shows "th1 = th2" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 711 | proof - | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 712 | from pcd_eq have "last_set th1 s = last_set th2 s" by (simp add:preced_def) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 713 | from last_set_unique [OF this th_in1 th_in2] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 714 | show ?thesis . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 715 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 716 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 717 | lemma preced_linorder: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 718 | assumes neq_12: "th1 \<noteq> th2" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 719 | and th_in1: "th1 \<in> threads s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 720 | and th_in2: " th2 \<in> threads s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 721 | shows "preced th1 s < preced th2 s \<or> preced th1 s > preced th2 s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 722 | proof - | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 723 | from preced_unique [OF _ th_in1 th_in2] and neq_12 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 724 | have "preced th1 s \<noteq> preced th2 s" by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 725 | thus ?thesis by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 726 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 727 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 728 | text {*
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 729 |   The following three lemmas show that @{text "RAG"} does not change
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 730 |   by the happening of @{text "Set"}, @{text "Create"} and @{text "Exit"}
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 731 | events, respectively. | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 732 | *} | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 733 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 734 | lemma RAG_set_unchanged: "(RAG (Set th prio # s)) = RAG s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 735 | apply (unfold s_RAG_def s_waiting_def wq_def) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 736 | by (simp add:Let_def) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 737 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 738 | lemma RAG_create_unchanged: "(RAG (Create th prio # s)) = RAG s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 739 | apply (unfold s_RAG_def s_waiting_def wq_def) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 740 | by (simp add:Let_def) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 741 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 742 | lemma RAG_exit_unchanged: "(RAG (Exit th # s)) = RAG s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 743 | apply (unfold s_RAG_def s_waiting_def wq_def) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 744 | by (simp add:Let_def) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 745 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 746 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 747 | context valid_trace_v | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 748 | begin | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 749 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 750 | lemma distinct_rest: "distinct rest" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 751 | by (simp add: distinct_tl rest_def wq_distinct) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 752 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 753 | lemma holding_cs_eq_th: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 754 | assumes "holding s t cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 755 | shows "t = th" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 756 | proof - | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 757 | from pip_e[unfolded is_v] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 758 | show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 759 | proof(cases) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 760 | case (thread_V) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 761 | from held_unique[OF this(2) assms] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 762 | show ?thesis by simp | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 763 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 764 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 765 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 766 | lemma distinct_wq': "distinct wq'" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 767 | by (metis (mono_tags, lifting) distinct_rest some_eq_ex wq'_def) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 768 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 769 | lemma th'_in_inv: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 770 | assumes "th' \<in> set wq'" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 771 | shows "th' \<in> set rest" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 772 | using assms | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 773 | by (metis (mono_tags, lifting) distinct.simps(2) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 774 | rest_def some_eq_ex wq'_def wq_distinct wq_s_cs) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 775 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 776 | lemma neq_t_th: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 777 | assumes "waiting (e#s) t c" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 778 | shows "t \<noteq> th" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 779 | proof | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 780 | assume otherwise: "t = th" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 781 | show False | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 782 | proof(cases "c = cs") | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 783 | case True | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 784 | have "t \<in> set wq'" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 785 | using assms[unfolded True s_waiting_def, folded wq_def, unfolded wq_es_cs] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 786 | by simp | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 787 | from th'_in_inv[OF this] have "t \<in> set rest" . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 788 | with wq_s_cs[folded otherwise] wq_distinct[of cs] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 789 | show ?thesis by simp | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 790 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 791 | case False | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 792 | have "wq (e#s) c = wq s c" using False | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 793 | by (unfold is_v, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 794 | hence "waiting s t c" using assms | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 795 | by (simp add: cs_waiting_def waiting_eq) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 796 | hence "t \<notin> readys s" by (unfold readys_def, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 797 | hence "t \<notin> runing s" using runing_ready by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 798 | with runing_th_s[folded otherwise] show ?thesis by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 799 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 800 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 801 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 802 | lemma waiting_esI1: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 803 | assumes "waiting s t c" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 804 | and "c \<noteq> cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 805 | shows "waiting (e#s) t c" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 806 | proof - | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 807 | have "wq (e#s) c = wq s c" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 808 | using assms(2) is_v by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 809 | with assms(1) show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 810 | using cs_waiting_def waiting_eq by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 811 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 812 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 813 | lemma holding_esI2: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 814 | assumes "c \<noteq> cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 815 | and "holding s t c" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 816 | shows "holding (e#s) t c" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 817 | proof - | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 818 | from assms(1) have "wq (e#s) c = wq s c" using is_v by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 819 | from assms(2)[unfolded s_holding_def, folded wq_def, | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 820 | folded this, unfolded wq_def, folded s_holding_def] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 821 | show ?thesis . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 822 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 823 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 824 | lemma holding_esI1: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 825 | assumes "holding s t c" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 826 | and "t \<noteq> th" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 827 | shows "holding (e#s) t c" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 828 | proof - | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 829 | have "c \<noteq> cs" using assms using holding_cs_eq_th by blast | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 830 | from holding_esI2[OF this assms(1)] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 831 | show ?thesis . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 832 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 833 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 834 | end | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 835 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 836 | context valid_trace_v_n | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 837 | begin | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 838 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 839 | lemma neq_wq': "wq' \<noteq> []" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 840 | proof (unfold wq'_def, rule someI2) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 841 | show "distinct rest \<and> set rest = set rest" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 842 | by (simp add: distinct_rest) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 843 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 844 | fix x | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 845 | assume " distinct x \<and> set x = set rest" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 846 | thus "x \<noteq> []" using rest_nnl by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 847 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 848 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 849 | definition "taker = hd wq'" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 850 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 851 | definition "rest' = tl wq'" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 852 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 853 | lemma eq_wq': "wq' = taker # rest'" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 854 | by (simp add: neq_wq' rest'_def taker_def) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 855 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 856 | lemma next_th_taker: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 857 | shows "next_th s th cs taker" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 858 | using rest_nnl taker_def wq'_def wq_s_cs | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 859 | by (auto simp:next_th_def) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 860 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 861 | lemma taker_unique: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 862 | assumes "next_th s th cs taker'" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 863 | shows "taker' = taker" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 864 | proof - | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 865 | from assms | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 866 | obtain rest' where | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 867 | h: "wq s cs = th # rest'" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 868 | "taker' = hd (SOME q. distinct q \<and> set q = set rest')" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 869 | by (unfold next_th_def, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 870 | with wq_s_cs have "rest' = rest" by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 871 | thus ?thesis using h(2) taker_def wq'_def by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 872 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 873 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 874 | lemma waiting_set_eq: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 875 |   "{(Th th', Cs cs) |th'. next_th s th cs th'} = {(Th taker, Cs cs)}"
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 876 | by (smt all_not_in_conv bot.extremum insertI1 insert_subset | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 877 | mem_Collect_eq next_th_taker subsetI subset_antisym taker_def taker_unique) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 878 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 879 | lemma holding_set_eq: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 880 |   "{(Cs cs, Th th') |th'.  next_th s th cs th'} = {(Cs cs, Th taker)}"
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 881 | using next_th_taker taker_def waiting_set_eq | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 882 | by fastforce | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 883 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 884 | lemma holding_taker: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 885 | shows "holding (e#s) taker cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 886 | by (unfold s_holding_def, fold wq_def, unfold wq_es_cs, | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 887 | auto simp:neq_wq' taker_def) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 888 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 889 | lemma waiting_esI2: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 890 | assumes "waiting s t cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 891 | and "t \<noteq> taker" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 892 | shows "waiting (e#s) t cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 893 | proof - | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 894 | have "t \<in> set wq'" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 895 | proof(unfold wq'_def, rule someI2) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 896 | show "distinct rest \<and> set rest = set rest" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 897 | by (simp add: distinct_rest) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 898 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 899 | fix x | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 900 | assume "distinct x \<and> set x = set rest" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 901 | moreover have "t \<in> set rest" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 902 | using assms(1) cs_waiting_def waiting_eq wq_s_cs by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 903 | ultimately show "t \<in> set x" by simp | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 904 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 905 | moreover have "t \<noteq> hd wq'" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 906 | using assms(2) taker_def by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 907 | ultimately show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 908 | by (unfold s_waiting_def, fold wq_def, unfold wq_es_cs, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 909 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 910 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 911 | lemma waiting_esE: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 912 | assumes "waiting (e#s) t c" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 913 | obtains "c \<noteq> cs" "waiting s t c" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 914 | | "c = cs" "t \<noteq> taker" "waiting s t cs" "t \<in> set rest'" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 915 | proof(cases "c = cs") | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 916 | case False | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 917 | hence "wq (e#s) c = wq s c" using is_v by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 918 | with assms have "waiting s t c" using cs_waiting_def waiting_eq by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 919 | from that(1)[OF False this] show ?thesis . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 920 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 921 | case True | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 922 | from assms[unfolded s_waiting_def True, folded wq_def, unfolded wq_es_cs] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 923 | have "t \<noteq> hd wq'" "t \<in> set wq'" by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 924 | hence "t \<noteq> taker" by (simp add: taker_def) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 925 | moreover hence "t \<noteq> th" using assms neq_t_th by blast | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 926 | moreover have "t \<in> set rest" by (simp add: `t \<in> set wq'` th'_in_inv) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 927 | ultimately have "waiting s t cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 928 | by (metis cs_waiting_def list.distinct(2) list.sel(1) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 929 | list.set_sel(2) rest_def waiting_eq wq_s_cs) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 930 | show ?thesis using that(2) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 931 | using True `t \<in> set wq'` `t \<noteq> taker` `waiting s t cs` eq_wq' by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 932 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 933 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 934 | lemma holding_esI1: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 935 | assumes "c = cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 936 | and "t = taker" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 937 | shows "holding (e#s) t c" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 938 | by (unfold assms, simp add: holding_taker) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 939 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 940 | lemma holding_esE: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 941 | assumes "holding (e#s) t c" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 942 | obtains "c = cs" "t = taker" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 943 | | "c \<noteq> cs" "holding s t c" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 944 | proof(cases "c = cs") | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 945 | case True | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 946 | from assms[unfolded True, unfolded s_holding_def, | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 947 | folded wq_def, unfolded wq_es_cs] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 948 | have "t = taker" by (simp add: taker_def) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 949 | from that(1)[OF True this] show ?thesis . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 950 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 951 | case False | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 952 | hence "wq (e#s) c = wq s c" using is_v by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 953 | from assms[unfolded s_holding_def, folded wq_def, | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 954 | unfolded this, unfolded wq_def, folded s_holding_def] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 955 | have "holding s t c" . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 956 | from that(2)[OF False this] show ?thesis . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 957 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 958 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 959 | end | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 960 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 961 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 962 | context valid_trace_v_e | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 963 | begin | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 964 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 965 | lemma nil_wq': "wq' = []" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 966 | proof (unfold wq'_def, rule someI2) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 967 | show "distinct rest \<and> set rest = set rest" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 968 | by (simp add: distinct_rest) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 969 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 970 | fix x | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 971 | assume " distinct x \<and> set x = set rest" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 972 | thus "x = []" using rest_nil by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 973 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 974 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 975 | lemma no_taker: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 976 | assumes "next_th s th cs taker" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 977 | shows "False" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 978 | proof - | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 979 | from assms[unfolded next_th_def] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 980 | obtain rest' where "wq s cs = th # rest'" "rest' \<noteq> []" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 981 | by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 982 | thus ?thesis using rest_def rest_nil by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 983 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 984 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 985 | lemma waiting_set_eq: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 986 |   "{(Th th', Cs cs) |th'. next_th s th cs th'} = {}"
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 987 | using no_taker by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 988 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 989 | lemma holding_set_eq: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 990 |   "{(Cs cs, Th th') |th'.  next_th s th cs th'} = {}"
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 991 | using no_taker by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 992 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 993 | lemma no_holding: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 994 | assumes "holding (e#s) taker cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 995 | shows False | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 996 | proof - | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 997 | from wq_es_cs[unfolded nil_wq'] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 998 | have " wq (e # s) cs = []" . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 999 | from assms[unfolded s_holding_def, folded wq_def, unfolded this] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1000 | show ?thesis by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1001 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1002 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1003 | lemma no_waiting: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1004 | assumes "waiting (e#s) t cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1005 | shows False | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1006 | proof - | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1007 | from wq_es_cs[unfolded nil_wq'] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1008 | have " wq (e # s) cs = []" . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1009 | from assms[unfolded s_waiting_def, folded wq_def, unfolded this] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1010 | show ?thesis by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1011 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1012 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1013 | lemma waiting_esI2: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1014 | assumes "waiting s t c" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1015 | shows "waiting (e#s) t c" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1016 | proof - | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1017 | have "c \<noteq> cs" using assms | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1018 | using cs_waiting_def rest_nil waiting_eq wq_s_cs by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1019 | from waiting_esI1[OF assms this] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1020 | show ?thesis . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1021 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1022 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1023 | lemma waiting_esE: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1024 | assumes "waiting (e#s) t c" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1025 | obtains "c \<noteq> cs" "waiting s t c" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1026 | proof(cases "c = cs") | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1027 | case False | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1028 | hence "wq (e#s) c = wq s c" using is_v by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1029 | with assms have "waiting s t c" using cs_waiting_def waiting_eq by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1030 | from that(1)[OF False this] show ?thesis . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1031 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1032 | case True | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1033 | from no_waiting[OF assms[unfolded True]] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1034 | show ?thesis by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1035 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1036 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1037 | lemma holding_esE: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1038 | assumes "holding (e#s) t c" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1039 | obtains "c \<noteq> cs" "holding s t c" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1040 | proof(cases "c = cs") | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1041 | case True | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1042 | from no_holding[OF assms[unfolded True]] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1043 | show ?thesis by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1044 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1045 | case False | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1046 | hence "wq (e#s) c = wq s c" using is_v by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1047 | from assms[unfolded s_holding_def, folded wq_def, | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1048 | unfolded this, unfolded wq_def, folded s_holding_def] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1049 | have "holding s t c" . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1050 | from that[OF False this] show ?thesis . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1051 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1052 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1053 | end | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1054 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1055 | lemma rel_eqI: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1056 | assumes "\<And> x y. (x,y) \<in> A \<Longrightarrow> (x,y) \<in> B" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1057 | and "\<And> x y. (x,y) \<in> B \<Longrightarrow> (x, y) \<in> A" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1058 | shows "A = B" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1059 | using assms by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1060 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1061 | lemma in_RAG_E: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1062 | assumes "(n1, n2) \<in> RAG (s::state)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1063 | obtains (waiting) th cs where "n1 = Th th" "n2 = Cs cs" "waiting s th cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1064 | | (holding) th cs where "n1 = Cs cs" "n2 = Th th" "holding s th cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1065 | using assms[unfolded s_RAG_def, folded waiting_eq holding_eq] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1066 | by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1067 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1068 | context valid_trace_v | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1069 | begin | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1070 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1071 | lemma RAG_es: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1072 | "RAG (e # s) = | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1073 |    RAG s - {(Cs cs, Th th)} -
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1074 |      {(Th th', Cs cs) |th'. next_th s th cs th'} \<union>
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1075 |      {(Cs cs, Th th') |th'.  next_th s th cs th'}" (is "?L = ?R")
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1076 | proof(rule rel_eqI) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1077 | fix n1 n2 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1078 | assume "(n1, n2) \<in> ?L" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1079 | thus "(n1, n2) \<in> ?R" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1080 | proof(cases rule:in_RAG_E) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1081 | case (waiting th' cs') | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1082 | show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1083 | proof(cases "rest = []") | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1084 | case False | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1085 | interpret h_n: valid_trace_v_n s e th cs | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1086 | by (unfold_locales, insert False, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1087 | from waiting(3) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1088 | show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1089 | proof(cases rule:h_n.waiting_esE) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1090 | case 1 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1091 | with waiting(1,2) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1092 | show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1093 | by (unfold h_n.waiting_set_eq h_n.holding_set_eq s_RAG_def, | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1094 | fold waiting_eq, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1095 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1096 | case 2 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1097 | with waiting(1,2) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1098 | show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1099 | by (unfold h_n.waiting_set_eq h_n.holding_set_eq s_RAG_def, | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1100 | fold waiting_eq, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1101 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1102 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1103 | case True | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1104 | interpret h_e: valid_trace_v_e s e th cs | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1105 | by (unfold_locales, insert True, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1106 | from waiting(3) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1107 | show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1108 | proof(cases rule:h_e.waiting_esE) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1109 | case 1 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1110 | with waiting(1,2) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1111 | show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1112 | by (unfold h_e.waiting_set_eq h_e.holding_set_eq s_RAG_def, | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1113 | fold waiting_eq, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1114 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1115 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1116 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1117 | case (holding th' cs') | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1118 | show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1119 | proof(cases "rest = []") | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1120 | case False | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1121 | interpret h_n: valid_trace_v_n s e th cs | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1122 | by (unfold_locales, insert False, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1123 | from holding(3) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1124 | show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1125 | proof(cases rule:h_n.holding_esE) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1126 | case 1 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1127 | with holding(1,2) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1128 | show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1129 | by (unfold h_n.waiting_set_eq h_n.holding_set_eq s_RAG_def, | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1130 | fold waiting_eq, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1131 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1132 | case 2 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1133 | with holding(1,2) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1134 | show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1135 | by (unfold h_n.waiting_set_eq h_n.holding_set_eq s_RAG_def, | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1136 | fold holding_eq, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1137 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1138 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1139 | case True | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1140 | interpret h_e: valid_trace_v_e s e th cs | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1141 | by (unfold_locales, insert True, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1142 | from holding(3) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1143 | show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1144 | proof(cases rule:h_e.holding_esE) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1145 | case 1 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1146 | with holding(1,2) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1147 | show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1148 | by (unfold h_e.waiting_set_eq h_e.holding_set_eq s_RAG_def, | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1149 | fold holding_eq, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1150 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1151 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1152 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1153 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1154 | fix n1 n2 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1155 | assume h: "(n1, n2) \<in> ?R" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1156 | show "(n1, n2) \<in> ?L" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1157 | proof(cases "rest = []") | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1158 | case False | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1159 | interpret h_n: valid_trace_v_n s e th cs | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1160 | by (unfold_locales, insert False, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1161 | from h[unfolded h_n.waiting_set_eq h_n.holding_set_eq] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1162 | have "((n1, n2) \<in> RAG s \<and> (n1 \<noteq> Cs cs \<or> n2 \<noteq> Th th) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1163 | \<and> (n1 \<noteq> Th h_n.taker \<or> n2 \<noteq> Cs cs)) \<or> | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1164 | (n2 = Th h_n.taker \<and> n1 = Cs cs)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1165 | by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1166 | thus ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1167 | proof | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1168 | assume "n2 = Th h_n.taker \<and> n1 = Cs cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1169 | with h_n.holding_taker | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1170 | show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1171 | by (unfold s_RAG_def, fold holding_eq, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1172 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1173 | assume h: "(n1, n2) \<in> RAG s \<and> | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1174 | (n1 \<noteq> Cs cs \<or> n2 \<noteq> Th th) \<and> (n1 \<noteq> Th h_n.taker \<or> n2 \<noteq> Cs cs)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1175 | hence "(n1, n2) \<in> RAG s" by simp | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1176 | thus ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1177 | proof(cases rule:in_RAG_E) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1178 | case (waiting th' cs') | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1179 | from h and this(1,2) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1180 | have "th' \<noteq> h_n.taker \<or> cs' \<noteq> cs" by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1181 | hence "waiting (e#s) th' cs'" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1182 | proof | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1183 | assume "cs' \<noteq> cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1184 | from waiting_esI1[OF waiting(3) this] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1185 | show ?thesis . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1186 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1187 | assume neq_th': "th' \<noteq> h_n.taker" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1188 | show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1189 | proof(cases "cs' = cs") | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1190 | case False | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1191 | from waiting_esI1[OF waiting(3) this] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1192 | show ?thesis . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1193 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1194 | case True | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1195 | from h_n.waiting_esI2[OF waiting(3)[unfolded True] neq_th', folded True] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1196 | show ?thesis . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1197 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1198 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1199 | thus ?thesis using waiting(1,2) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1200 | by (unfold s_RAG_def, fold waiting_eq, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1201 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1202 | case (holding th' cs') | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1203 | from h this(1,2) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1204 | have "cs' \<noteq> cs \<or> th' \<noteq> th" by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1205 | hence "holding (e#s) th' cs'" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1206 | proof | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1207 | assume "cs' \<noteq> cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1208 | from holding_esI2[OF this holding(3)] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1209 | show ?thesis . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1210 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1211 | assume "th' \<noteq> th" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1212 | from holding_esI1[OF holding(3) this] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1213 | show ?thesis . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1214 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1215 | thus ?thesis using holding(1,2) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1216 | by (unfold s_RAG_def, fold holding_eq, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1217 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1218 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1219 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1220 | case True | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1221 | interpret h_e: valid_trace_v_e s e th cs | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1222 | by (unfold_locales, insert True, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1223 | from h[unfolded h_e.waiting_set_eq h_e.holding_set_eq] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1224 | have h_s: "(n1, n2) \<in> RAG s" "(n1, n2) \<noteq> (Cs cs, Th th)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1225 | by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1226 | from h_s(1) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1227 | show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1228 | proof(cases rule:in_RAG_E) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1229 | case (waiting th' cs') | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1230 | from h_e.waiting_esI2[OF this(3)] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1231 | show ?thesis using waiting(1,2) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1232 | by (unfold s_RAG_def, fold waiting_eq, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1233 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1234 | case (holding th' cs') | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1235 | with h_s(2) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1236 | have "cs' \<noteq> cs \<or> th' \<noteq> th" by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1237 | thus ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1238 | proof | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1239 | assume neq_cs: "cs' \<noteq> cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1240 | from holding_esI2[OF this holding(3)] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1241 | show ?thesis using holding(1,2) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1242 | by (unfold s_RAG_def, fold holding_eq, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1243 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1244 | assume "th' \<noteq> th" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1245 | from holding_esI1[OF holding(3) this] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1246 | show ?thesis using holding(1,2) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1247 | by (unfold s_RAG_def, fold holding_eq, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1248 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1249 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1250 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1251 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1252 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1253 | end | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1254 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1255 | lemma step_RAG_v: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1256 | assumes vt: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1257 | "vt (V th cs#s)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1258 | shows " | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1259 | RAG (V th cs # s) = | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1260 |   RAG s - {(Cs cs, Th th)} -
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1261 |   {(Th th', Cs cs) |th'. next_th s th cs th'} \<union>
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1262 |   {(Cs cs, Th th') |th'.  next_th s th cs th'}" (is "?L = ?R")
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1263 | proof - | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1264 | interpret vt_v: valid_trace_v s "V th cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1265 | using assms step_back_vt by (unfold_locales, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1266 | show ?thesis using vt_v.RAG_es . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1267 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1268 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1269 | lemma (in valid_trace_create) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1270 | th_not_in_threads: "th \<notin> threads s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1271 | proof - | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1272 | from pip_e[unfolded is_create] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1273 | show ?thesis by (cases, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1274 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1275 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1276 | lemma (in valid_trace_create) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1277 |   threads_es [simp]: "threads (e#s) = threads s \<union> {th}"
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1278 | by (unfold is_create, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1279 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1280 | lemma (in valid_trace_exit) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1281 |   threads_es [simp]: "threads (e#s) = threads s - {th}"
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1282 | by (unfold is_exit, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1283 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1284 | lemma (in valid_trace_p) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1285 | threads_es [simp]: "threads (e#s) = threads s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1286 | by (unfold is_p, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1287 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1288 | lemma (in valid_trace_v) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1289 | threads_es [simp]: "threads (e#s) = threads s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1290 | by (unfold is_v, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1291 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1292 | lemma (in valid_trace_v) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1293 | th_not_in_rest[simp]: "th \<notin> set rest" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1294 | proof | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1295 | assume otherwise: "th \<in> set rest" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1296 | have "distinct (wq s cs)" by (simp add: wq_distinct) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1297 | from this[unfolded wq_s_cs] and otherwise | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1298 | show False by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1299 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1300 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1301 | lemma (in valid_trace_v) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1302 |   set_wq_es_cs [simp]: "set (wq (e#s) cs) = set (wq s cs) - {th}"
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1303 | proof(unfold wq_es_cs wq'_def, rule someI2) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1304 | show "distinct rest \<and> set rest = set rest" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1305 | by (simp add: distinct_rest) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1306 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1307 | fix x | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1308 | assume "distinct x \<and> set x = set rest" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1309 |   thus "set x = set (wq s cs) - {th}" 
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1310 | by (unfold wq_s_cs, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1311 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1312 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1313 | lemma (in valid_trace_exit) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1314 | th_not_in_wq: "th \<notin> set (wq s cs)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1315 | proof - | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1316 | from pip_e[unfolded is_exit] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1317 | show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1318 | by (cases, unfold holdents_def s_holding_def, fold wq_def, | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1319 | auto elim!:runing_wqE) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1320 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1321 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1322 | lemma (in valid_trace) wq_threads: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1323 | assumes "th \<in> set (wq s cs)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1324 | shows "th \<in> threads s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1325 | using assms | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1326 | proof(induct rule:ind) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1327 | case (Nil) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1328 | thus ?case by (auto simp:wq_def) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1329 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1330 | case (Cons s e) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1331 | interpret vt_e: valid_trace_e s e using Cons by simp | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1332 | show ?case | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1333 | proof(cases e) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1334 | case (Create th' prio') | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1335 | interpret vt: valid_trace_create s e th' prio' | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1336 | using Create by (unfold_locales, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1337 | show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1338 | using Cons.hyps(2) Cons.prems by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1339 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1340 | case (Exit th') | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1341 | interpret vt: valid_trace_exit s e th' | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1342 | using Exit by (unfold_locales, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1343 | show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1344 | using Cons.hyps(2) Cons.prems vt.th_not_in_wq by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1345 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1346 | case (P th' cs') | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1347 | interpret vt: valid_trace_p s e th' cs' | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1348 | using P by (unfold_locales, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1349 | show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1350 | using Cons.hyps(2) Cons.prems readys_threads | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1351 | runing_ready vt.is_p vt.runing_th_s vt_e.wq_in_inv | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1352 | by fastforce | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1353 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1354 | case (V th' cs') | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1355 | interpret vt: valid_trace_v s e th' cs' | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1356 | using V by (unfold_locales, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1357 | show ?thesis using Cons | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1358 | using vt.is_v vt.threads_es vt_e.wq_in_inv by blast | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1359 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1360 | case (Set th' prio) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1361 | interpret vt: valid_trace_set s e th' prio | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1362 | using Set by (unfold_locales, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1363 | show ?thesis using Cons.hyps(2) Cons.prems vt.is_set | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1364 | by (auto simp:wq_def Let_def) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1365 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1366 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1367 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1368 | context valid_trace | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1369 | begin | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1370 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1371 | lemma dm_RAG_threads: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1372 | assumes in_dom: "(Th th) \<in> Domain (RAG s)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1373 | shows "th \<in> threads s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1374 | proof - | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1375 | from in_dom obtain n where "(Th th, n) \<in> RAG s" by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1376 | moreover from RAG_target_th[OF this] obtain cs where "n = Cs cs" by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1377 | ultimately have "(Th th, Cs cs) \<in> RAG s" by simp | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1378 | hence "th \<in> set (wq s cs)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1379 | by (unfold s_RAG_def, auto simp:cs_waiting_def) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1380 | from wq_threads [OF this] show ?thesis . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1381 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1382 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1383 | lemma cp_le: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1384 | assumes th_in: "th \<in> threads s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1385 | shows "cp s th \<le> Max ((\<lambda> th. (preced th s)) ` threads s)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1386 | proof(unfold cp_eq_cpreced cpreced_def cs_dependants_def) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1387 |   show "Max ((\<lambda>th. preced th s) ` ({th} \<union> {th'. (Th th', Th th) \<in> (RAG (wq s))\<^sup>+}))
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1388 | \<le> Max ((\<lambda>th. preced th s) ` threads s)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1389 | (is "Max (?f ` ?A) \<le> Max (?f ` ?B)") | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1390 | proof(rule Max_f_mono) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1391 |     show "{th} \<union> {th'. (Th th', Th th) \<in> (RAG (wq s))\<^sup>+} \<noteq> {}" by simp
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1392 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1393 | from finite_threads | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1394 | show "finite (threads s)" . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1395 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1396 | from th_in | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1397 |     show "{th} \<union> {th'. (Th th', Th th) \<in> (RAG (wq s))\<^sup>+} \<subseteq> threads s"
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1398 | apply (auto simp:Domain_def) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1399 | apply (rule_tac dm_RAG_threads) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1400 | apply (unfold trancl_domain [of "RAG s", symmetric]) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1401 | by (unfold cs_RAG_def s_RAG_def, auto simp:Domain_def) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1402 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1403 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1404 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1405 | lemma max_cp_eq: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1406 | shows "Max ((cp s) ` threads s) = Max ((\<lambda> th. (preced th s)) ` threads s)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1407 | (is "?l = ?r") | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1408 | proof(cases "threads s = {}")
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1409 | case True | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1410 | thus ?thesis by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1411 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1412 | case False | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1413 | have "?l \<in> ((cp s) ` threads s)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1414 | proof(rule Max_in) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1415 | from finite_threads | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1416 | show "finite (cp s ` threads s)" by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1417 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1418 |     from False show "cp s ` threads s \<noteq> {}" by auto
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1419 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1420 | then obtain th | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1421 | where th_in: "th \<in> threads s" and eq_l: "?l = cp s th" by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1422 | have "\<dots> \<le> ?r" by (rule cp_le[OF th_in]) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1423 | moreover have "?r \<le> cp s th" (is "Max (?f ` ?A) \<le> cp s th") | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1424 | proof - | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1425 | have "?r \<in> (?f ` ?A)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1426 | proof(rule Max_in) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1427 | from finite_threads | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1428 | show " finite ((\<lambda>th. preced th s) ` threads s)" by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1429 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1430 |       from False show " (\<lambda>th. preced th s) ` threads s \<noteq> {}" by auto
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1431 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1432 | then obtain th' where | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1433 | th_in': "th' \<in> ?A " and eq_r: "?r = ?f th'" by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1434 | from le_cp [of th'] eq_r | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1435 | have "?r \<le> cp s th'" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1436 | moreover have "\<dots> \<le> cp s th" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1437 | proof(fold eq_l) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1438 | show " cp s th' \<le> Max (cp s ` threads s)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1439 | proof(rule Max_ge) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1440 | from th_in' show "cp s th' \<in> cp s ` threads s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1441 | by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1442 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1443 | from finite_threads | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1444 | show "finite (cp s ` threads s)" by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1445 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1446 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1447 | ultimately show ?thesis by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1448 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1449 | ultimately show ?thesis using eq_l by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1450 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1451 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1452 | lemma max_cp_eq_the_preced: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1453 | shows "Max ((cp s) ` threads s) = Max (the_preced s ` threads s)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1454 | using max_cp_eq using the_preced_def by presburger | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1455 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1456 | end | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1457 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1458 | lemma preced_v [simp]: "preced th' (V th cs#s) = preced th' s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1459 | by (unfold preced_def, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1460 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1461 | lemma (in valid_trace_v) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1462 | preced_es: "preced th (e#s) = preced th s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1463 | by (unfold is_v preced_def, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1464 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1465 | lemma the_preced_v[simp]: "the_preced (V th cs#s) = the_preced s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1466 | proof | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1467 | fix th' | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1468 | show "the_preced (V th cs # s) th' = the_preced s th'" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1469 | by (unfold the_preced_def preced_def, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1470 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1471 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1472 | lemma (in valid_trace_v) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1473 | the_preced_es: "the_preced (e#s) = the_preced s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1474 | by (unfold is_v preced_def, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1475 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1476 | context valid_trace_p | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1477 | begin | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1478 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1479 | lemma not_holding_es_th_cs: "\<not> holding s th cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1480 | proof | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1481 | assume otherwise: "holding s th cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1482 | from pip_e[unfolded is_p] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1483 | show False | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1484 | proof(cases) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1485 | case (thread_P) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1486 | moreover have "(Cs cs, Th th) \<in> RAG s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1487 | using otherwise cs_holding_def | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1488 | holding_eq th_not_in_wq by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1489 | ultimately show ?thesis by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1490 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1491 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1492 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1493 | lemma waiting_kept: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1494 | assumes "waiting s th' cs'" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1495 | shows "waiting (e#s) th' cs'" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1496 | using assms | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1497 | by (metis cs_waiting_def hd_append2 list.sel(1) list.set_intros(2) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1498 | rotate1.simps(2) self_append_conv2 set_rotate1 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1499 | th_not_in_wq waiting_eq wq_es_cs wq_neq_simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1500 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1501 | lemma holding_kept: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1502 | assumes "holding s th' cs'" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1503 | shows "holding (e#s) th' cs'" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1504 | proof(cases "cs' = cs") | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1505 | case False | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1506 | hence "wq (e#s) cs' = wq s cs'" by simp | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1507 | with assms show ?thesis using cs_holding_def holding_eq by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1508 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1509 | case True | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1510 | from assms[unfolded s_holding_def, folded wq_def] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1511 | obtain rest where eq_wq: "wq s cs' = th'#rest" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1512 | by (metis empty_iff list.collapse list.set(1)) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1513 | hence "wq (e#s) cs' = th'#(rest@[th])" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1514 | by (simp add: True wq_es_cs) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1515 | thus ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1516 | by (simp add: cs_holding_def holding_eq) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1517 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1518 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1519 | end | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1520 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1521 | locale valid_trace_p_h = valid_trace_p + | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1522 | assumes we: "wq s cs = []" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1523 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1524 | locale valid_trace_p_w = valid_trace_p + | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1525 | assumes wne: "wq s cs \<noteq> []" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1526 | begin | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1527 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1528 | definition "holder = hd (wq s cs)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1529 | definition "waiters = tl (wq s cs)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1530 | definition "waiters' = waiters @ [th]" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1531 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1532 | lemma wq_s_cs: "wq s cs = holder#waiters" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1533 | by (simp add: holder_def waiters_def wne) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1534 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1535 | lemma wq_es_cs': "wq (e#s) cs = holder#waiters@[th]" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1536 | by (simp add: wq_es_cs wq_s_cs) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1537 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1538 | lemma waiting_es_th_cs: "waiting (e#s) th cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1539 | using cs_waiting_def th_not_in_wq waiting_eq wq_es_cs' wq_s_cs by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1540 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1541 | lemma RAG_edge: "(Th th, Cs cs) \<in> RAG (e#s)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1542 | by (unfold s_RAG_def, fold waiting_eq, insert waiting_es_th_cs, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1543 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1544 | lemma holding_esE: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1545 | assumes "holding (e#s) th' cs'" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1546 | obtains "holding s th' cs'" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1547 | using assms | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1548 | proof(cases "cs' = cs") | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1549 | case False | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1550 | hence "wq (e#s) cs' = wq s cs'" by simp | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1551 | with assms show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1552 | using cs_holding_def holding_eq that by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1553 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1554 | case True | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1555 | with assms show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1556 | by (metis cs_holding_def holding_eq list.sel(1) list.set_intros(1) that | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1557 | wq_es_cs' wq_s_cs) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1558 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1559 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1560 | lemma waiting_esE: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1561 | assumes "waiting (e#s) th' cs'" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1562 | obtains "th' \<noteq> th" "waiting s th' cs'" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1563 | | "th' = th" "cs' = cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1564 | proof(cases "waiting s th' cs'") | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1565 | case True | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1566 | have "th' \<noteq> th" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1567 | proof | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1568 | assume otherwise: "th' = th" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1569 | from True[unfolded this] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1570 | show False by (simp add: th_not_waiting) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1571 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1572 | from that(1)[OF this True] show ?thesis . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1573 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1574 | case False | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1575 | hence "th' = th \<and> cs' = cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1576 | by (metis assms cs_waiting_def holder_def list.sel(1) rotate1.simps(2) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1577 | set_ConsD set_rotate1 waiting_eq wq_es_cs wq_es_cs' wq_neq_simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1578 | with that(2) show ?thesis by metis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1579 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1580 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1581 | lemma RAG_es: "RAG (e # s) =  RAG s \<union> {(Th th, Cs cs)}" (is "?L = ?R")
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1582 | proof(rule rel_eqI) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1583 | fix n1 n2 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1584 | assume "(n1, n2) \<in> ?L" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1585 | thus "(n1, n2) \<in> ?R" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1586 | proof(cases rule:in_RAG_E) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1587 | case (waiting th' cs') | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1588 | from this(3) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1589 | show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1590 | proof(cases rule:waiting_esE) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1591 | case 1 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1592 | thus ?thesis using waiting(1,2) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1593 | by (unfold s_RAG_def, fold waiting_eq, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1594 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1595 | case 2 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1596 | thus ?thesis using waiting(1,2) by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1597 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1598 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1599 | case (holding th' cs') | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1600 | from this(3) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1601 | show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1602 | proof(cases rule:holding_esE) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1603 | case 1 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1604 | with holding(1,2) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1605 | show ?thesis by (unfold s_RAG_def, fold holding_eq, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1606 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1607 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1608 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1609 | fix n1 n2 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1610 | assume "(n1, n2) \<in> ?R" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1611 | hence "(n1, n2) \<in> RAG s \<or> (n1 = Th th \<and> n2 = Cs cs)" by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1612 | thus "(n1, n2) \<in> ?L" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1613 | proof | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1614 | assume "(n1, n2) \<in> RAG s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1615 | thus ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1616 | proof(cases rule:in_RAG_E) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1617 | case (waiting th' cs') | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1618 | from waiting_kept[OF this(3)] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1619 | show ?thesis using waiting(1,2) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1620 | by (unfold s_RAG_def, fold waiting_eq, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1621 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1622 | case (holding th' cs') | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1623 | from holding_kept[OF this(3)] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1624 | show ?thesis using holding(1,2) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1625 | by (unfold s_RAG_def, fold holding_eq, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1626 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1627 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1628 | assume "n1 = Th th \<and> n2 = Cs cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1629 | thus ?thesis using RAG_edge by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1630 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1631 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1632 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1633 | end | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1634 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1635 | context valid_trace_p_h | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1636 | begin | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1637 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1638 | lemma wq_es_cs': "wq (e#s) cs = [th]" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1639 | using wq_es_cs[unfolded we] by simp | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1640 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1641 | lemma holding_es_th_cs: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1642 | shows "holding (e#s) th cs" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1643 | proof - | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1644 | from wq_es_cs' | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1645 | have "th \<in> set (wq (e#s) cs)" "th = hd (wq (e#s) cs)" by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1646 | thus ?thesis using cs_holding_def holding_eq by blast | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1647 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1648 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1649 | lemma RAG_edge: "(Cs cs, Th th) \<in> RAG (e#s)" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1650 | by (unfold s_RAG_def, fold holding_eq, insert holding_es_th_cs, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1651 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1652 | lemma waiting_esE: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1653 | assumes "waiting (e#s) th' cs'" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1654 | obtains "waiting s th' cs'" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1655 | using assms | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1656 | by (metis cs_waiting_def event.distinct(15) is_p list.sel(1) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1657 | set_ConsD waiting_eq we wq_es_cs' wq_neq_simp wq_out_inv) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1658 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1659 | lemma holding_esE: | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1660 | assumes "holding (e#s) th' cs'" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1661 | obtains "cs' \<noteq> cs" "holding s th' cs'" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1662 | | "cs' = cs" "th' = th" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1663 | proof(cases "cs' = cs") | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1664 | case True | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1665 | from held_unique[OF holding_es_th_cs assms[unfolded True]] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1666 | have "th' = th" by simp | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1667 | from that(2)[OF True this] show ?thesis . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1668 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1669 | case False | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1670 | have "holding s th' cs'" using assms | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1671 | using False cs_holding_def holding_eq by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1672 | from that(1)[OF False this] show ?thesis . | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1673 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1674 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1675 | lemma RAG_es: "RAG (e # s) =  RAG s \<union> {(Cs cs, Th th)}" (is "?L = ?R")
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1676 | proof(rule rel_eqI) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1677 | fix n1 n2 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1678 | assume "(n1, n2) \<in> ?L" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1679 | thus "(n1, n2) \<in> ?R" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1680 | proof(cases rule:in_RAG_E) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1681 | case (waiting th' cs') | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1682 | from this(3) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1683 | show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1684 | proof(cases rule:waiting_esE) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1685 | case 1 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1686 | thus ?thesis using waiting(1,2) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1687 | by (unfold s_RAG_def, fold waiting_eq, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1688 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1689 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1690 | case (holding th' cs') | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1691 | from this(3) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1692 | show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1693 | proof(cases rule:holding_esE) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1694 | case 1 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1695 | with holding(1,2) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1696 | show ?thesis by (unfold s_RAG_def, fold holding_eq, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1697 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1698 | case 2 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1699 | with holding(1,2) show ?thesis by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1700 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1701 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1702 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1703 | fix n1 n2 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1704 | assume "(n1, n2) \<in> ?R" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1705 | hence "(n1, n2) \<in> RAG s \<or> (n1 = Cs cs \<and> n2 = Th th)" by auto | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1706 | thus "(n1, n2) \<in> ?L" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1707 | proof | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1708 | assume "(n1, n2) \<in> RAG s" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1709 | thus ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1710 | proof(cases rule:in_RAG_E) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1711 | case (waiting th' cs') | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1712 | from waiting_kept[OF this(3)] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1713 | show ?thesis using waiting(1,2) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1714 | by (unfold s_RAG_def, fold waiting_eq, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1715 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1716 | case (holding th' cs') | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1717 | from holding_kept[OF this(3)] | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1718 | show ?thesis using holding(1,2) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1719 | by (unfold s_RAG_def, fold holding_eq, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1720 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1721 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1722 | assume "n1 = Cs cs \<and> n2 = Th th" | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1723 | with holding_es_th_cs | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1724 | show ?thesis | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1725 | by (unfold s_RAG_def, fold holding_eq, auto) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1726 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1727 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1728 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1729 | end | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1730 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1731 | context valid_trace_p | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1732 | begin | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1733 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1734 | lemma RAG_es': "RAG (e # s) =  (if (wq s cs = []) then RAG s \<union> {(Cs cs, Th th)}
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1735 |                                                   else RAG s \<union> {(Th th, Cs cs)})"
 | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1736 | proof(cases "wq s cs = []") | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1737 | case True | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1738 | interpret vt_p: valid_trace_p_h using True | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1739 | by (unfold_locales, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1740 | show ?thesis by (simp add: vt_p.RAG_es vt_p.we) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1741 | next | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1742 | case False | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1743 | interpret vt_p: valid_trace_p_w using False | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1744 | by (unfold_locales, simp) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1745 | show ?thesis by (simp add: vt_p.RAG_es vt_p.wne) | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1746 | qed | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1747 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1748 | end | 
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1749 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1750 | |
| 
c495eb16beb6
CpsG.thy restored. It was deleted. But now restored as a temporary holder of PIPBasics.thy.
 zhangx parents: diff
changeset | 1751 | end |