Nominal/nominal_dt_rawfuns.ML
branchNominal2-Isabelle2016
changeset 3243 c4f31f1564b7
parent 3239 67370521c09c
child 3245 017e33849f4d
--- a/Nominal/nominal_dt_rawfuns.ML	Mon Jul 20 11:21:59 2015 +0100
+++ b/Nominal/nominal_dt_rawfuns.ML	Sat Mar 19 21:06:48 2016 +0000
@@ -261,7 +261,9 @@
  
     val {fs, simps, inducts, ...} = info; 
 
-    val morphism = Proof_Context.export_morphism lthy'' lthy
+    val morphism =
+      Proof_Context.export_morphism lthy''
+        (Proof_Context.transfer (Proof_Context.theory_of lthy'') lthy)
     val simps_exp = map (Morphism.thm morphism) (the simps)
     val inducts_exp = map (Morphism.thm morphism) (the inducts)
     
@@ -334,7 +336,9 @@
 
       val {fs, simps, ...} = info;
 
-      val morphism = Proof_Context.export_morphism lthy'' lthy
+      val morphism =
+        Proof_Context.export_morphism lthy''
+          (Proof_Context.transfer (Proof_Context.theory_of lthy'') lthy)
       val simps_exp = map (Morphism.thm morphism) (the simps)
     in
       (fs, simps_exp, lthy'')
@@ -355,13 +359,12 @@
     val goals =
       HOLogic.mk_Trueprop (foldr1 HOLogic.mk_conj
         (map single_goal (perm_fns ~~ perm_types ~~ perm_indnames)))
-
-    val simpset = put_simpset HOL_basic_ss ctxt addsimps (@{thm permute_zero} :: perm_defs)
-
-    val tac = (Old_Datatype_Aux.ind_tac induct perm_indnames 
-               THEN_ALL_NEW asm_simp_tac simpset) 1
   in
-    Goal.prove ctxt perm_indnames [] goals (K tac)
+    Goal.prove ctxt perm_indnames [] goals
+      (fn {context = ctxt', ...} =>
+        (Old_Datatype_Aux.ind_tac ctxt' induct perm_indnames THEN_ALL_NEW
+          asm_simp_tac
+            (put_simpset HOL_basic_ss ctxt' addsimps (@{thm permute_zero} :: perm_defs))) 1)
     |> Old_Datatype_Aux.split_conj_thm
   end
 
@@ -379,14 +382,12 @@
     val goals =
       HOLogic.mk_Trueprop (foldr1 HOLogic.mk_conj
         (map single_goal (perm_fns ~~ perm_types ~~ perm_indnames)))
-
-    (* FIXME proper goal context *)
-    val simpset = put_simpset HOL_basic_ss ctxt addsimps (@{thm permute_plus} :: perm_defs)
-
-    val tac = (Old_Datatype_Aux.ind_tac induct perm_indnames
-               THEN_ALL_NEW asm_simp_tac simpset) 1
   in
-    Goal.prove ctxt ("p" :: "q" :: perm_indnames) [] goals (K tac)
+    Goal.prove ctxt ("p" :: "q" :: perm_indnames) [] goals
+      (fn {context = ctxt', ...} =>
+        (Old_Datatype_Aux.ind_tac ctxt' induct perm_indnames THEN_ALL_NEW
+          asm_simp_tac
+            (put_simpset HOL_basic_ss ctxt' addsimps (@{thm permute_plus} :: perm_defs))) 1)
     |> Old_Datatype_Aux.split_conj_thm 
   end