From e8465698038044a4cd0fca206326e94ca09a4c5d Mon Sep 17 00:00:00 2001 From: Michael McInerney Date: Fri, 15 Mar 2024 21:53:03 +1030 Subject: [PATCH] lib/monads: add reader_case_option_wp Signed-off-by: Michael McInerney --- lib/Monads/reader_option/Reader_Option_VCG.thy | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/Monads/reader_option/Reader_Option_VCG.thy b/lib/Monads/reader_option/Reader_Option_VCG.thy index d7f77bae3f..512b271222 100644 --- a/lib/Monads/reader_option/Reader_Option_VCG.thy +++ b/lib/Monads/reader_option/Reader_Option_VCG.thy @@ -114,6 +114,11 @@ lemma ovalid_if_split: "\ P \ \Q\ f \S\; \P \ \R\ g \S\ \ \ \\s. (P \ Q s) \ (\P \ R s)\ if P then f else g \S\" by simp +lemma reader_case_option_wp[wp]: + "\\x. \P x\ m x \Q\; \P'\ m' \Q\\ + \ \\s. (x = None \ P' s) \ (\y. x = Some y \ P y s)\ case_option m' m x \Q\" + by (cases x; simp) + lemma ovalid_case_prod[wp]: assumes "(\x y. ovalid (P x y) (B x y) Q)" shows "ovalid (case v of (x, y) \ P x y) (case v of (x, y) \ B x y) Q"