src/HOL/Tools/function_package/mutual.ML
changeset 22623 5fcee5b319a2
parent 22622 25693088396b
child 22733 0b14bb35be90
--- a/src/HOL/Tools/function_package/mutual.ML	Tue Apr 10 14:11:01 2007 +0200
+++ b/src/HOL/Tools/function_package/mutual.ML	Tue Apr 10 18:09:58 2007 +0200
@@ -269,8 +269,9 @@
     end
     
 
-fun mutual_induct_rules thy induct all_f_defs (Mutual {RST, parts, streeA, ...}) =
+fun mutual_induct_rules lthy induct all_f_defs (Mutual {RST, parts, streeA, ...}) =
     let
+      val cert = cterm_of (ProofContext.theory_of lthy)
       val newPs = map2 (fn Pname => fn MutualPart {cargTs, ...} => 
                                        Free (Pname, cargTs ---> HOLogic.boolT))
                        (mutual_induct_Pnames (length parts))
@@ -288,7 +289,7 @@
       val case_exp = SumTools.mk_sumcases streeA HOLogic.boolT Ps
                      
       val induct_inst =
-          forall_elim (cterm_of thy case_exp) induct
+          forall_elim (cert case_exp) induct
                       |> full_simplify (HOL_basic_ss addsimps (split_apply :: sum_case_rules))
                       |> full_simplify (HOL_basic_ss addsimps all_f_defs)
           
@@ -298,9 +299,9 @@
             val inj = SumTools.mk_inj streeA pthA (foldr1 HOLogic.mk_prod afs)
           in
             rule
-              |> forall_elim (cterm_of thy inj)
+              |> forall_elim (cert inj)
               |> full_simplify (HOL_basic_ss addsimps (split_apply :: sum_case_rules))
-              |> fold_rev (forall_intr o cterm_of thy) (afs @ newPs)
+              |> fold_rev (forall_intr o cert) (afs @ newPs)
           end
           
     in
@@ -308,17 +309,8 @@
     end
     
 
-
-
-
-fun mk_partial_rules_mutual lthy inner_cont (m as Mutual {RST, parts, streeR, fqgars, ...}) proof =
+fun mk_partial_rules_mutual lthy inner_cont (m as Mutual {parts, fqgars, ...}) proof =
     let
-      val thy = ProofContext.theory_of lthy
-                                       
-      (* FIXME !? *)
-      val expand = Assumption.export false lthy (LocalTheory.target_of lthy)
-      val expand_term = Drule.term_rule thy expand
-                        
       val result = inner_cont proof
       val FundefResult {f, G, R, cases, psimps, trsimps, subset_pinducts=[subset_pinduct],simple_pinducts=[simple_pinduct],
                         termination,domintros} = result
@@ -334,14 +326,14 @@
           
       val mpsimps = map2 mk_mpsimp fqgars psimps
       val mtrsimps = map_option (map2 mk_mpsimp fqgars) trsimps
-      val minducts = mutual_induct_rules thy simple_pinduct all_f_defs m
+      val minducts = mutual_induct_rules lthy simple_pinduct all_f_defs m
       val mtermination = full_simplify (HOL_basic_ss addsimps all_f_defs) termination
     in
-      FundefResult { f=expand_term f, G=expand_term G, R=expand_term R,
-                     psimps=map expand mpsimps, subset_pinducts=[expand subset_pinduct], simple_pinducts=map expand minducts,
-                     cases=expand cases, termination=expand mtermination,
-                     domintros=map_option (map expand) domintros,
-                     trsimps=map_option (map expand) mtrsimps}
+      FundefResult { f=f, G=G, R=R,
+                     psimps=mpsimps, subset_pinducts=[subset_pinduct], simple_pinducts=minducts,
+                     cases=cases, termination=mtermination,
+                     domintros=domintros,
+                     trsimps=mtrsimps}
     end