src/HOLCF/domain/theorems.ML
changeset 4008 2444085532c6
parent 3323 194ae2e0c193
child 4030 ca44afcc259c
equal deleted inserted replaced
4007:1d6aed7ff375 4008:2444085532c6
    60 
    60 
    61 
    61 
    62 fun theorems thy (((dname,_),cons) : eq, eqs :eq list) =
    62 fun theorems thy (((dname,_),cons) : eq, eqs :eq list) =
    63 let
    63 let
    64 
    64 
    65 val dummy = writeln ("Proving isomorphism properties of domain "^dname^"...");
    65 val dummy = writeln ("Proving isomorphism   properties of domain "^dname^"...");
    66 val pg = pg' thy;
    66 val pg = pg' thy;
    67 (*
    67 (*
    68 infixr 0 y;
    68 infixr 0 y;
    69 val b = 0;
    69 val b = 0;
    70 fun _ y t = by t;
    70 fun _ y t = by t;
   326         con_rews, sel_rews, dis_rews, dists_le, dists_eq, inverts, injects,
   326         con_rews, sel_rews, dis_rews, dists_le, dists_eq, inverts, injects,
   327         copy_rews)
   327         copy_rews)
   328 end; (* let *)
   328 end; (* let *)
   329 
   329 
   330 
   330 
   331 fun comp_theorems thy (comp_dname, eqs: eq list, casess, con_rews, copy_rews) =
   331 fun comp_theorems thy (comp_dnam, eqs: eq list, casess, con_rews, copy_rews) =
   332 let
   332 let
       
   333 
       
   334 val dnames = map (fst o fst) eqs;
       
   335 val conss  = map  snd        eqs;
       
   336 val comp_dname = Sign.full_name (sign_of thy) comp_dnam;
   333 
   337 
   334 val dummy = writeln("Proving induction properties of domain "^comp_dname^"...");
   338 val dummy = writeln("Proving induction properties of domain "^comp_dname^"...");
   335 val pg = pg' thy;
   339 val pg = pg' thy;
   336 
       
   337 val dnames = map (fst o fst) eqs;
       
   338 val conss  = map  snd        eqs;
       
   339 
   340 
   340 (* ----- getting the composite axiom and definitions ------------------------ *)
   341 (* ----- getting the composite axiom and definitions ------------------------ *)
   341 
   342 
   342 local val ga = get_axiom thy in
   343 local val ga = get_axiom thy in
   343 val axs_reach      = map (fn dn => ga (dn ^  "_reach"   )) dnames;
   344 val axs_reach      = map (fn dn => ga (dn ^  "_reach"   )) dnames;