add attribute 'case_names' to 'set_case'
authordesharna
Fri, 26 Sep 2014 14:35:09 +0200
changeset 58456 8bdcff16124d
parent 58455 126c353540fc
child 58457 01d9908477b3
add attribute 'case_names' to 'set_case'
src/HOL/Tools/BNF/bnf_fp_def_sugar.ML
--- a/src/HOL/Tools/BNF/bnf_fp_def_sugar.ML	Fri Sep 26 09:58:35 2014 +0200
+++ b/src/HOL/Tools/BNF/bnf_fp_def_sugar.ML	Fri Sep 26 14:35:09 2014 +0200
@@ -600,9 +600,13 @@
               val consumes_attr = Attrib.internal (K (Rule_Cases.consumes 1));
               val cases_set_attr =
                 Attrib.internal (K (Induct.cases_pred (name_of_set set)));
+
+              val ctr_names = quasi_unambiguous_case_names (flat
+                (map (uncurry mk_names o map_prod length name_of_ctr) (premss ~~ ctrAs)));
+              val case_names_attr = Attrib.internal (K (Rule_Cases.case_names ctr_names));
             in
               (* TODO: @{attributes [elim?]} *)
-              (thm, [consumes_attr, cases_set_attr])
+              (thm, [consumes_attr, cases_set_attr, case_names_attr])
             end) setAs)
         end;