equal
deleted
inserted
replaced
169 "AI (WHILE b DO c) S = |
169 "AI (WHILE b DO c) S = |
170 bfilter b False (pfp_above (%S. AI c (bfilter b True S)) S)" |
170 bfilter b False (pfp_above (%S. AI c (bfilter b True S)) S)" |
171 |
171 |
172 lemma AI_sound: "(c,s) \<Rightarrow> t \<Longrightarrow> s <:: S \<Longrightarrow> t <:: AI c S" |
172 lemma AI_sound: "(c,s) \<Rightarrow> t \<Longrightarrow> s <:: S \<Longrightarrow> t <:: AI c S" |
173 proof(induct c arbitrary: s t S) |
173 proof(induct c arbitrary: s t S) |
174 case SKIP thus ?case by fastsimp |
174 case SKIP thus ?case by fastforce |
175 next |
175 next |
176 case Assign thus ?case |
176 case Assign thus ?case |
177 by (auto simp: lookup_update aval'_sound) |
177 by (auto simp: lookup_update aval'_sound) |
178 next |
178 next |
179 case Semi thus ?case by fastsimp |
179 case Semi thus ?case by fastforce |
180 next |
180 next |
181 case If thus ?case by (auto simp: in_rep_join_UpI bfilter_sound) |
181 case If thus ?case by (auto simp: in_rep_join_UpI bfilter_sound) |
182 next |
182 next |
183 case (While b c) |
183 case (While b c) |
184 let ?P = "pfp_above (%S. AI c (bfilter b True S)) S" |
184 let ?P = "pfp_above (%S. AI c (bfilter b True S)) S" |