src/HOL/Tools/BNF/bnf_fp_def_sugar.ML
changeset 58967 6b6032e99a4b
parent 58966 0297e1277ed2
child 59058 a78612c67ec0
equal deleted inserted replaced
58966:0297e1277ed2 58967:6b6032e99a4b
  2316           derive_induct_recs_thms_for_types plugins pre_bnfs recs_args_types xtor_co_induct
  2316           derive_induct_recs_thms_for_types plugins pre_bnfs recs_args_types xtor_co_induct
  2317             xtor_co_rec_thms live_nesting_bnfs fp_nesting_bnfs fpTs Cs Xs ctrXs_Tsss abs_inverses
  2317             xtor_co_rec_thms live_nesting_bnfs fp_nesting_bnfs fpTs Cs Xs ctrXs_Tsss abs_inverses
  2318             type_definitions abs_inverses ctrss ctr_defss recs rec_defs lthy;
  2318             type_definitions abs_inverses ctrss ctr_defss recs rec_defs lthy;
  2319 
  2319 
  2320         val rec_transfer_thmss =
  2320         val rec_transfer_thmss =
  2321           if live = 0 then replicate nn []
  2321           map single (derive_rec_transfer_thms lthy recs rec_defs recs_args_types);
  2322           else map single (derive_rec_transfer_thms lthy recs rec_defs recs_args_types);
       
  2323 
  2322 
  2324         val induct_type_attr = Attrib.internal o K o Induct.induct_type;
  2323         val induct_type_attr = Attrib.internal o K o Induct.induct_type;
  2325         val induct_pred_attr = Attrib.internal o K o Induct.induct_pred;
  2324         val induct_pred_attr = Attrib.internal o K o Induct.induct_pred;
  2326 
  2325 
  2327         val ((rel_induct_thmss, common_rel_induct_thms),
  2326         val ((rel_induct_thmss, common_rel_induct_thms),
  2485         val coinduct_type_attr = Attrib.internal o K o Induct.coinduct_type;
  2484         val coinduct_type_attr = Attrib.internal o K o Induct.coinduct_type;
  2486         val coinduct_pred_attr = Attrib.internal o K o Induct.coinduct_pred;
  2485         val coinduct_pred_attr = Attrib.internal o K o Induct.coinduct_pred;
  2487 
  2486 
  2488         val flat_corec_thms = append oo append;
  2487         val flat_corec_thms = append oo append;
  2489 
  2488 
  2490         val corec_transfer_thmss =
  2489         val corec_transfer_thmss = map single (derive_corec_transfer_thms lthy corecs corec_defs);
  2491           if live = 0 then replicate nn []
       
  2492           else map single (derive_corec_transfer_thms lthy corecs corec_defs);
       
  2493 
  2490 
  2494         val ((rel_coinduct_thmss, common_rel_coinduct_thms),
  2491         val ((rel_coinduct_thmss, common_rel_coinduct_thms),
  2495              (rel_coinduct_attrs, common_rel_coinduct_attrs)) =
  2492              (rel_coinduct_attrs, common_rel_coinduct_attrs)) =
  2496           if live = 0 then
  2493           if live = 0 then
  2497             ((replicate nn [], []), ([], []))
  2494             ((replicate nn [], []), ([], []))