theorems [cases type: bool] = case_split;
authorwenzelm
Wed, 14 Jun 2000 17:59:53 +0200
changeset 9066 b1e874e38dab
parent 9065 15f82c9aa331
child 9067 64464b5f6867
theorems [cases type: bool] = case_split;
src/HOL/PreList.thy
src/HOL/Tools/induct_method.ML
--- a/src/HOL/PreList.thy	Wed Jun 14 17:47:18 2000 +0200
+++ b/src/HOL/PreList.thy	Wed Jun 14 17:59:53 2000 +0200
@@ -11,4 +11,6 @@
   Option + WF_Rel + NatSimprocs + Recdef + Record + RelPow + Calculation + 
   SVC_Oracle:
 
+theorems [cases type: bool] = case_split
+
 end
--- a/src/HOL/Tools/induct_method.ML	Wed Jun 14 17:47:18 2000 +0200
+++ b/src/HOL/Tools/induct_method.ML	Wed Jun 14 17:59:53 2000 +0200
@@ -191,6 +191,8 @@
   ...   cases ... R   - explicit rule
 *)
 
+val case_split = RuleCases.name ["True", "False"] case_split_thm;
+
 local
 
 fun cases_var thm =
@@ -217,7 +219,7 @@
 
     val rules =
       (case (args, facts) of
-        ((None, None), []) => [(case_split_thm, ["True", "False"])]
+        ((None, None), []) => [RuleCases.add case_split]
       | ((Some t, None), []) =>
           let val name = type_name t in
             (case lookup_casesT ctxt name of
@@ -427,6 +429,7 @@
      (inductN, induct_attr, "induction rule for type or set")],
    Method.add_methods
     [("cases", cases_meth oo cases_args, "case analysis on types or sets"),
-     ("induct", induct_meth oo induct_args, "induction on types or sets")]];
+     ("induct", induct_meth oo induct_args, "induction on types or sets")],
+   (#1 o PureThy.add_thms [(("case_split", case_split), [])])];
 
 end;