157 (*** Conversion Rules for Fixed Points via monotonicity and Tarski ***) |
157 (*** Conversion Rules for Fixed Points via monotonicity and Tarski ***) |
158 |
158 |
159 goal Type.thy "mono(%X.Unit+X)"; |
159 goal Type.thy "mono(%X.Unit+X)"; |
160 by (REPEAT (ares_tac [PlusM,constM,idM] 1)); |
160 by (REPEAT (ares_tac [PlusM,constM,idM] 1)); |
161 qed "NatM"; |
161 qed "NatM"; |
162 val def_NatB = store_thm("def_NatB", result() RS (Nat_def RS def_lfp_Tarski)); |
162 bind_thm("def_NatB", result() RS (Nat_def RS def_lfp_Tarski)); |
163 |
163 |
164 goal Type.thy "mono(%X.(Unit+Sigma(A,%y.X)))"; |
164 goal Type.thy "mono(%X.(Unit+Sigma(A,%y.X)))"; |
165 by (REPEAT (ares_tac [PlusM,SgM,constM,idM] 1)); |
165 by (REPEAT (ares_tac [PlusM,SgM,constM,idM] 1)); |
166 qed "ListM"; |
166 qed "ListM"; |
167 val def_ListB = store_thm("def_ListB", result() RS (List_def RS def_lfp_Tarski)); |
167 bind_thm("def_ListB", result() RS (List_def RS def_lfp_Tarski)); |
168 val def_ListsB = store_thm("def_ListsB", result() RS (Lists_def RS def_gfp_Tarski)); |
168 bind_thm("def_ListsB", result() RS (Lists_def RS def_gfp_Tarski)); |
169 |
169 |
170 goal Type.thy "mono(%X.({} + Sigma(A,%y.X)))"; |
170 goal Type.thy "mono(%X.({} + Sigma(A,%y.X)))"; |
171 by (REPEAT (ares_tac [PlusM,SgM,constM,idM] 1)); |
171 by (REPEAT (ares_tac [PlusM,SgM,constM,idM] 1)); |
172 qed "IListsM"; |
172 qed "IListsM"; |
173 val def_IListsB = store_thm("def_IListsB", result() RS (ILists_def RS def_gfp_Tarski)); |
173 bind_thm("def_IListsB", result() RS (ILists_def RS def_gfp_Tarski)); |
174 |
174 |
175 val ind_type_eqs = [def_NatB,def_ListB,def_ListsB,def_IListsB]; |
175 val ind_type_eqs = [def_NatB,def_ListB,def_ListsB,def_IListsB]; |
176 |
176 |
177 (*** Exhaustion Rules ***) |
177 (*** Exhaustion Rules ***) |
178 |
178 |