src/CCL/Type.ML
changeset 1087 c1ccf6679a96
parent 757 2ca12511676d
child 1459 d12da312eff4
equal deleted inserted replaced
1086:46a7b619e62e 1087:c1ccf6679a96
   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