tuning
authorblanchet
Mon, 28 Mar 2016 12:05:47 +0200
changeset 62719 2e05b5ad6ae1
parent 62718 27333dc58e28
child 62720 2ceae1e761bd
tuning
src/HOL/Tools/BNF/bnf_fp_n2m.ML
src/HOL/Tools/BNF/bnf_fp_n2m_sugar.ML
--- a/src/HOL/Tools/BNF/bnf_fp_n2m.ML	Mon Mar 28 12:05:47 2016 +0200
+++ b/src/HOL/Tools/BNF/bnf_fp_n2m.ML	Mon Mar 28 12:05:47 2016 +0200
@@ -47,8 +47,8 @@
     Const (@{const_name map_sum}, fT --> gT --> mk_sumT (fAT, gAT) --> mk_sumT (fBT, gBT)) $ f $ g
   end;
 
-fun construct_mutualized_fp fp mutual_cliques fpTs (fp_results : (int * fp_result) list) bs resBs
-    (resDs, Dss) bnfs (absT_infos : absT_info list) lthy =
+fun construct_mutualized_fp fp flat_mutual_cliques fpTs indexed_fp_ress bs resBs (resDs, Dss) bnfs
+    (absT_infos : absT_info list) lthy =
   let
     val time = time lthy;
     val timer = time (Timer.startRealTimer ());
@@ -57,7 +57,7 @@
     val b_name = mk_common_name b_names;
     val b = Binding.name b_name;
 
-    fun of_fp_res get = map (uncurry nth o swap o apsnd get) fp_results;
+    fun of_fp_res get = map (uncurry nth o swap o apsnd get) indexed_fp_ress;
     fun mk_co_algT T U = case_fp fp (T --> U) (U --> T);
     fun co_swap pair = case_fp fp I swap pair;
     val mk_co_comp = HOLogic.mk_comp o co_swap;
@@ -202,11 +202,11 @@
         val raw_phis = map (extract o HOLogic.dest_Trueprop o Thm.concl_of) rel_xtor_co_inducts;
         val thetas =
           AList.group (op =)
-            (mutual_cliques ~~
+            (flat_mutual_cliques ~~
               map (fn (t, u) => (#1 (dest_Var t), Thm.cterm_of lthy u)) (raw_phis ~~ pre_phis));
       in
         map2 (infer_instantiate lthy o the o AList.lookup (op =) thetas)
-        mutual_cliques rel_xtor_co_inducts
+        flat_mutual_cliques rel_xtor_co_inducts
       end
 
     val xtor_rel_co_induct =
@@ -270,7 +270,7 @@
       |> mk_Frees' "s" rec_strTs;
 
     val xtor_co_recs = of_fp_res #xtor_co_recs;
-    val ns = map (length o #Ts o snd) fp_results;
+    val ns = map (length o #Ts o snd) indexed_fp_ress;
 
     fun foldT_of_recT recT =
       let
@@ -303,10 +303,10 @@
         val (mutual_clique, TUs) =
           map_split dest_co_algT (binder_fun_types (foldT_of_recT (fastype_of approx_rec)))
           |>> map subst
-          |> `(fn (_, Ys) =>
-            nth mutual_cliques (find_index (fn X => X = the (find_first (can dest_TFree) Ys)) Xs))
+          |> `(fn (_, Ys) => nth flat_mutual_cliques
+            (find_index (fn X => X = the (find_first (can dest_TFree) Ys)) Xs))
           ||> uncurry (map2 mk_co_algT);
-        val cands = mutual_cliques ~~ map2 mk_co_algT fold_preTs' Xs;
+        val cands = flat_mutual_cliques ~~ map2 mk_co_algT fold_preTs' Xs;
         val js = find_indices (fn ((cl, cand), TU) =>
           cl = mutual_clique andalso Type.could_unify (TU, cand)) TUs cands;
         val Tpats = map (fn j => mk_co_algT (nth fold_pre_deads_only_Ts j) (nth Xs j)) js;
--- a/src/HOL/Tools/BNF/bnf_fp_n2m_sugar.ML	Mon Mar 28 12:05:47 2016 +0200
+++ b/src/HOL/Tools/BNF/bnf_fp_n2m_sugar.ML	Mon Mar 28 12:05:47 2016 +0200
@@ -241,12 +241,11 @@
             in fold Term.add_tfreesT dead_Us [] end);
 
         val fp_absT_infos = map #absT_info fp_sugars0;
-
-        val fp_results = map (apsnd #fp_res o `(#fp_res_index)) fp_sugars0
+        val indexed_fp_ress = map (apsnd #fp_res o `(#fp_res_index)) fp_sugars0;
 
         val ((pre_bnfs, absT_infos), (fp_res as {xtor_co_recs = xtor_co_recs0, xtor_co_induct,
                dtor_injects, dtor_ctors, xtor_co_rec_thms, ...}, lthy)) =
-          fp_bnf (construct_mutualized_fp fp mutual_cliques unsorted_fpTs fp_results) fp_bs
+          fp_bnf (construct_mutualized_fp fp mutual_cliques unsorted_fpTs indexed_fp_ress) fp_bs
             unsorted_As' killed_As' fp_eqs no_defs_lthy;
 
         val time = time lthy;