src/HOL/IMP/Live.thy
changeset 67613 ce654b0e6d69
parent 67406 23307fd33906
child 69712 dc85b5b3a532
equal deleted inserted replaced
67610:4939494ed791 67613:ce654b0e6d69
   174 by (auto simp: fun_eq_iff[symmetric])
   174 by (auto simp: fun_eq_iff[symmetric])
   175 
   175 
   176 text\<open>Now the opposite direction.\<close>
   176 text\<open>Now the opposite direction.\<close>
   177 
   177 
   178 lemma SKIP_bury[simp]:
   178 lemma SKIP_bury[simp]:
   179   "SKIP = bury c X \<longleftrightarrow> c = SKIP | (EX x a. c = x::=a & x \<notin> X)"
   179   "SKIP = bury c X \<longleftrightarrow> c = SKIP | (\<exists>x a. c = x::=a & x \<notin> X)"
   180 by (cases c) auto
   180 by (cases c) auto
   181 
   181 
   182 lemma Assign_bury[simp]: "x::=a = bury c X \<longleftrightarrow> c = x::=a & x : X"
   182 lemma Assign_bury[simp]: "x::=a = bury c X \<longleftrightarrow> c = x::=a \<and> x \<in> X"
   183 by (cases c) auto
   183 by (cases c) auto
   184 
   184 
   185 lemma Seq_bury[simp]: "bc\<^sub>1;;bc\<^sub>2 = bury c X \<longleftrightarrow>
   185 lemma Seq_bury[simp]: "bc\<^sub>1;;bc\<^sub>2 = bury c X \<longleftrightarrow>
   186   (EX c\<^sub>1 c\<^sub>2. c = c\<^sub>1;;c\<^sub>2 & bc\<^sub>2 = bury c\<^sub>2 X & bc\<^sub>1 = bury c\<^sub>1 (L c\<^sub>2 X))"
   186   (\<exists>c\<^sub>1 c\<^sub>2. c = c\<^sub>1;;c\<^sub>2 & bc\<^sub>2 = bury c\<^sub>2 X & bc\<^sub>1 = bury c\<^sub>1 (L c\<^sub>2 X))"
   187 by (cases c) auto
   187 by (cases c) auto
   188 
   188 
   189 lemma If_bury[simp]: "IF b THEN bc1 ELSE bc2 = bury c X \<longleftrightarrow>
   189 lemma If_bury[simp]: "IF b THEN bc1 ELSE bc2 = bury c X \<longleftrightarrow>
   190   (EX c1 c2. c = IF b THEN c1 ELSE c2 &
   190   (\<exists>c1 c2. c = IF b THEN c1 ELSE c2 &
   191      bc1 = bury c1 X & bc2 = bury c2 X)"
   191      bc1 = bury c1 X & bc2 = bury c2 X)"
   192 by (cases c) auto
   192 by (cases c) auto
   193 
   193 
   194 lemma While_bury[simp]: "WHILE b DO bc' = bury c X \<longleftrightarrow>
   194 lemma While_bury[simp]: "WHILE b DO bc' = bury c X \<longleftrightarrow>
   195   (EX c'. c = WHILE b DO c' & bc' = bury c' (L (WHILE b DO c') X))"
   195   (\<exists>c'. c = WHILE b DO c' & bc' = bury c' (L (WHILE b DO c') X))"
   196 by (cases c) auto
   196 by (cases c) auto
   197 
   197 
   198 theorem bury_correct2:
   198 theorem bury_correct2:
   199   "(bury c X,s) \<Rightarrow> s'  \<Longrightarrow> s = t on L c X \<Longrightarrow>
   199   "(bury c X,s) \<Rightarrow> s'  \<Longrightarrow> s = t on L c X \<Longrightarrow>
   200   \<exists> t'. (c,t) \<Rightarrow> t' & s' = t' on X"
   200   \<exists> t'. (c,t) \<Rightarrow> t' & s' = t' on X"