New tactic: prove_unique_tac
authorpaulson
Mon, 16 Dec 1996 10:41:26 +0100
changeset 241546de4b035f00
parent 2414 13df7d6c5c3b
child 2416 8ba800a46e14
New tactic: prove_unique_tac
src/HOL/Auth/Message.ML
     1.1 --- a/src/HOL/Auth/Message.ML	Mon Dec 16 10:40:14 1996 +0100
     1.2 +++ b/src/HOL/Auth/Message.ML	Mon Dec 16 10:41:26 1996 +0100
     1.3 @@ -803,10 +803,19 @@
     1.4  						 impOfSubs analz_subset_parts]) 2 1))
     1.5         ]) i);
     1.6  
     1.7 -(*Useful in many uniqueness proofs*)
     1.8 +(** Useful in many uniqueness proofs **)
     1.9  fun ex_strip_tac i = REPEAT (swap_res_tac [exI, conjI] i) THEN 
    1.10                       assume_tac (i+1);
    1.11  
    1.12 +(*Apply the EX-ALL quantifification to prove uniqueness theorems in 
    1.13 +  their standard form*)
    1.14 +fun prove_unique_tac lemma = 
    1.15 +  EVERY' [dtac lemma,
    1.16 +	  REPEAT o (mp_tac ORELSE' eresolve_tac [asm_rl,exE]),
    1.17 +	  (*Duplicate the assumption*)
    1.18 +	  forw_inst_tac [("psi", "ALL C.?P(C)")] asm_rl,
    1.19 +	  fast_tac (!claset addSDs [spec])];
    1.20 +
    1.21  
    1.22  (*Needed occasionally with spy_analz_tac, e.g. in analz_insert_Key_newK*)
    1.23  goal Set.thy "A Un (B Un A) = B Un A";