FSet.thy
changeset 274 df225aa45770
parent 273 b82e765ca464
child 276 783d6c940e45
--- a/FSet.thy	Wed Nov 04 09:52:31 2009 +0100
+++ b/FSet.thy	Wed Nov 04 10:31:20 2009 +0100
@@ -153,21 +153,16 @@
 term IN
 thm IN_def
 
-(* FIXME: does not work yet 
-quotient_def (for "'a fset")
-  FOLD :: "('b \<Rightarrow> 'b \<Rightarrow> 'b) \<Rightarrow> ('a \<Rightarrow> 'b) \<Rightarrow> 'b \<Rightarrow> 'a fset \<Rightarrow> 'b"
+term fold1
+quotient_def 
+  FOLD :: "('a \<Rightarrow> 'a \<Rightarrow> 'a) \<Rightarrow> ('b \<Rightarrow> 'a) \<Rightarrow> 'a \<Rightarrow> 'b fset \<Rightarrow> 'a"
 where
   "FOLD \<equiv> fold1"
-*)
-local_setup {*
-  old_make_const_def @{binding fold} @{term "fold1::('b \<Rightarrow> 'b \<Rightarrow> 'b) \<Rightarrow> ('a \<Rightarrow> 'b) \<Rightarrow> 'b \<Rightarrow> 'a list \<Rightarrow> 'b"} NoSyn @{typ "'a list"} @{typ "'a fset"} #> snd
-*}
 
 term fold1
 term fold
 thm fold_def
 
-(* FIXME: does not work yet for all types*)
 quotient_def 
   fmap::"('a \<Rightarrow> 'b) \<Rightarrow> 'a fset \<Rightarrow> 'b fset"
 where
@@ -177,7 +172,9 @@
 term fmap
 thm fmap_def
 
-ML {* val defs = @{thms EMPTY_def IN_def FUNION_def CARD_def INSERT_def fmap_def fold_def} *}
+ML {* val defs = @{thms EMPTY_def IN_def FUNION_def CARD_def INSERT_def fmap_def FOLD_def} *}
+ML {* val consts = lookup_quot_consts defs *}
+ML {* val defs_sym = add_lower_defs @{context} defs *}
 
 lemma memb_rsp:
   fixes z