144 etac tls.induct i |
144 etac tls.induct i |
145 THEN |
145 THEN |
146 REPEAT (FIRSTGOAL analz_mono_contra_tac) |
146 REPEAT (FIRSTGOAL analz_mono_contra_tac) |
147 THEN |
147 THEN |
148 fast_tac (!claset addss (!simpset)) i THEN |
148 fast_tac (!claset addss (!simpset)) i THEN |
149 ALLGOALS (asm_simp_tac (!simpset setloop split_tac [expand_if])); |
149 ALLGOALS (asm_simp_tac (!simpset addsplits [expand_if])); |
150 |
150 |
151 |
151 |
152 (** Theorems of the form X ~: parts (spies evs) imply that NOBODY |
152 (** Theorems of the form X ~: parts (spies evs) imply that NOBODY |
153 sends messages containing X! **) |
153 sends messages containing X! **) |
154 |
154 |
196 fun analz_induct_tac i = |
196 fun analz_induct_tac i = |
197 etac tls.induct i THEN |
197 etac tls.induct i THEN |
198 ClientKeyExch_tac (i+6) THEN (*ClientKeyExch*) |
198 ClientKeyExch_tac (i+6) THEN (*ClientKeyExch*) |
199 ALLGOALS (asm_simp_tac |
199 ALLGOALS (asm_simp_tac |
200 (!simpset addcongs [if_weak_cong] |
200 (!simpset addcongs [if_weak_cong] |
201 setloop split_tac [expand_if])) THEN |
201 addsplits [expand_if])) THEN |
202 (*Remove instances of pubK B: the Spy already knows all public keys. |
202 (*Remove instances of pubK B: the Spy already knows all public keys. |
203 Combining the two simplifier calls makes them run extremely slowly.*) |
203 Combining the two simplifier calls makes them run extremely slowly.*) |
204 ALLGOALS (asm_simp_tac |
204 ALLGOALS (asm_simp_tac |
205 (!simpset addcongs [if_weak_cong] |
205 (!simpset addcongs [if_weak_cong] |
206 addsimps [insert_absorb] |
206 addsimps [insert_absorb] |
207 setloop split_tac [expand_if])); |
207 addsplits [expand_if])); |
208 |
208 |
209 |
209 |
210 (*** Properties of items found in Notes ***) |
210 (*** Properties of items found in Notes ***) |
211 |
211 |
212 goal thy "!!evs. [| Notes A {|Agent B, X|} : set evs; evs : tls |] \ |
212 goal thy "!!evs. [| Notes A {|Agent B, X|} : set evs; evs : tls |] \ |