src/HOLCF/Tools/Domain/domain_theorems.ML
changeset 35451 a726a033b313
parent 35448 f9f73f0475eb
child 35452 cf8c5a751a9a
equal deleted inserted replaced
35450:e9ef2b50ac59 35451:a726a033b313
   195 val (result, thy) =
   195 val (result, thy) =
   196   Domain_Constructors.add_domain_constructors
   196   Domain_Constructors.add_domain_constructors
   197     (Long_Name.base_name dname) dom_eqn
   197     (Long_Name.base_name dname) dom_eqn
   198     (rep_const, abs_const) (ax_rep_iso, ax_abs_iso) thy;
   198     (rep_const, abs_const) (ax_rep_iso, ax_abs_iso) thy;
   199 
   199 
   200 val axs_con_def = #con_defs result;
   200 val con_appls = #con_betas result;
   201 val con_compacts = #con_compacts result;
   201 val con_compacts = #con_compacts result;
   202 val sel_rews = #sel_rews result;
   202 val sel_rews = #sel_rews result;
   203 
   203 
   204 (* ----- theorems concerning the isomorphism -------------------------------- *)
   204 (* ----- theorems concerning the isomorphism -------------------------------- *)
   205 
   205 
   242     in pg (def::betas) appl (K [rtac reflexive_thm 1]) end;
   242     in pg (def::betas) appl (K [rtac reflexive_thm 1]) end;
   243 end;
   243 end;
   244 
   244 
   245 val _ = trace "Proving when_appl...";
   245 val _ = trace "Proving when_appl...";
   246 val when_appl = appl_of_def ax_when_def;
   246 val when_appl = appl_of_def ax_when_def;
   247 val _ = trace "Proving con_appls...";
       
   248 val con_appls = map appl_of_def axs_con_def;
       
   249 
   247 
   250 local
   248 local
   251   fun arg2typ n arg =
   249   fun arg2typ n arg =
   252     let val t = TVar (("'a", n), pcpoS)
   250     let val t = TVar (("'a", n), pcpoS)
   253     in (n + 1, if is_lazy arg then mk_uT t else t) end;
   251     in (n + 1, if is_lazy arg then mk_uT t else t) end;