setup_lifting preprocesses forall_transfer rule by unfolding mem_Collect_eq
authorhuffman
Fri, 20 Apr 2012 10:37:00 +0200
changeset 47623 01e4fdf9d748
parent 47622 6d53f2ef4a97
child 47624 16d433895d2e
setup_lifting preprocesses forall_transfer rule by unfolding mem_Collect_eq
src/HOL/Tools/Lifting/lifting_setup.ML
--- a/src/HOL/Tools/Lifting/lifting_setup.ML	Fri Apr 20 11:17:01 2012 +0200
+++ b/src/HOL/Tools/Lifting/lifting_setup.ML	Fri Apr 20 10:37:00 2012 +0200
@@ -144,6 +144,7 @@
     val (_, qty) = Lifting_Term.quot_thm_rty_qty quot_thm
     val qty_name = (Binding.name o Long_Name.base_name o fst o dest_Type) qty
     fun qualify suffix = Binding.qualified true suffix qty_name
+    val simplify = Raw_Simplifier.rewrite_rule [mk_meta_eq @{thm mem_Collect_eq}]
 
     val lthy'' = case typedef_set of
       Const ("Orderings.top_class.top", _) => 
@@ -163,7 +164,7 @@
         |> (snd oo Local_Theory.note) ((qualify "Ex_transfer", [transfer_attr]), 
           [[typedef_thm, T_def] MRSL @{thm typedef_Ex_transfer}])
         |> (snd oo Local_Theory.note) ((qualify "forall_transfer", [transfer_attr]), 
-          [[typedef_thm, T_def] MRSL @{thm typedef_forall_transfer}])
+          [simplify ([typedef_thm, T_def] MRSL @{thm typedef_forall_transfer})])
   in
     lthy''
       |> (snd oo Local_Theory.note) ((qualify "bi_unique", [transfer_attr]),