equal
deleted
inserted
replaced
260 |
260 |
261 ML |
261 ML |
262 {* |
262 {* |
263 fun analz_mono_contra_tac ctxt = |
263 fun analz_mono_contra_tac ctxt = |
264 rtac @{thm analz_impI} THEN' |
264 rtac @{thm analz_impI} THEN' |
265 REPEAT1 o (dresolve_tac @{thms analz_mono_contra}) |
265 REPEAT1 o (dresolve_tac ctxt @{thms analz_mono_contra}) |
266 THEN' mp_tac ctxt |
266 THEN' mp_tac ctxt |
267 *} |
267 *} |
268 |
268 |
269 lemma knows_subset_knows_Cons: "knows A evs \<subseteq> knows A (e # evs)" |
269 lemma knows_subset_knows_Cons: "knows A evs \<subseteq> knows A (e # evs)" |
270 by (induct e, auto simp: knows_Cons) |
270 by (induct e, auto simp: knows_Cons) |
331 |
331 |
332 |
332 |
333 fun synth_analz_mono_contra_tac ctxt = |
333 fun synth_analz_mono_contra_tac ctxt = |
334 rtac @{thm syan_impI} THEN' |
334 rtac @{thm syan_impI} THEN' |
335 REPEAT1 o |
335 REPEAT1 o |
336 (dresolve_tac |
336 (dresolve_tac ctxt |
337 [@{thm knows_Spy_subset_knows_Spy_Says} RS @{thm synth_analz_mono} RS @{thm contra_subsetD}, |
337 [@{thm knows_Spy_subset_knows_Spy_Says} RS @{thm synth_analz_mono} RS @{thm contra_subsetD}, |
338 @{thm knows_Spy_subset_knows_Spy_Notes} RS @{thm synth_analz_mono} RS @{thm contra_subsetD}, |
338 @{thm knows_Spy_subset_knows_Spy_Notes} RS @{thm synth_analz_mono} RS @{thm contra_subsetD}, |
339 @{thm knows_Spy_subset_knows_Spy_Gets} RS @{thm synth_analz_mono} RS @{thm contra_subsetD}]) |
339 @{thm knows_Spy_subset_knows_Spy_Gets} RS @{thm synth_analz_mono} RS @{thm contra_subsetD}]) |
340 THEN' |
340 THEN' |
341 mp_tac ctxt |
341 mp_tac ctxt |