equal
deleted
inserted
replaced
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) |