src/HOL/BNF/Tools/bnf_gfp.ML
changeset 54793 c99f0fdb0886
parent 54591 c822230fd22b
child 54841 af71b753c459
equal deleted inserted replaced
54792:641ea768f535 54793:c99f0fdb0886
  2234               |> Thm.close_derivation
  2234               |> Thm.close_derivation
  2235           end;
  2235           end;
  2236 
  2236 
  2237         val timer = time (timer "map functions for the new codatatypes");
  2237         val timer = time (timer "map functions for the new codatatypes");
  2238 
  2238 
  2239         val bd = mk_cexp sbd sbd;
       
  2240 
       
  2241         val timer = time (timer "bounds for the new codatatypes");
       
  2242 
       
  2243         val setss_by_bnf = map (fn i => map2 (mk_hset dtors i) ls passiveAs) ks;
  2239         val setss_by_bnf = map (fn i => map2 (mk_hset dtors i) ls passiveAs) ks;
  2244         val setss_by_bnf' = map (fn i => map2 (mk_hset dtor's i) ls passiveBs) ks;
  2240         val setss_by_bnf' = map (fn i => map2 (mk_hset dtor's i) ls passiveBs) ks;
  2245         val setss_by_range = transpose setss_by_bnf;
  2241         val setss_by_range = transpose setss_by_bnf;
  2246 
  2242 
  2247         val dtor_set_thmss =
  2243         val dtor_set_thmss =
  2474         val map_comp0_tacs = map (fn thm => K (rtac (thm RS sym) 1)) map_comp0_thms;
  2470         val map_comp0_tacs = map (fn thm => K (rtac (thm RS sym) 1)) map_comp0_thms;
  2475         val map_cong0_tacs = map (mk_map_cong0_tac m) map_cong0_thms;
  2471         val map_cong0_tacs = map (mk_map_cong0_tac m) map_cong0_thms;
  2476         val set_nat_tacss =
  2472         val set_nat_tacss =
  2477           map2 (map2 (K oo mk_set_map0_tac)) hset_defss (transpose col_natural_thmss);
  2473           map2 (map2 (K oo mk_set_map0_tac)) hset_defss (transpose col_natural_thmss);
  2478 
  2474 
  2479         val bd_co_tacs = replicate n (K (mk_bd_card_order_tac sbd_card_order));
  2475         val bd_co_tacs = replicate n (K (rtac sbd_card_order 1));
  2480         val bd_cinf_tacs = replicate n (K (mk_bd_cinfinite_tac sbd_Cinfinite));
  2476         val bd_cinf_tacs = replicate n (K (rtac (sbd_Cinfinite RS conjunct1) 1));
  2481 
  2477 
  2482         val set_bd_tacss =
  2478         val set_bd_tacss =
  2483           map2 (map2 (K oo mk_set_bd_tac sbd_Cinfinite)) hset_defss (transpose col_bd_thmss);
  2479           map2 (map2 (K oo mk_set_bd_tac sbd_Cinfinite)) hset_defss (transpose col_bd_thmss);
  2484 
  2480 
  2485         val map_wpull_tacs =
  2481         val map_wpull_tacs =
  2680         val (Jbnfs, lthy) =
  2676         val (Jbnfs, lthy) =
  2681           fold_map9 (fn tacs => fn b => fn map_b => fn rel_b => fn set_bs => fn mapx => fn sets =>
  2677           fold_map9 (fn tacs => fn b => fn map_b => fn rel_b => fn set_bs => fn mapx => fn sets =>
  2682               fn T => fn (thms, wits) => fn lthy =>
  2678               fn T => fn (thms, wits) => fn lthy =>
  2683             bnf_def Dont_Inline (user_policy Note_Some) I tacs (wit_tac thms) (SOME deads) map_b
  2679             bnf_def Dont_Inline (user_policy Note_Some) I tacs (wit_tac thms) (SOME deads) map_b
  2684               rel_b set_bs
  2680               rel_b set_bs
  2685               ((((((b, T), fold_rev Term.absfree fs' mapx), sets), bd), wits), NONE) lthy
  2681               ((((((b, T), fold_rev Term.absfree fs' mapx), sets), sbd), wits), NONE) lthy
  2686             |> register_bnf (Local_Theory.full_name lthy b))
  2682             |> register_bnf (Local_Theory.full_name lthy b))
  2687           tacss bs map_bs rel_bs set_bss fs_maps setss_by_bnf Ts all_witss lthy;
  2683           tacss bs map_bs rel_bs set_bss fs_maps setss_by_bnf Ts all_witss lthy;
  2688 
  2684 
  2689         val fold_maps = fold_thms lthy (map (fn bnf =>
  2685         val fold_maps = fold_thms lthy (map (fn bnf =>
  2690           mk_unabs_def m (map_def_of_bnf bnf RS meta_eq_to_obj_eq)) Jbnfs);
  2686           mk_unabs_def m (map_def_of_bnf bnf RS meta_eq_to_obj_eq)) Jbnfs);