src/HOL/Auth/Event.thy
changeset 21588 cd0dc678a205
parent 21404 eb85850d3eb7
child 24122 fc7f857d33c8
equal deleted inserted replaced
21587:a3561bfe0ada 21588:cd0dc678a205
   288     dest!: parts_insert_subset_Un [THEN keysFor_mono, THEN [2] rev_subsetD]
   288     dest!: parts_insert_subset_Un [THEN keysFor_mono, THEN [2] rev_subsetD]
   289            analz_subset_parts [THEN keysFor_mono, THEN [2] rev_subsetD]
   289            analz_subset_parts [THEN keysFor_mono, THEN [2] rev_subsetD]
   290     intro: analz_subset_parts [THEN subsetD] parts_mono [THEN [2] rev_subsetD])
   290     intro: analz_subset_parts [THEN subsetD] parts_mono [THEN [2] rev_subsetD])
   291 
   291 
   292 method_setup analz_mono_contra = {*
   292 method_setup analz_mono_contra = {*
   293     Method.no_args
   293     Method.no_args (Method.SIMPLE_METHOD (REPEAT_FIRST analz_mono_contra_tac)) *}
   294       (Method.METHOD (fn facts => REPEAT_FIRST analz_mono_contra_tac)) *}
       
   295     "for proving theorems of the form X \<notin> analz (knows Spy evs) --> P"
   294     "for proving theorems of the form X \<notin> analz (knows Spy evs) --> P"
   296 
   295 
   297 subsubsection{*Useful for case analysis on whether a hash is a spoof or not*}
   296 subsubsection{*Useful for case analysis on whether a hash is a spoof or not*}
   298 
   297 
   299 ML
   298 ML
   347     mp_tac
   346     mp_tac
   348   end;
   347   end;
   349 *}
   348 *}
   350 
   349 
   351 method_setup synth_analz_mono_contra = {*
   350 method_setup synth_analz_mono_contra = {*
   352     Method.no_args
   351     Method.no_args (Method.SIMPLE_METHOD (REPEAT_FIRST synth_analz_mono_contra_tac)) *}
   353       (Method.METHOD (fn facts => REPEAT_FIRST synth_analz_mono_contra_tac)) *}
       
   354     "for proving theorems of the form X \<notin> synth (analz (knows Spy evs)) --> P"
   352     "for proving theorems of the form X \<notin> synth (analz (knows Spy evs)) --> P"
   355 
   353 
   356 end
   354 end