
diff -r a66f81c264aa -r 89a2ff3f82c7 FSet.thy
--- a/FSet.thy	Wed Oct 28 10:17:07 2009 +0100
+++ b/FSet.thy	Wed Oct 28 10:29:00 2009 +0100
@@ -274,23 +274,25 @@
   apply(auto intro: list_eq.intros)
   done
 
+lemma fun_rel_id:
+  "op = ===> op = \<equiv> op ="
+  apply (rule eq_reflection)
+  apply (rule ext)
+  apply (rule ext)
+  apply (simp)
+  apply (auto)
+  apply (rule ext)
+  apply (simp)
+  done
+
 lemma ho_map_rsp:
   "op = ===> op = ===> op \<approx> ===> op \<approx> map map"
-  apply (simp add: FUN_REL.simps)
-  apply (rule allI)
-  apply (rule allI)
-  apply (rule impI)
-  apply (rule allI)
-  apply (rule allI)
-  apply (rule impI)
-  sorry (* apply (auto simp add: map_rsp[of "xa" "ya"]) *)
+  by (simp add: fun_rel_id map_rsp)
 
 lemma map_append :
   "(map f ((a::'a list) @ b)) \<approx>
   ((map f a) ::'a list) @ (map f b)"
- apply simp
- apply (rule list_eq_refl)
- done
+ by simp (rule list_eq_refl)
 
 thm list.induct
 lemma list_induct_hol4:
@@ -531,7 +533,6 @@
 *}
 *)
 
-(* These do not work without proper definitions to rewrite back *)
 local_setup {* lift_theorem_fset @{binding "m1_lift"} @{thm m1} *}
 local_setup {* lift_theorem_fset @{binding "leqi4_lift"} @{thm list_eq.intros(4)} *}
 local_setup {* lift_theorem_fset @{binding "leqi5_lift"} @{thm list_eq.intros(5)} *}
@@ -554,28 +555,5 @@
   val cv = cterm_of @{theory} ((term_of @{cpat "REP_fset"}) $ v)
 *}
 
-ML {*
-  Toplevel.program (fn () =>
-    MetaSimplifier.rewrite_rule @{thms QUOT_TYPE_I_fset.thm10} (
-      Drule.instantiate' [] [NONE, SOME (cv)] @{thm leqi4_lift}
-    )
-  )
-*}
-
-
-
-(*prove aaa: {* (Thm.term_of cgoal2) *}
-  apply (tactic {* LocalDefs.unfold_tac @{context} fset_defs *} )
-  apply (atomize(full))
-  apply (tactic {* transconv_fset_tac' @{context} 1 *})
-  done*)
-
-(*
-datatype obj1 =
-  OVAR1 "string"
-| OBJ1 "(string * (string \<Rightarrow> obj1)) list"
-| INVOKE1 "obj1 \<Rightarrow> string"
-| UPDATE1 "obj1 \<Rightarrow> string \<Rightarrow> (string \<Rightarrow> obj1)"
-*)
 
 end




