diff --git a/lib/MonadicRewrite.thy b/lib/MonadicRewrite.thy index da51d8c99..860e04b13 100644 --- a/lib/MonadicRewrite.thy +++ b/lib/MonadicRewrite.thy @@ -225,7 +225,7 @@ lemma monadic_rewrite_modify_noop: text \Symbolic execution\ lemma monadic_rewrite_symb_exec_pre: - assumes inv: "\s. g \ (=) s\" + assumes inv: "\P. g \P\" and ef: "empty_fail g" and rv: "\P\ g \\y s. y \ S\" and h': "\rv. rv \ S \ h rv = h'" @@ -261,7 +261,7 @@ lemmas monadic_rewrite_symb_exec2 simplified, THEN monadic_rewrite_trans] lemma monadic_rewrite_symb_exec_r: - "\ \s. m \(=) s\; no_fail P' m; + "\ \P. m \P\; no_fail P' m; \rv. monadic_rewrite F False (Q rv) x (y rv); \P\ m \Q\ \ \ monadic_rewrite F False (P and P') x (m >>= (\rv. y rv))" @@ -276,7 +276,7 @@ lemma monadic_rewrite_symb_exec_r: done lemma monadic_rewrite_symb_exec_r': - "\ \s. m \(=) s\; no_fail P m; + "\ \P. m \P\; no_fail P m; \rv. monadic_rewrite F False (Q rv) x (y rv); \P\ m \Q\ \ \ monadic_rewrite F False P x (m >>= (\rv. y rv))" @@ -286,7 +286,7 @@ lemma monadic_rewrite_symb_exec_r': done lemma monadic_rewrite_symb_exec_l'': - "\ \s. m \(=) s\; empty_fail m; + "\ \P. m \P\; empty_fail m; \ F \ no_fail P' m; \rv. monadic_rewrite F False (Q rv) (x rv) y; \P\ m \Q\ \ @@ -338,7 +338,7 @@ lemmas monadic_rewrite_symb_exec_l monadic_rewrite_symb_exec_l''[where F=False, simplified simp_thms] lemma monadic_rewrite_symb_exec_l_known: - "\ \s. m \(=) s\; empty_fail m; + "\ \P. m \P\; empty_fail m; monadic_rewrite True False Q (x rv) y; \P\ m \\rv' s. rv' = rv \ Q s\ \ \ monadic_rewrite True False P (m >>= x) y" @@ -435,7 +435,7 @@ lemma monadic_rewrite_alternatives: by (auto simp: monadic_rewrite_def alternative_def) lemma monadic_rewrite_rdonly_bind: - "\ \s. f \(=) s\ \ + "\ \P. f \P\ \ \ monadic_rewrite F False \ (alternative (f >>= (\x. g x)) h) (f >>= (\x. alternative (g x) h))" apply (clarsimp simp: monadic_rewrite_def bind_def @@ -444,6 +444,7 @@ lemma monadic_rewrite_rdonly_bind: apply (simp add: image_image split_def cong: image_cong) apply fastforce apply clarsimp + apply (drule hoare_eq_P) apply (frule use_valid, (assumption | rule refl | simp)+) done