src/HOLCF/Tools/domain/domain_theorems.ML
changeset 26342 0f65fa163304
parent 26336 a0e2b706ce73
child 26343 0dd2eab7b296
equal deleted inserted replaced
26341:2f5a4367a39e 26342:0f65fa163304
     4                 New proofs/tactics by Brian Huffman
     4                 New proofs/tactics by Brian Huffman
     5 
     5 
     6 Proof generator for domain command.
     6 Proof generator for domain command.
     7 *)
     7 *)
     8 
     8 
     9 val HOLCF_ss = simpset();
     9 val HOLCF_ss = @{simpset};
    10 
    10 
    11 structure Domain_Theorems = struct
    11 structure Domain_Theorems = struct
    12 
    12 
    13 local
    13 local
    14 
    14 
   111     cut_facts_tac prems 1,
   111     cut_facts_tac prems 1,
   112     fast_tac HOL_cs 1]);
   112     fast_tac HOL_cs 1]);
   113 
   113 
   114 val dist_eqI = prove_goal (the_context ()) "!!x::'a::po. ~ x << y ==> x ~= y" 
   114 val dist_eqI = prove_goal (the_context ()) "!!x::'a::po. ~ x << y ==> x ~= y" 
   115   (fn prems =>
   115   (fn prems =>
   116     [blast_tac (claset () addDs [antisym_less_inverse]) 1]);
   116     [blast_tac (@{claset} addDs [antisym_less_inverse]) 1]);
   117 
   117 
   118 in
   118 in
   119 
   119 
   120 fun theorems (((dname, _), cons) : eq, eqs : eq list) thy =
   120 fun theorems (((dname, _), cons) : eq, eqs : eq list) thy =
   121 let
   121 let
   636 val n_eqs = length eqs;
   636 val n_eqs = length eqs;
   637 
   637 
   638 (* ----- theorems concerning finite approximation and finite induction ------ *)
   638 (* ----- theorems concerning finite approximation and finite induction ------ *)
   639 
   639 
   640 local
   640 local
   641   val iterate_Cprod_ss = simpset_of (theory "Fix");
   641   val iterate_Cprod_ss = simpset_of @{theory Fix};
   642   val copy_con_rews  = copy_rews @ con_rews;
   642   val copy_con_rews  = copy_rews @ con_rews;
   643   val copy_take_defs =
   643   val copy_take_defs =
   644     (if n_eqs = 1 then [] else [ax_copy2_def]) @ axs_take_def;
   644     (if n_eqs = 1 then [] else [ax_copy2_def]) @ axs_take_def;
   645   val take_stricts =
   645   val take_stricts =
   646     let
   646     let