366 such as Nonce ?N \<notin> used evs that match Nonce_supply*) |
366 such as Nonce ?N \<notin> used evs that match Nonce_supply*) |
367 fun possibility_tac ctxt = |
367 fun possibility_tac ctxt = |
368 (REPEAT |
368 (REPEAT |
369 (ALLGOALS (simp_tac (ctxt |
369 (ALLGOALS (simp_tac (ctxt |
370 delsimps @{thms used_Cons_simps} |
370 delsimps @{thms used_Cons_simps} |
371 setSolver safe_solver)) |
371 |> Simplifier.set_unsafe_solver safe_solver)) |
372 THEN |
372 THEN |
373 REPEAT_FIRST (eq_assume_tac ORELSE' |
373 REPEAT_FIRST (eq_assume_tac ORELSE' |
374 resolve_tac ctxt [refl, conjI, @{thm Nonce_supply}]))) |
374 resolve_tac ctxt [refl, conjI, @{thm Nonce_supply}]))) |
375 |
375 |
376 (*For harder protocols (such as Recur) where we have to set up some |
376 (*For harder protocols (such as Recur) where we have to set up some |
377 nonces and keys initially*) |
377 nonces and keys initially*) |
378 fun basic_possibility_tac ctxt = |
378 fun basic_possibility_tac ctxt = |
379 REPEAT |
379 REPEAT |
380 (ALLGOALS (asm_simp_tac (ctxt setSolver safe_solver)) |
380 (ALLGOALS (asm_simp_tac (ctxt |> Simplifier.set_unsafe_solver safe_solver)) |
381 THEN |
381 THEN |
382 REPEAT_FIRST (resolve_tac ctxt [refl, conjI])) |
382 REPEAT_FIRST (resolve_tac ctxt [refl, conjI])) |
383 |
383 |
384 val analz_image_freshK_ss = |
384 val analz_image_freshK_ss = |
385 simpset_of |
385 simpset_of |