diff --git a/lib/Monads/Fun_Pred_Syntax.thy b/lib/Monads/Fun_Pred_Syntax.thy index a284367ea5..d733c00f9f 100644 --- a/lib/Monads/Fun_Pred_Syntax.thy +++ b/lib/Monads/Fun_Pred_Syntax.thy @@ -187,6 +187,13 @@ lemma bipred_disj_op_eq[simp]: lemma bipred_le_true[simp]: "R \ \\" by clarsimp +lemma bipred_and_or_True[simp]: + "(P or \\) = \\" + "(\\ or P) = \\" + "(P and \\) = P" + "(\\ and P) = P" + by auto + section \Examples\ diff --git a/lib/Monads/trace/Trace_More_RG.thy b/lib/Monads/trace/Trace_More_RG.thy index b409c3dffe..e868b46f05 100644 --- a/lib/Monads/trace/Trace_More_RG.thy +++ b/lib/Monads/trace/Trace_More_RG.thy @@ -177,19 +177,19 @@ lemma list_cases_weak_twp: done lemma rg_vcg_if_lift2: - "\R\,\R\ f \G\,\\rv s0 s. (P rv s0 s \ X rv s0 s) \ (\ P rv s0 s \ Y rv s0 s)\ \ - \R\,\R\ f \G\,\\rv s0 s. if P rv s0 s then X rv s0 s else Y rv s0 s\" + "\P\,\R\ f \G\,\\rv s0 s. (Q rv s0 s \ X rv s0 s) \ (\ Q rv s0 s \ Y rv s0 s)\ \ + \P\,\R\ f \G\,\\rv s0 s. if Q rv s0 s then X rv s0 s else Y rv s0 s\" - "\R\,\R\ f \G\,\\rv s0 s. (P' rv \ X rv s0 s) \ (\ P' rv \ Y rv s0 s)\ \ - \R\,\R\ f \G\,\\rv. if P' rv then X rv else Y rv\" + "\P\,\R\ f \G\,\\rv s0 s. (Q' rv \ X rv s0 s) \ (\ Q' rv \ Y rv s0 s)\ \ + \P\,\R\ f \G\,\\rv. if Q' rv then X rv else Y rv\" by (auto simp: validI_def) lemma rg_vcg_if_lift_ER: (* Required because of lack of rv in lifting rules *) - "\R\,\R\ f \G\,\\rv s0 s. (P rv s0 s \ X rv s0 s) \ (\ P rv s0 s \ Y rv s0 s)\,\E\ \ - \R\,\R\ f \G\,\\rv s0 s. if P rv s0 s then X rv s0 s else Y rv s0 s\,\E\" + "\P\,\R\ f \G\,\\rv s0 s. (Q rv s0 s \ X rv s0 s) \ (\ Q rv s0 s \ Y rv s0 s)\,\E\ \ + \P\,\R\ f \G\,\\rv s0 s. if Q rv s0 s then X rv s0 s else Y rv s0 s\,\E\" - "\R\,\R\ f \G\,\\rv s0 s. (P' rv \ X rv s0 s) \ (\ P' rv \ Y rv s0 s)\,\E\ \ - \R\,\R\ f \G\,\\rv. if P' rv then X rv else Y rv\,\E\" + "\P\,\R\ f \G\,\\rv s0 s. (Q' rv \ X rv s0 s) \ (\ Q' rv \ Y rv s0 s)\,\E\ \ + \P\,\R\ f \G\,\\rv. if Q' rv then X rv else Y rv\,\E\" by (auto simp: validI_def validIE_def) lemma rg_list_all_lift: diff --git a/lib/Monads/trace/Trace_RG.thy b/lib/Monads/trace/Trace_RG.thy index 23d39732cd..baff602f5b 100644 --- a/lib/Monads/trace/Trace_RG.thy +++ b/lib/Monads/trace/Trace_RG.thy @@ -86,9 +86,9 @@ lemma rg_empty_conds[simp]: by (simp_all add: rely_cond_def guar_cond_def) lemma rg_conds_True[simp]: - "rely_cond \\ s0 tr = True" - "guar_cond \\ s0 tr = True" - by (clarsimp simp: rely_cond_def guar_cond_def)+ + "rely_cond \\ = \\" + "guar_cond \\ = \\" + by (clarsimp simp: rely_cond_def guar_cond_def fun_eq_iff)+ text \ @{text "rely f R s0s"} constructs a new function from @{text f}, where the environment @@ -335,6 +335,7 @@ lemma rgE_TrueI: lemmas twp_post_taut = rg_TrueI[where P="\\", THEN iffD2] lemmas twp_post_tautE = rgE_TrueI[where P="\\", THEN iffD2] +lemmas [elim!] = twp_post_taut twp_post_tautE lemma rg_post_conj[intro]: "\\P\,\R\ f \G\,\Q\; \P\,\R\ f \G\,\Q'\\ \ \P\,\R\ f \G\,\Q and Q'\"