src/HOL/Auth/OtwayRees_Bad.ML
changeset 7499 23e090051cb8
parent 6308 76f3865a2b1d
child 10833 c0844a30ea4e
equal deleted inserted replaced
7498:1e5585fd3632 7499:23e090051cb8
    72           OR4_analz_knows_Spy RS (impOfSubs analz_subset_parts));
    72           OR4_analz_knows_Spy RS (impOfSubs analz_subset_parts));
    73 
    73 
    74 (*For proving the easier theorems about X ~: parts (knows Spy evs).*)
    74 (*For proving the easier theorems about X ~: parts (knows Spy evs).*)
    75 fun parts_induct_tac i = 
    75 fun parts_induct_tac i = 
    76     etac otway.induct i			THEN 
    76     etac otway.induct i			THEN 
    77     forward_tac [Oops_parts_knows_Spy] (i+7) THEN
    77     ftac Oops_parts_knows_Spy (i+7) THEN
    78     forward_tac [OR4_parts_knows_Spy]  (i+6) THEN
    78     ftac OR4_parts_knows_Spy (i+6) THEN
    79     forward_tac [OR2_parts_knows_Spy]  (i+4) THEN 
    79     ftac OR2_parts_knows_Spy (i+4) THEN 
    80     prove_simple_subgoals_tac  i;
    80     prove_simple_subgoals_tac  i;
    81 
    81 
    82 
    82 
    83 (** Theorems of the form X ~: parts (knows Spy evs) imply that NOBODY
    83 (** Theorems of the form X ~: parts (knows Spy evs) imply that NOBODY
    84     sends messages containing X! **)
    84     sends messages containing X! **)
   132 
   132 
   133 (*For proofs involving analz.*)
   133 (*For proofs involving analz.*)
   134 val analz_knows_Spy_tac = 
   134 val analz_knows_Spy_tac = 
   135     dtac OR2_analz_knows_Spy 5 THEN assume_tac 5 THEN 
   135     dtac OR2_analz_knows_Spy 5 THEN assume_tac 5 THEN 
   136     dtac OR4_analz_knows_Spy 7 THEN assume_tac 7 THEN
   136     dtac OR4_analz_knows_Spy 7 THEN assume_tac 7 THEN
   137     forward_tac [Says_Server_message_form] 8 THEN assume_tac 8 THEN
   137     ftac Says_Server_message_form 8 THEN assume_tac 8 THEN
   138     REPEAT ((eresolve_tac [exE, conjE] ORELSE' hyp_subst_tac) 8);
   138     REPEAT ((eresolve_tac [exE, conjE] ORELSE' hyp_subst_tac) 8);
   139 
   139 
   140 
   140 
   141 (****
   141 (****
   142  The following is to prove theorems of the form
   142  The following is to prove theorems of the form
   227 \         {|NA, Crypt (shrK A) {|NA, Key K|},                    \
   227 \         {|NA, Crypt (shrK A) {|NA, Key K|},                    \
   228 \               Crypt (shrK B) {|NB, Key K|}|} : set evs;        \
   228 \               Crypt (shrK B) {|NB, Key K|}|} : set evs;        \
   229 \        Notes Spy {|NA, NB, Key K|} ~: set evs;                 \
   229 \        Notes Spy {|NA, NB, Key K|} ~: set evs;                 \
   230 \        A ~: bad;  B ~: bad;  evs : otway |]                    \
   230 \        A ~: bad;  B ~: bad;  evs : otway |]                    \
   231 \     ==> Key K ~: analz (knows Spy evs)";
   231 \     ==> Key K ~: analz (knows Spy evs)";
   232 by (forward_tac [Says_Server_message_form] 1 THEN assume_tac 1);
   232 by (ftac Says_Server_message_form 1 THEN assume_tac 1);
   233 by (blast_tac (claset() addSEs [lemma]) 1);
   233 by (blast_tac (claset() addSEs [lemma]) 1);
   234 qed "Spy_not_see_encrypted_key";
   234 qed "Spy_not_see_encrypted_key";
   235 
   235 
   236 
   236 
   237 (*** Attempting to prove stronger properties ***)
   237 (*** Attempting to prove stronger properties ***)