src/HOL/Auth/Guard/Analz.thy
changeset 46008 c296c75f4cf4
parent 41775 6214816d79d3
child 58889 5b7a9633cfa8
equal deleted inserted replaced
46007:493d9c4d7ed5 46008:c296c75f4cf4
   234 ==> Nonce n:kparts {Y} --> Nonce n:analz G"
   234 ==> Nonce n:kparts {Y} --> Nonce n:analz G"
   235 by (erule synth.induct, auto)
   235 by (erule synth.induct, auto)
   236 
   236 
   237 lemma kparts_insert_synth: "[| Y:parts (insert X G); X:synth (analz G);
   237 lemma kparts_insert_synth: "[| Y:parts (insert X G); X:synth (analz G);
   238 Nonce n:kparts {Y}; Nonce n ~:analz G |] ==> Y:parts G"
   238 Nonce n:kparts {Y}; Nonce n ~:analz G |] ==> Y:parts G"
   239 apply (drule parts_insert_substD [where P="%S. Y : S"], clarify)
   239 apply (drule parts_insert_substD, clarify)
   240 apply (drule in_sub, drule_tac X=Y in parts_sub, simp)
   240 apply (drule in_sub, drule_tac X=Y in parts_sub, simp)
   241 by (auto dest: Nonce_kparts_synth)
   241 apply (auto dest: Nonce_kparts_synth)
       
   242 done
   242 
   243 
   243 lemma Crypt_insert_synth:
   244 lemma Crypt_insert_synth:
   244   "[| Crypt K Y:parts (insert X G); X:synth (analz G); Nonce n:kparts {Y}; Nonce n ~:analz G |] 
   245   "[| Crypt K Y:parts (insert X G); X:synth (analz G); Nonce n:kparts {Y}; Nonce n ~:analz G |] 
   245    ==> Crypt K Y:parts G"
   246    ==> Crypt K Y:parts G"
   246 by (metis Fake_parts_insert_in_Un Nonce_kparts_synth UnE analz_conj_parts synth_simps(5))
   247 by (metis Fake_parts_insert_in_Un Nonce_kparts_synth UnE analz_conj_parts synth_simps(5))