equal
deleted
inserted
replaced
278 |
278 |
279 method_setup analz_mono_contra = \<open> |
279 method_setup analz_mono_contra = \<open> |
280 Scan.succeed (fn ctxt => SIMPLE_METHOD (REPEAT_FIRST (analz_mono_contra_tac ctxt)))\<close> |
280 Scan.succeed (fn ctxt => SIMPLE_METHOD (REPEAT_FIRST (analz_mono_contra_tac ctxt)))\<close> |
281 "for proving theorems of the form X \<notin> analz (knows Spy evs) \<longrightarrow> P" |
281 "for proving theorems of the form X \<notin> analz (knows Spy evs) \<longrightarrow> P" |
282 |
282 |
283 subsubsection\<open>Useful for case analysis on whether a hash is a spoof or not\<close> |
283 text\<open>Useful for case analysis on whether a hash is a spoof or not\<close> |
284 |
|
285 lemmas syan_impI = impI [where P = "Y \<notin> synth (analz (knows Spy evs))"] for Y evs |
284 lemmas syan_impI = impI [where P = "Y \<notin> synth (analz (knows Spy evs))"] for Y evs |
286 |
285 |
287 ML |
286 ML |
288 \<open> |
287 \<open> |
289 fun synth_analz_mono_contra_tac ctxt = |
288 fun synth_analz_mono_contra_tac ctxt = |