src/HOL/Inductive.thy
changeset 23734 0e11b904b3a3
parent 23708 b5eb0b4dd17d
child 24349 0dd8782fb02d
equal deleted inserted replaced
23733:3f8ad7418e55 23734:0e11b904b3a3
     7 
     7 
     8 theory Inductive 
     8 theory Inductive 
     9 imports FixedPoint Product_Type Sum_Type
     9 imports FixedPoint Product_Type Sum_Type
    10 uses
    10 uses
    11   ("Tools/inductive_package.ML")
    11   ("Tools/inductive_package.ML")
    12   ("Tools/old_inductive_package.ML")
    12   ("Tools/inductive_set_package.ML")
    13   ("Tools/inductive_realizer.ML")
    13   ("Tools/inductive_realizer.ML")
    14   ("Tools/inductive_codegen.ML")
    14   ("Tools/inductive_codegen.ML")
    15   ("Tools/datatype_aux.ML")
    15   ("Tools/datatype_aux.ML")
    16   ("Tools/datatype_prop.ML")
    16   ("Tools/datatype_prop.ML")
    17   ("Tools/datatype_rep_proofs.ML")
    17   ("Tools/datatype_rep_proofs.ML")
    22   ("Tools/datatype_package.ML")
    22   ("Tools/datatype_package.ML")
    23   ("Tools/datatype_codegen.ML")
    23   ("Tools/datatype_codegen.ML")
    24   ("Tools/primrec_package.ML")
    24   ("Tools/primrec_package.ML")
    25 begin
    25 begin
    26 
    26 
    27 subsection {* Inductive sets *}
    27 subsection {* Inductive predicates and sets *}
    28 
    28 
    29 text {* Inversion of injective functions. *}
    29 text {* Inversion of injective functions. *}
    30 
    30 
    31 constdefs
    31 constdefs
    32   myinv :: "('a => 'b) => ('b => 'a)"
    32   myinv :: "('a => 'b) => ('b => 'a)"
    58 hide const myinv
    58 hide const myinv
    59 
    59 
    60 
    60 
    61 text {* Package setup. *}
    61 text {* Package setup. *}
    62 
    62 
    63 ML {* setmp tolerate_legacy_features true use "Tools/old_inductive_package.ML" *}
    63 theorems basic_monos =
    64 setup OldInductivePackage.setup
       
    65 
       
    66 theorems basic_monos [mono] =
       
    67   subset_refl imp_refl disj_mono conj_mono ex_mono all_mono if_bool_eq_conj
    64   subset_refl imp_refl disj_mono conj_mono ex_mono all_mono if_bool_eq_conj
    68   Collect_mono in_mono vimage_mono
    65   Collect_mono in_mono vimage_mono
    69   imp_conv_disj not_not de_Morgan_disj de_Morgan_conj
    66   imp_conv_disj not_not de_Morgan_disj de_Morgan_conj
    70   not_all not_ex
    67   not_all not_ex
    71   Ball_def Bex_def
    68   Ball_def Bex_def
    72   induct_rulify_fallback
    69   induct_rulify_fallback
    73 
    70 
    74 use "Tools/inductive_package.ML"
    71 use "Tools/inductive_package.ML"
    75 setup InductivePackage.setup
    72 setup InductivePackage.setup
    76 
    73 
    77 theorems [mono2] =
    74 theorems [mono] =
    78   imp_refl disj_mono conj_mono ex_mono all_mono if_bool_eq_conj
    75   imp_refl disj_mono conj_mono ex_mono all_mono if_bool_eq_conj
    79   imp_conv_disj not_not de_Morgan_disj de_Morgan_conj
    76   imp_conv_disj not_not de_Morgan_disj de_Morgan_conj
    80   not_all not_ex
    77   not_all not_ex
    81   Ball_def Bex_def
    78   Ball_def Bex_def
    82   induct_rulify_fallback
    79   induct_rulify_fallback
   127 use "Tools/inductive_codegen.ML"
   124 use "Tools/inductive_codegen.ML"
   128 setup InductiveCodegen.setup
   125 setup InductiveCodegen.setup
   129 
   126 
   130 use "Tools/primrec_package.ML"
   127 use "Tools/primrec_package.ML"
   131 
   128 
       
   129 use "Tools/inductive_set_package.ML"
       
   130 setup InductiveSetPackage.setup
       
   131 
   132 text{* Lambda-abstractions with pattern matching: *}
   132 text{* Lambda-abstractions with pattern matching: *}
   133 
   133 
   134 syntax
   134 syntax
   135   "_lam_pats_syntax" :: "cases_syn => 'a => 'b"               ("(%_)" 10)
   135   "_lam_pats_syntax" :: "cases_syn => 'a => 'b"               ("(%_)" 10)
   136 syntax (xsymbols)
   136 syntax (xsymbols)