equal
deleted
inserted
replaced
270 |
270 |
271 ML |
271 ML |
272 {* |
272 {* |
273 fun analz_mono_contra_tac ctxt = |
273 fun analz_mono_contra_tac ctxt = |
274 rtac @{thm analz_impI} THEN' |
274 rtac @{thm analz_impI} THEN' |
275 REPEAT1 o (dresolve_tac @{thms analz_mono_contra}) |
275 REPEAT1 o (dresolve_tac ctxt @{thms analz_mono_contra}) |
276 THEN' (mp_tac ctxt) |
276 THEN' (mp_tac ctxt) |
277 *} |
277 *} |
278 |
278 |
279 method_setup analz_mono_contra = {* |
279 method_setup analz_mono_contra = {* |
280 Scan.succeed (fn ctxt => SIMPLE_METHOD (REPEAT_FIRST (analz_mono_contra_tac ctxt))) *} |
280 Scan.succeed (fn ctxt => SIMPLE_METHOD (REPEAT_FIRST (analz_mono_contra_tac ctxt))) *} |
287 ML |
287 ML |
288 {* |
288 {* |
289 fun synth_analz_mono_contra_tac ctxt = |
289 fun synth_analz_mono_contra_tac ctxt = |
290 rtac @{thm syan_impI} THEN' |
290 rtac @{thm syan_impI} THEN' |
291 REPEAT1 o |
291 REPEAT1 o |
292 (dresolve_tac |
292 (dresolve_tac ctxt |
293 [@{thm knows_Spy_subset_knows_Spy_Says} RS @{thm synth_analz_mono} RS @{thm contra_subsetD}, |
293 [@{thm knows_Spy_subset_knows_Spy_Says} RS @{thm synth_analz_mono} RS @{thm contra_subsetD}, |
294 @{thm knows_Spy_subset_knows_Spy_Notes} RS @{thm synth_analz_mono} RS @{thm contra_subsetD}, |
294 @{thm knows_Spy_subset_knows_Spy_Notes} RS @{thm synth_analz_mono} RS @{thm contra_subsetD}, |
295 @{thm knows_Spy_subset_knows_Spy_Gets} RS @{thm synth_analz_mono} RS @{thm contra_subsetD}]) |
295 @{thm knows_Spy_subset_knows_Spy_Gets} RS @{thm synth_analz_mono} RS @{thm contra_subsetD}]) |
296 THEN' |
296 THEN' |
297 mp_tac ctxt |
297 mp_tac ctxt |