35 ML_file "Tools/primrec_package.ML" |
35 ML_file "Tools/primrec_package.ML" |
36 |
36 |
37 ML \<open> |
37 ML \<open> |
38 structure Lfp = |
38 structure Lfp = |
39 struct |
39 struct |
40 val oper = @{const lfp} |
40 val oper = \<^const>\<open>lfp\<close> |
41 val bnd_mono = @{const bnd_mono} |
41 val bnd_mono = \<^const>\<open>bnd_mono\<close> |
42 val bnd_monoI = @{thm bnd_monoI} |
42 val bnd_monoI = @{thm bnd_monoI} |
43 val subs = @{thm def_lfp_subset} |
43 val subs = @{thm def_lfp_subset} |
44 val Tarski = @{thm def_lfp_unfold} |
44 val Tarski = @{thm def_lfp_unfold} |
45 val induct = @{thm def_induct} |
45 val induct = @{thm def_induct} |
46 end; |
46 end; |
47 |
47 |
48 structure Standard_Prod = |
48 structure Standard_Prod = |
49 struct |
49 struct |
50 val sigma = @{const Sigma} |
50 val sigma = \<^const>\<open>Sigma\<close> |
51 val pair = @{const Pair} |
51 val pair = \<^const>\<open>Pair\<close> |
52 val split_name = \<^const_name>\<open>split\<close> |
52 val split_name = \<^const_name>\<open>split\<close> |
53 val pair_iff = @{thm Pair_iff} |
53 val pair_iff = @{thm Pair_iff} |
54 val split_eq = @{thm split} |
54 val split_eq = @{thm split} |
55 val fsplitI = @{thm splitI} |
55 val fsplitI = @{thm splitI} |
56 val fsplitD = @{thm splitD} |
56 val fsplitD = @{thm splitD} |
59 |
59 |
60 structure Standard_CP = CartProd_Fun (Standard_Prod); |
60 structure Standard_CP = CartProd_Fun (Standard_Prod); |
61 |
61 |
62 structure Standard_Sum = |
62 structure Standard_Sum = |
63 struct |
63 struct |
64 val sum = @{const sum} |
64 val sum = \<^const>\<open>sum\<close> |
65 val inl = @{const Inl} |
65 val inl = \<^const>\<open>Inl\<close> |
66 val inr = @{const Inr} |
66 val inr = \<^const>\<open>Inr\<close> |
67 val elim = @{const case} |
67 val elim = \<^const>\<open>case\<close> |
68 val case_inl = @{thm case_Inl} |
68 val case_inl = @{thm case_Inl} |
69 val case_inr = @{thm case_Inr} |
69 val case_inr = @{thm case_Inr} |
70 val inl_iff = @{thm Inl_iff} |
70 val inl_iff = @{thm Inl_iff} |
71 val inr_iff = @{thm Inr_iff} |
71 val inr_iff = @{thm Inr_iff} |
72 val distinct = @{thm Inl_Inr_iff} |
72 val distinct = @{thm Inl_Inr_iff} |
82 and Su=Standard_Sum val coind = false); |
82 and Su=Standard_Sum val coind = false); |
83 |
83 |
84 |
84 |
85 structure Gfp = |
85 structure Gfp = |
86 struct |
86 struct |
87 val oper = @{const gfp} |
87 val oper = \<^const>\<open>gfp\<close> |
88 val bnd_mono = @{const bnd_mono} |
88 val bnd_mono = \<^const>\<open>bnd_mono\<close> |
89 val bnd_monoI = @{thm bnd_monoI} |
89 val bnd_monoI = @{thm bnd_monoI} |
90 val subs = @{thm def_gfp_subset} |
90 val subs = @{thm def_gfp_subset} |
91 val Tarski = @{thm def_gfp_unfold} |
91 val Tarski = @{thm def_gfp_unfold} |
92 val induct = @{thm def_Collect_coinduct} |
92 val induct = @{thm def_Collect_coinduct} |
93 end; |
93 end; |
94 |
94 |
95 structure Quine_Prod = |
95 structure Quine_Prod = |
96 struct |
96 struct |
97 val sigma = @{const QSigma} |
97 val sigma = \<^const>\<open>QSigma\<close> |
98 val pair = @{const QPair} |
98 val pair = \<^const>\<open>QPair\<close> |
99 val split_name = \<^const_name>\<open>qsplit\<close> |
99 val split_name = \<^const_name>\<open>qsplit\<close> |
100 val pair_iff = @{thm QPair_iff} |
100 val pair_iff = @{thm QPair_iff} |
101 val split_eq = @{thm qsplit} |
101 val split_eq = @{thm qsplit} |
102 val fsplitI = @{thm qsplitI} |
102 val fsplitI = @{thm qsplitI} |
103 val fsplitD = @{thm qsplitD} |
103 val fsplitD = @{thm qsplitD} |
106 |
106 |
107 structure Quine_CP = CartProd_Fun (Quine_Prod); |
107 structure Quine_CP = CartProd_Fun (Quine_Prod); |
108 |
108 |
109 structure Quine_Sum = |
109 structure Quine_Sum = |
110 struct |
110 struct |
111 val sum = @{const qsum} |
111 val sum = \<^const>\<open>qsum\<close> |
112 val inl = @{const QInl} |
112 val inl = \<^const>\<open>QInl\<close> |
113 val inr = @{const QInr} |
113 val inr = \<^const>\<open>QInr\<close> |
114 val elim = @{const qcase} |
114 val elim = \<^const>\<open>qcase\<close> |
115 val case_inl = @{thm qcase_QInl} |
115 val case_inl = @{thm qcase_QInl} |
116 val case_inr = @{thm qcase_QInr} |
116 val case_inr = @{thm qcase_QInr} |
117 val inl_iff = @{thm QInl_iff} |
117 val inl_iff = @{thm QInl_iff} |
118 val inr_iff = @{thm QInr_iff} |
118 val inr_iff = @{thm QInr_iff} |
119 val distinct = @{thm QInl_QInr_iff} |
119 val distinct = @{thm QInl_QInr_iff} |