equal
deleted
inserted
replaced
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 ***) |