FSet.thy
changeset 165 2c83d04262f9
parent 164 4f00ca4f5ef4
child 167 3413aa899aa7
--- a/FSet.thy	Fri Oct 23 18:20:06 2009 +0200
+++ b/FSet.thy	Sat Oct 24 01:33:29 2009 +0200
@@ -2,6 +2,49 @@
 imports QuotMain
 begin
 
+(* test for get_fun *)
+datatype t =
+   vr "string"
+ | ap "t list"
+ | lm "string" "t"
+
+consts Rt :: "t \<Rightarrow> t \<Rightarrow> bool"
+axioms t_eq: "EQUIV Rt"
+
+quotient qt = "t" / "Rt"
+    by (rule t_eq)
+
+setup {*
+  maps_update @{type_name "list"} {mapfun = @{const_name "map"},      relfun = @{const_name "LIST_REL"}} #>
+  maps_update @{type_name "*"}    {mapfun = @{const_name "prod_fun"}, relfun = @{const_name "prod_rel"}} #>
+  maps_update @{type_name "fun"}  {mapfun = @{const_name "fun_map"},  relfun = @{const_name "FUN_REL"}}
+*}
+
+
+ML {*
+get_fun repF @{typ t} @{typ qt} @{context} @{typ "((((qt \<Rightarrow> qt) \<Rightarrow> qt) \<Rightarrow> qt) list) * nat"}
+ |> fst
+ |> Syntax.string_of_term @{context}
+ |> writeln
+*}
+
+ML {*
+get_fun absF @{typ t} @{typ qt} @{context} @{typ "qt * nat"}
+ |> fst
+ |> Syntax.string_of_term @{context}
+ |> writeln
+*}
+
+ML {*
+get_fun absF @{typ t} @{typ qt} @{context} @{typ "(qt \<Rightarrow> qt) \<Rightarrow> qt"}
+ |> fst
+ |> Syntax.pretty_term @{context}
+ |> Pretty.string_of
+ |> writeln
+*}
+(* end test get_fun *)
+
+
 inductive
   list_eq (infix "\<approx>" 50)
 where