# HG changeset patch # User kuncar # Date 1393351660 -3600 # Node ID 84f6ac9f6e41064534e41d7e61c653d9feff9464 # Parent f1ed1e9cd080fb14e2fe8cdb607a7787a94fbb89 new rule for making rsp theorem more readable diff -r f1ed1e9cd080 -r 84f6ac9f6e41 src/HOL/Lifting.thy --- a/src/HOL/Lifting.thy Tue Feb 25 19:07:14 2014 +0100 +++ b/src/HOL/Lifting.thy Tue Feb 25 19:07:40 2014 +0100 @@ -296,7 +296,10 @@ shows "x = y" using assms by (simp add: invariant_def) -lemma fun_rel_eq_invariant: +lemma fun_rel_eq_invariant: "(op= ===> Lifting.invariant P) = Lifting.invariant (\f. \x. P(f x))" +unfolding invariant_def fun_rel_def by auto + +lemma fun_rel_invariant_rel: shows "((invariant R) ===> S) = (\f g. \x. R x \ S (f x) (g x))" by (auto simp add: invariant_def fun_rel_def) diff -r f1ed1e9cd080 -r 84f6ac9f6e41 src/HOL/Tools/Lifting/lifting_def.ML --- a/src/HOL/Tools/Lifting/lifting_def.ML Tue Feb 25 19:07:14 2014 +0100 +++ b/src/HOL/Tools/Lifting/lifting_def.ML Tue Feb 25 19:07:40 2014 +0100 @@ -506,6 +506,7 @@ let val unfold_conv = Conv.rewrs_conv [@{thm fun_rel_eq_invariant[THEN eq_reflection]}, + @{thm fun_rel_invariant_rel[THEN eq_reflection]}, @{thm fun_rel_eq[THEN eq_reflection]}, @{thm fun_rel_eq_rel[THEN eq_reflection]}, @{thm fun_rel_def[THEN eq_reflection]}]