src/HOL/BNF/Tools/bnf_ctr_sugar.ML
changeset 53798 6a4e3299dfd1
parent 53740 c1911450b84a
child 53805 4163160853fd
equal deleted inserted replaced
53797:576f9637dc7a 53798:6a4e3299dfd1
   131 val cong_attrs = @{attributes [cong]};
   131 val cong_attrs = @{attributes [cong]};
   132 val safe_elim_attrs = @{attributes [elim!]};
   132 val safe_elim_attrs = @{attributes [elim!]};
   133 val iff_attrs = @{attributes [iff]};
   133 val iff_attrs = @{attributes [iff]};
   134 val induct_simp_attrs = @{attributes [induct_simp]};
   134 val induct_simp_attrs = @{attributes [induct_simp]};
   135 val simp_attrs = @{attributes [simp]};
   135 val simp_attrs = @{attributes [simp]};
       
   136 val code_simp_attrs = Code.add_default_eqn_attrib :: simp_attrs;
   136 
   137 
   137 fun unflat_lookup eq xs ys = map (fn xs' => permute_like eq xs xs' ys);
   138 fun unflat_lookup eq xs ys = map (fn xs' => permute_like eq xs xs' ys);
   138 
   139 
   139 fun mk_half_pairss' _ ([], []) = []
   140 fun mk_half_pairss' _ ([], []) = []
   140   | mk_half_pairss' indent (x :: xs, _ :: ys) =
   141   | mk_half_pairss' indent (x :: xs, _ :: ys) =
   756 
   757 
   757         val exhaust_case_names_attr = Attrib.internal (K (Rule_Cases.case_names exhaust_cases));
   758         val exhaust_case_names_attr = Attrib.internal (K (Rule_Cases.case_names exhaust_cases));
   758         val cases_type_attr = Attrib.internal (K (Induct.cases_type dataT_name));
   759         val cases_type_attr = Attrib.internal (K (Induct.cases_type dataT_name));
   759 
   760 
   760         val notes =
   761         val notes =
   761           [(caseN, case_thms, simp_attrs),
   762           [(caseN, case_thms, code_simp_attrs),
   762            (case_congN, [case_cong_thm], []),
   763            (case_congN, [case_cong_thm], []),
   763            (case_convN, case_conv_thms, []),
   764            (case_convN, case_conv_thms, []),
   764            (collapseN, safe_collapse_thms, simp_attrs),
   765            (collapseN, safe_collapse_thms, simp_attrs),
   765            (discN, nontriv_disc_thms, simp_attrs),
   766            (discN, nontriv_disc_thms, simp_attrs),
   766            (discIN, nontriv_discI_thms, []),
   767            (discIN, nontriv_discI_thms, []),