src/HOL/Auth/Shared.ML
changeset 4686 74a12e86b20b
parent 4633 d4a074973715
child 5076 fbc9d95b62ba
equal deleted inserted replaced
4685:9259feeeb2c8 4686:74a12e86b20b
    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)";