equal
deleted
inserted
replaced
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 |