745 {* |
745 {* |
746 structure ShoupRubinBella = |
746 structure ShoupRubinBella = |
747 struct |
747 struct |
748 |
748 |
749 fun prepare_tac ctxt = |
749 fun prepare_tac ctxt = |
750 (*SR_U8*) forward_tac [@{thm Outpts_B_Card_form_7}] 14 THEN |
750 (*SR_U8*) forward_tac ctxt [@{thm Outpts_B_Card_form_7}] 14 THEN |
751 (*SR_U8*) clarify_tac ctxt 15 THEN |
751 (*SR_U8*) clarify_tac ctxt 15 THEN |
752 (*SR_U9*) forward_tac [@{thm Outpts_A_Card_form_4}] 16 THEN |
752 (*SR_U9*) forward_tac ctxt [@{thm Outpts_A_Card_form_4}] 16 THEN |
753 (*SR_U11*) forward_tac [@{thm Outpts_A_Card_form_10}] 21 |
753 (*SR_U11*) forward_tac ctxt [@{thm Outpts_A_Card_form_10}] 21 |
754 |
754 |
755 fun parts_prepare_tac ctxt = |
755 fun parts_prepare_tac ctxt = |
756 prepare_tac ctxt THEN |
756 prepare_tac ctxt THEN |
757 (*SR_U9*) dresolve_tac [@{thm Gets_imp_knows_Spy_parts_Snd}] 18 THEN |
757 (*SR_U9*) dresolve_tac ctxt [@{thm Gets_imp_knows_Spy_parts_Snd}] 18 THEN |
758 (*SR_U9*) dresolve_tac [@{thm Gets_imp_knows_Spy_parts_Snd}] 19 THEN |
758 (*SR_U9*) dresolve_tac ctxt [@{thm Gets_imp_knows_Spy_parts_Snd}] 19 THEN |
759 (*Oops1*) dresolve_tac [@{thm Outpts_B_Card_form_7}] 25 THEN |
759 (*Oops1*) dresolve_tac ctxt [@{thm Outpts_B_Card_form_7}] 25 THEN |
760 (*Oops2*) dresolve_tac [@{thm Outpts_A_Card_form_10}] 27 THEN |
760 (*Oops2*) dresolve_tac ctxt [@{thm Outpts_A_Card_form_10}] 27 THEN |
761 (*Base*) (force_tac ctxt) 1 |
761 (*Base*) (force_tac ctxt) 1 |
762 |
762 |
763 fun analz_prepare_tac ctxt = |
763 fun analz_prepare_tac ctxt = |
764 prepare_tac ctxt THEN |
764 prepare_tac ctxt THEN |
765 dtac (@{thm Gets_imp_knows_Spy_analz_Snd}) 18 THEN |
765 dtac (@{thm Gets_imp_knows_Spy_analz_Snd}) 18 THEN |
766 (*SR_U9*) dtac (@{thm Gets_imp_knows_Spy_analz_Snd}) 19 THEN |
766 (*SR_U9*) dtac (@{thm Gets_imp_knows_Spy_analz_Snd}) 19 THEN |
767 REPEAT_FIRST (eresolve_tac [asm_rl, conjE] ORELSE' hyp_subst_tac ctxt) |
767 REPEAT_FIRST (eresolve_tac ctxt [asm_rl, conjE] ORELSE' hyp_subst_tac ctxt) |
768 |
768 |
769 end |
769 end |
770 *} |
770 *} |
771 |
771 |
772 method_setup prepare = {* |
772 method_setup prepare = {* |
824 done |
824 done |
825 |
825 |
826 method_setup sc_analz_freshK = {* |
826 method_setup sc_analz_freshK = {* |
827 Scan.succeed (fn ctxt => |
827 Scan.succeed (fn ctxt => |
828 (SIMPLE_METHOD |
828 (SIMPLE_METHOD |
829 (EVERY [REPEAT_FIRST (resolve_tac [allI, ballI, impI]), |
829 (EVERY [REPEAT_FIRST (resolve_tac ctxt [allI, ballI, impI]), |
830 REPEAT_FIRST (rtac @{thm analz_image_freshK_lemma}), |
830 REPEAT_FIRST (rtac @{thm analz_image_freshK_lemma}), |
831 ALLGOALS (asm_simp_tac (put_simpset Smartcard.analz_image_freshK_ss ctxt |
831 ALLGOALS (asm_simp_tac (put_simpset Smartcard.analz_image_freshK_ss ctxt |
832 addsimps [@{thm knows_Spy_Inputs_secureM_srb_Spy}, |
832 addsimps [@{thm knows_Spy_Inputs_secureM_srb_Spy}, |
833 @{thm knows_Spy_Outpts_secureM_srb_Spy}, |
833 @{thm knows_Spy_Outpts_secureM_srb_Spy}, |
834 @{thm shouprubin_assumes_securemeans}, |
834 @{thm shouprubin_assumes_securemeans}, |