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" |