src/HOL/Auth/NS_Shared.ML
changeset 3675 70dd312b70b2
parent 3651 5f6ab7fbd53b
child 3679 8df171ccdbd8
equal deleted inserted replaced
3674:65ec38fbb265 3675:70dd312b70b2
    25 by (rtac (ns_shared.Nil RS ns_shared.NS1 RS ns_shared.NS2 RS 
    25 by (rtac (ns_shared.Nil RS ns_shared.NS1 RS ns_shared.NS2 RS 
    26           ns_shared.NS3 RS ns_shared.NS4 RS ns_shared.NS5) 2);
    26           ns_shared.NS3 RS ns_shared.NS4 RS ns_shared.NS5) 2);
    27 by possibility_tac;
    27 by possibility_tac;
    28 result();
    28 result();
    29 
    29 
       
    30 goal thy 
       
    31  "!!A B. [| A ~= B; A ~= Server; B ~= Server |]       \
       
    32 \        ==> EX evs: ns_shared.          \
       
    33 \               Says A B (Crypt ?K {|Nonce ?N, Nonce ?N|}) : set evs";
       
    34 by (REPEAT (resolve_tac [exI,bexI] 1));
       
    35 by (rtac (ns_shared.Nil RS ns_shared.NS1 RS ns_shared.NS2 RS 
       
    36           ns_shared.NS3 RS ns_shared.NS4 RS ns_shared.NS5) 2);
       
    37 by possibility_tac;
    30 
    38 
    31 (**** Inductive proofs about ns_shared ****)
    39 (**** Inductive proofs about ns_shared ****)
    32 
    40 
    33 (*Nobody sends themselves messages*)
    41 (*Nobody sends themselves messages*)
    34 goal thy "!!evs. evs : ns_shared ==> ALL A X. Says A A X ~: set evs";
    42 goal thy "!!evs. evs : ns_shared ==> ALL A X. Says A A X ~: set evs";
   262 \        Key K ~: analz (sees Spy evs)";
   270 \        Key K ~: analz (sees Spy evs)";
   263 by (etac ns_shared.induct 1);
   271 by (etac ns_shared.induct 1);
   264 by analz_sees_tac;
   272 by analz_sees_tac;
   265 by (ALLGOALS 
   273 by (ALLGOALS 
   266     (asm_simp_tac 
   274     (asm_simp_tac 
   267      (!simpset addsimps ([analz_insert_eq, not_parts_not_analz, 
   275      (!simpset addsimps ([analz_insert_eq, analz_insert_freshK] @ pushes)
   268 			  analz_insert_freshK] @ pushes)
       
   269                setloop split_tac [expand_if])));
   276                setloop split_tac [expand_if])));
   270 (*Oops*)
   277 (*Oops*)
   271 by (blast_tac (!claset addDs [unique_session_keys]) 5);
   278 by (blast_tac (!claset addDs [unique_session_keys]) 5);
   272 (*NS4*) 
   279 (*NS4*) 
   273 by (Blast_tac 4);
   280 by (Blast_tac 4);