ported old Nominal to use new datatypes
authorblanchet
Mon, 08 Sep 2014 23:04:18 +0200
changeset 58238 a701907d621e
parent 58237 17200800a553
child 58239 1c5bc387bd4c
ported old Nominal to use new datatypes
src/HOL/Nominal/Examples/SOS.thy
src/HOL/Nominal/Nominal.thy
src/HOL/Nominal/nominal_atoms.ML
src/HOL/Nominal/nominal_datatype.ML
--- a/src/HOL/Nominal/Examples/SOS.thy	Mon Sep 08 20:42:52 2014 +0200
+++ b/src/HOL/Nominal/Examples/SOS.thy	Mon Sep 08 23:04:18 2014 +0200
@@ -11,7 +11,7 @@
 (* Christian Urban.                                       *)
 
 theory SOS
-  imports "Nominal"
+  imports "../Nominal"
 begin
 
 atom_decl name
--- a/src/HOL/Nominal/Nominal.thy	Mon Sep 08 20:42:52 2014 +0200
+++ b/src/HOL/Nominal/Nominal.thy	Mon Sep 08 23:04:18 2014 +0200
@@ -18,10 +18,14 @@
   swap :: "('x \<times> 'x) \<Rightarrow> 'x \<Rightarrow> 'x"
 
 (* a "private" copy of the option type used in the abstraction function *)
-datatype 'a noption = nSome 'a | nNone
+datatype_new 'a noption = nSome 'a | nNone
+
+datatype_compat noption
 
 (* a "private" copy of the product type used in the nominal induct method *)
-datatype ('a, 'b) nprod = nPair 'a 'b
+datatype_new ('a, 'b) nprod = nPair 'a 'b
+
+datatype_compat nprod
 
 (* an auxiliary constant for the decision procedure involving *) 
 (* permutations (to avoid loops when using perm-compositions)  *)
--- a/src/HOL/Nominal/nominal_atoms.ML	Mon Sep 08 20:42:52 2014 +0200
+++ b/src/HOL/Nominal/nominal_atoms.ML	Mon Sep 08 23:04:18 2014 +0200
@@ -100,10 +100,9 @@
     val (_,thy1) = 
     fold_map (fn ak => fn thy => 
           let val dt = ((Binding.name ak, [], NoSyn), [(Binding.name ak, [@{typ nat}], NoSyn)])
-              val (dt_names, thy1) =
-                Old_Datatype.add_datatype Old_Datatype_Aux.default_config [dt] thy;
+              val (dt_names, thy1) = BNF_LFP_Compat.add_datatype BNF_LFP_Compat.Unfold_Nesting [dt] thy;
             
-              val injects = maps (#inject o Old_Datatype_Data.the_info thy1) dt_names;
+              val injects = maps (#inject o BNF_LFP_Compat.the_info thy1 BNF_LFP_Compat.Unfold_Nesting) dt_names;
               val ak_type = Type (Sign.intern_type thy1 ak,[])
               val ak_sign = Sign.intern_const thy1 ak 
               
--- a/src/HOL/Nominal/nominal_datatype.ML	Mon Sep 08 20:42:52 2014 +0200
+++ b/src/HOL/Nominal/nominal_datatype.ML	Mon Sep 08 23:04:18 2014 +0200
@@ -200,9 +200,9 @@
 
     val new_type_names' = map (fn n => n ^ "_Rep") new_type_names;
 
-    val (full_new_type_names',thy1) = Old_Datatype.add_datatype config dts'' thy;
+    val (full_new_type_names',thy1) = BNF_LFP_Compat.add_datatype BNF_LFP_Compat.Unfold_Nesting dts'' thy;
 
-    val {descr, induct, ...} = Old_Datatype_Data.the_info thy1 (hd full_new_type_names');
+    val {descr, induct, ...} = BNF_LFP_Compat.the_info thy1 BNF_LFP_Compat.Unfold_Nesting (hd full_new_type_names');
     fun nth_dtyp i = Old_Datatype_Aux.typ_of_dtyp descr (Old_Datatype_Aux.DtRec i);
 
     val big_name = space_implode "_" new_type_names;