src/HOL/Auth/OtwayReesBella.thy
changeset 30510 4120fc59dd85
parent 24122 fc7f857d33c8
child 30549 d2d7874648bd
equal deleted inserted replaced
30509:e19d5b459a61 30510:4120fc59dd85
   135     forward_tac [@{thm OR4_parts_knows_Spy}]  (i+6) THEN
   135     forward_tac [@{thm OR4_parts_knows_Spy}]  (i+6) THEN
   136     forward_tac [@{thm OR2_parts_knows_Spy}]  (i+4)
   136     forward_tac [@{thm OR2_parts_knows_Spy}]  (i+4)
   137 *}
   137 *}
   138  
   138  
   139 method_setup parts_explicit = {*
   139 method_setup parts_explicit = {*
   140     Method.no_args (Method.SIMPLE_METHOD' parts_explicit_tac) *}
   140     Method.no_args (SIMPLE_METHOD' parts_explicit_tac) *}
   141   "to explicitly state that some message components belong to parts knows Spy"
   141   "to explicitly state that some message components belong to parts knows Spy"
   142 
   142 
   143 
   143 
   144 lemma Spy_see_shrK [simp]: 
   144 lemma Spy_see_shrK [simp]: 
   145     "evs \<in> orb \<Longrightarrow> (Key (shrK A) \<in> parts (knows Spy evs)) = (A \<in> bad)"
   145     "evs \<in> orb \<Longrightarrow> (Key (shrK A) \<in> parts (knows Spy evs)) = (A \<in> bad)"
   256 end
   256 end
   257 *}
   257 *}
   258 
   258 
   259 method_setup analz_freshCryptK = {*
   259 method_setup analz_freshCryptK = {*
   260     Method.ctxt_args (fn ctxt =>
   260     Method.ctxt_args (fn ctxt =>
   261      (Method.SIMPLE_METHOD
   261      (SIMPLE_METHOD
   262       (EVERY [REPEAT_FIRST (resolve_tac [allI, ballI, impI]),
   262       (EVERY [REPEAT_FIRST (resolve_tac [allI, ballI, impI]),
   263           REPEAT_FIRST (rtac @{thm analz_image_freshCryptK_lemma}),
   263           REPEAT_FIRST (rtac @{thm analz_image_freshCryptK_lemma}),
   264           ALLGOALS (asm_simp_tac
   264           ALLGOALS (asm_simp_tac
   265             (Simplifier.context ctxt OtwayReesBella.analz_image_freshK_ss))]))) *}
   265             (Simplifier.context ctxt OtwayReesBella.analz_image_freshK_ss))]))) *}
   266   "for proving useful rewrite rule"
   266   "for proving useful rewrite rule"
   267 
   267 
   268 
   268 
   269 method_setup disentangle = {*
   269 method_setup disentangle = {*
   270     Method.no_args
   270     Method.no_args
   271      (Method.SIMPLE_METHOD
   271      (SIMPLE_METHOD
   272       (REPEAT_FIRST (eresolve_tac [asm_rl, conjE, disjE] 
   272       (REPEAT_FIRST (eresolve_tac [asm_rl, conjE, disjE] 
   273                    ORELSE' hyp_subst_tac))) *}
   273                    ORELSE' hyp_subst_tac))) *}
   274   "for eliminating conjunctions, disjunctions and the like"
   274   "for eliminating conjunctions, disjunctions and the like"
   275 
   275 
   276 
   276