405 addsimps @{thms analz_image_freshK_simps} |
405 addsimps @{thms analz_image_freshK_simps} |
406 |
406 |
407 (*Tactic for possibility theorems*) |
407 (*Tactic for possibility theorems*) |
408 fun possibility_tac ctxt = |
408 fun possibility_tac ctxt = |
409 REPEAT (*omit used_Says so that Nonces start from different traces!*) |
409 REPEAT (*omit used_Says so that Nonces start from different traces!*) |
410 (ALLGOALS (simp_tac (local_simpset_of ctxt delsimps [@{thm used_Says}])) |
410 (ALLGOALS (simp_tac (simpset_of ctxt delsimps [@{thm used_Says}])) |
411 THEN |
411 THEN |
412 REPEAT_FIRST (eq_assume_tac ORELSE' |
412 REPEAT_FIRST (eq_assume_tac ORELSE' |
413 resolve_tac [refl, conjI, @{thm Nonce_supply}])) |
413 resolve_tac [refl, conjI, @{thm Nonce_supply}])) |
414 |
414 |
415 (*For harder protocols (such as Recur) where we have to set up some |
415 (*For harder protocols (such as Recur) where we have to set up some |
416 nonces and keys initially*) |
416 nonces and keys initially*) |
417 fun basic_possibility_tac ctxt = |
417 fun basic_possibility_tac ctxt = |
418 REPEAT |
418 REPEAT |
419 (ALLGOALS (asm_simp_tac (local_simpset_of ctxt setSolver safe_solver)) |
419 (ALLGOALS (asm_simp_tac (simpset_of ctxt setSolver safe_solver)) |
420 THEN |
420 THEN |
421 REPEAT_FIRST (resolve_tac [refl, conjI])) |
421 REPEAT_FIRST (resolve_tac [refl, conjI])) |
422 |
422 |
423 end |
423 end |
424 *} |
424 *} |