src/HOL/IMP/AbsInt1.thy
changeset 44890 22f665a2e91c
parent 44656 22bbd0d1b943
child 44923 b80108b346a9
equal deleted inserted replaced
44889:340df9f3491f 44890:22f665a2e91c
   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"