equal
deleted
inserted
replaced
49 (*Spy sees shared keys of agents!*) |
49 (*Spy sees shared keys of agents!*) |
50 goal thy "!!A. A: bad ==> Key (shrK A) : spies evs"; |
50 goal thy "!!A. A: bad ==> Key (shrK A) : spies evs"; |
51 by (induct_tac "evs" 1); |
51 by (induct_tac "evs" 1); |
52 by (ALLGOALS (asm_simp_tac |
52 by (ALLGOALS (asm_simp_tac |
53 (simpset() addsimps [imageI, spies_Cons] |
53 (simpset() addsimps [imageI, spies_Cons] |
54 addsplits [expand_event_case, expand_if]))); |
54 addsplits [expand_event_case]))); |
55 qed "Spy_spies_bad"; |
55 qed "Spy_spies_bad"; |
56 |
56 |
57 AddSIs [Spy_spies_bad]; |
57 AddSIs [Spy_spies_bad]; |
58 |
58 |
59 (*For not_bad_tac*) |
59 (*For not_bad_tac*) |
123 goal thy "EX N. ALL n. N<=n --> Nonce n ~: used evs"; |
123 goal thy "EX N. ALL n. N<=n --> Nonce n ~: used evs"; |
124 by (induct_tac "evs" 1); |
124 by (induct_tac "evs" 1); |
125 by (res_inst_tac [("x","0")] exI 1); |
125 by (res_inst_tac [("x","0")] exI 1); |
126 by (ALLGOALS (asm_simp_tac |
126 by (ALLGOALS (asm_simp_tac |
127 (simpset() addsimps [used_Cons] |
127 (simpset() addsimps [used_Cons] |
128 addsplits [expand_event_case, expand_if]))); |
128 addsplits [expand_event_case]))); |
129 by Safe_tac; |
129 by Safe_tac; |
130 by (ALLGOALS (rtac (msg_Nonce_supply RS exE))); |
130 by (ALLGOALS (rtac (msg_Nonce_supply RS exE))); |
131 by (ALLGOALS (blast_tac (claset() addSEs [add_leE]))); |
131 by (ALLGOALS (blast_tac (claset() addSEs [add_leE]))); |
132 val lemma = result(); |
132 val lemma = result(); |
133 |
133 |
244 delsimps [imp_disjL] (*reduces blow-up*) |
244 delsimps [imp_disjL] (*reduces blow-up*) |
245 addsimps ([image_insert RS sym, image_Un RS sym, |
245 addsimps ([image_insert RS sym, image_Un RS sym, |
246 analz_insert_eq, impOfSubs (Un_upper2 RS analz_mono), |
246 analz_insert_eq, impOfSubs (Un_upper2 RS analz_mono), |
247 insert_Key_singleton, subset_Compl_range, |
247 insert_Key_singleton, subset_Compl_range, |
248 Key_not_used, insert_Key_image, Un_assoc RS sym] |
248 Key_not_used, insert_Key_image, Un_assoc RS sym] |
249 @disj_comms) |
249 @disj_comms); |
250 addsplits [expand_if]; |
|
251 |
250 |
252 (*Lemma for the trivial direction of the if-and-only-if*) |
251 (*Lemma for the trivial direction of the if-and-only-if*) |
253 goal thy |
252 goal thy |
254 "!!evs. (Key K : analz (Key``nE Un H)) --> (K : nE | Key K : analz H) ==> \ |
253 "!!evs. (Key K : analz (Key``nE Un H)) --> (K : nE | Key K : analz H) ==> \ |
255 \ (Key K : analz (Key``nE Un H)) = (K : nE | Key K : analz H)"; |
254 \ (Key K : analz (Key``nE Un H)) = (K : nE | Key K : analz H)"; |