Nominal/Ex/TypeVarsTest.thy
changeset 3239 67370521c09c
parent 3228 040519ec99e9
child 3240 f80fa0d18d81
--- a/Nominal/Ex/TypeVarsTest.thy	Tue Jul 08 11:18:31 2014 +0100
+++ b/Nominal/Ex/TypeVarsTest.thy	Thu Jul 09 02:32:46 2015 +0100
@@ -2,6 +2,37 @@
 imports "../Nominal2" 
 begin
 
+atom_decl var
+
+ML {* trace := true *}
+declare [[ML_print_depth = 1000]]
+
+nominal_datatype exp =
+          Var var
+        | App exp var
+        | LetA as::assn body::exp binds "bn as" in "body" "as"
+        | Lam x::var body::exp binds x in body
+        and assn =
+          ANil | ACons var exp assn
+        binder
+          bn
+        where "bn ANil = []" | "bn (ACons x t as) = (atom x) # (bn as)"
+
+nominal_datatype ('ann::fs) exp2 =
+  Var var
+| App "'ann exp2" var
+| LetA as::"'ann assn2" body::"'ann exp2" binds "bnn as" in body as
+| Lam x::var body::"'ann exp2" binds x in body
+and ('ann::fs) assn2 =
+  ANil 
+| ACons var "'ann exp2" 'ann "'ann assn2"
+binder
+  bnn :: "('ann::fs) assn2 \<Rightarrow> atom list"
+where 
+  "bnn ANil = []" 
+| "bnn (ACons x a t as) = (atom x) # (bnn as)"
+
+
 (* a nominal datatype with type variables and sorts *)
 
 
@@ -54,7 +85,6 @@
 
 
 
-
 end