177 \ (K : KK | Key K : analz (sees lost Spy evs))"; |
177 \ (K : KK | Key K : analz (sees lost Spy evs))"; |
178 by (etac otway.induct 1); |
178 by (etac otway.induct 1); |
179 by analz_sees_tac; |
179 by analz_sees_tac; |
180 by (REPEAT_FIRST (resolve_tac [allI, impI])); |
180 by (REPEAT_FIRST (resolve_tac [allI, impI])); |
181 by (REPEAT_FIRST (rtac analz_image_freshK_lemma )); |
181 by (REPEAT_FIRST (rtac analz_image_freshK_lemma )); |
182 (*14 seconds*) |
|
183 by (ALLGOALS (asm_simp_tac analz_image_freshK_ss)); |
182 by (ALLGOALS (asm_simp_tac analz_image_freshK_ss)); |
184 (*OR4, Fake*) |
183 (*Fake*) |
185 by (EVERY (map spy_analz_tac [3,2])); |
184 by (spy_analz_tac 2); |
186 (*Base*) |
185 (*Base*) |
187 by (Blast_tac 1); |
186 by (Blast_tac 1); |
188 qed_spec_mp "analz_image_freshK"; |
187 qed_spec_mp "analz_image_freshK"; |
189 |
188 |
190 |
189 |
283 \ Key K ~: analz (sees lost Spy evs)"; |
282 \ Key K ~: analz (sees lost Spy evs)"; |
284 by (etac otway.induct 1); |
283 by (etac otway.induct 1); |
285 by analz_sees_tac; |
284 by analz_sees_tac; |
286 by (ALLGOALS |
285 by (ALLGOALS |
287 (asm_simp_tac (!simpset addcongs [conj_cong] |
286 (asm_simp_tac (!simpset addcongs [conj_cong] |
288 addsimps [not_parts_not_analz, |
287 addsimps [analz_insert_eq, not_parts_not_analz, |
289 analz_insert_freshK] |
288 analz_insert_freshK] |
290 setloop split_tac [expand_if]))); |
289 setloop split_tac [expand_if]))); |
|
290 (*Oops*) |
|
291 by (blast_tac (!claset addSDs [unique_session_keys]) 4); |
|
292 (*OR4*) |
|
293 by (Blast_tac 3); |
291 (*OR3*) |
294 (*OR3*) |
292 by (blast_tac (!claset addSEs sees_Spy_partsEs |
295 by (blast_tac (!claset addSEs sees_Spy_partsEs |
293 addIs [impOfSubs analz_subset_parts]) 2); |
296 addIs [impOfSubs analz_subset_parts]) 2); |
294 (*Oops*) |
297 (*Fake*) |
295 by (blast_tac (!claset addDs [unique_session_keys]) 3); |
298 by (spy_analz_tac 1); |
296 (*OR4, Fake*) |
|
297 by (REPEAT_FIRST spy_analz_tac); |
|
298 val lemma = result() RS mp RS mp RSN(2,rev_notE); |
299 val lemma = result() RS mp RS mp RSN(2,rev_notE); |
299 |
300 |
300 goal thy |
301 goal thy |
301 "!!evs. [| Says Server B \ |
302 "!!evs. [| Says Server B \ |
302 \ {|Crypt (shrK A) {|NA, Agent A, Agent B, Key K|}, \ |
303 \ {|Crypt (shrK A) {|NA, Agent A, Agent B, Key K|}, \ |