[STATEMENT]
lemma Spy_parts_keys [simp]: "evs \<in> sr \<Longrightarrow>
  (Key (shrK P) \<in> parts (knows Spy evs)) = (Card P \<in> cloned) \<and>
  (Key (pin P) \<in> parts (knows Spy evs)) = (P \<in> bad \<or> Card P \<in> cloned) \<and>
  (Key (crdK C) \<in> parts (knows Spy evs)) = (C \<in> cloned) \<and>
  (Key (pairK(A,B)) \<in> parts (knows Spy evs)) = (Card B \<in> cloned)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. evs \<in> sr \<Longrightarrow> (Key (shrK P) \<in> parts (knows Spy evs)) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy evs)) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy evs)) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy evs)) = (Card B \<in> cloned)
[PROOF STEP]
apply (erule sr.induct)
[PROOF STATE]
proof (prove)
goal (20 subgoals):
 1. (Key (shrK P) \<in> parts (knows Spy [])) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy [])) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy [])) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy [])) = (Card B \<in> cloned)
 2. \<And>evsF X Ba Aa. \<lbrakk>evsF \<in> sr; (Key (shrK P) \<in> parts (knows Spy evsF)) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy evsF)) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy evsF)) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy evsF)) = (Card B \<in> cloned); X \<in> synth (analz (knows Spy evsF)); illegalUse (Card Ba)\<rbrakk> \<Longrightarrow> (Key (shrK P) \<in> parts (knows Spy (Says Spy Aa X # Inputs Spy (Card Ba) X # evsF))) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy (Says Spy Aa X # Inputs Spy (Card Ba) X # evsF))) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy (Says Spy Aa X # Inputs Spy (Card Ba) X # evsF))) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy (Says Spy Aa X # Inputs Spy (Card Ba) X # evsF))) = (Card B \<in> cloned)
 3. \<And>evsFo Nb Aa Ba. \<lbrakk>evsFo \<in> sr; (Key (shrK P) \<in> parts (knows Spy evsFo)) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy evsFo)) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy evsFo)) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy evsFo)) = (Card B \<in> cloned); Nonce Nb \<in> analz (knows Spy evsFo); Key (pairK (Aa, Ba)) \<in> knows Spy evsFo\<rbrakk> \<Longrightarrow> (Key (shrK P) \<in> parts (knows Spy (Notes Spy (Key (sesK (Nb, pairK (Aa, Ba)))) # evsFo))) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy (Notes Spy (Key (sesK (Nb, pairK (Aa, Ba)))) # evsFo))) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy (Notes Spy (Key (sesK (Nb, pairK (Aa, Ba)))) # evsFo))) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy (Notes Spy (Key (sesK (Nb, pairK (Aa, Ba)))) # evsFo))) = (Card B \<in> cloned)
 4. \<And>evsR Aa Ba X. \<lbrakk>evsR \<in> sr; (Key (shrK P) \<in> parts (knows Spy evsR)) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy evsR)) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy evsR)) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy evsR)) = (Card B \<in> cloned); Says Aa Ba X \<in> set evsR\<rbrakk> \<Longrightarrow> (Key (shrK P) \<in> parts (knows Spy (Gets Ba X # evsR))) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy (Gets Ba X # evsR))) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy (Gets Ba X # evsR))) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy (Gets Ba X # evsR))) = (Card B \<in> cloned)
 5. \<And>evs1 Aa Ba. \<lbrakk>evs1 \<in> sr; (Key (shrK P) \<in> parts (knows Spy evs1)) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy evs1)) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy evs1)) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy evs1)) = (Card B \<in> cloned); Aa \<noteq> Server\<rbrakk> \<Longrightarrow> (Key (shrK P) \<in> parts (knows Spy (Says Aa Server \<lbrace>Agent Aa, Agent Ba\<rbrace> # evs1))) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy (Says Aa Server \<lbrace>Agent Aa, Agent Ba\<rbrace> # evs1))) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy (Says Aa Server \<lbrace>Agent Aa, Agent Ba\<rbrace> # evs1))) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy (Says Aa Server \<lbrace>Agent Aa, Agent Ba\<rbrace> # evs1))) = (Card B \<in> cloned)
 6. \<And>evs2 Aa Ba. \<lbrakk>evs2 \<in> sr; (Key (shrK P) \<in> parts (knows Spy evs2)) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy evs2)) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy evs2)) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy evs2)) = (Card B \<in> cloned); Gets Server \<lbrace>Agent Aa, Agent Ba\<rbrace> \<in> set evs2\<rbrakk> \<Longrightarrow> (Key (shrK P) \<in> parts (knows Spy (Says Server Aa \<lbrace>Nonce (Pairkey (Aa, Ba)), Crypt (shrK Aa) \<lbrace>Nonce (Pairkey (Aa, Ba)), Agent Ba\<rbrace>\<rbrace> # evs2))) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy (Says Server Aa \<lbrace>Nonce (Pairkey (Aa, Ba)), Crypt (shrK Aa) \<lbrace>Nonce (Pairkey (Aa, Ba)), Agent Ba\<rbrace>\<rbrace> # evs2))) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy (Says Server Aa \<lbrace>Nonce (Pairkey (Aa, Ba)), Crypt (shrK Aa) \<lbrace>Nonce (Pairkey (Aa, Ba)), Agent Ba\<rbrace>\<rbrace> # evs2))) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy (Says Server Aa \<lbrace>Nonce (Pairkey (Aa, Ba)), Crypt (shrK Aa) \<lbrace>Nonce (Pairkey (Aa, Ba)), Agent Ba\<rbrace>\<rbrace> # evs2))) = (Card B \<in> cloned)
 7. \<And>evs3 Aa Ba Pk Certificate. \<lbrakk>evs3 \<in> sr; (Key (shrK P) \<in> parts (knows Spy evs3)) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy evs3)) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy evs3)) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy evs3)) = (Card B \<in> cloned); legalUse Card Aa; Says Aa Server \<lbrace>Agent Aa, Agent Ba\<rbrace> \<in> set evs3; Gets Aa \<lbrace>Nonce Pk, Certificate\<rbrace> \<in> set evs3\<rbrakk> \<Longrightarrow> (Key (shrK P) \<in> parts (knows Spy (Inputs Aa (Card Aa) (Agent Aa) # evs3))) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy (Inputs Aa (Card Aa) (Agent Aa) # evs3))) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy (Inputs Aa (Card Aa) (Agent Aa) # evs3))) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy (Inputs Aa (Card Aa) (Agent Aa) # evs3))) = (Card B \<in> cloned)
 8. \<And>evs4 Aa Na. \<lbrakk>evs4 \<in> sr; (Key (shrK P) \<in> parts (knows Spy evs4)) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy evs4)) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy evs4)) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy evs4)) = (Card B \<in> cloned); Aa \<noteq> Server; Nonce Na \<notin> used evs4; legalUse Card Aa; Inputs Aa (Card Aa) (Agent Aa) \<in> set evs4\<rbrakk> \<Longrightarrow> (Key (shrK P) \<in> parts (knows Spy (Outpts (Card Aa) Aa \<lbrace>Nonce Na, Crypt (crdK (Card Aa)) (Nonce Na)\<rbrace> # evs4))) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy (Outpts (Card Aa) Aa \<lbrace>Nonce Na, Crypt (crdK (Card Aa)) (Nonce Na)\<rbrace> # evs4))) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy (Outpts (Card Aa) Aa \<lbrace>Nonce Na, Crypt (crdK (Card Aa)) (Nonce Na)\<rbrace> # evs4))) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy (Outpts (Card Aa) Aa \<lbrace>Nonce Na, Crypt (crdK (Card Aa)) (Nonce Na)\<rbrace> # evs4))) = (Card B \<in> cloned)
 9. \<And>evs4F Na Aa. \<lbrakk>evs4F \<in> sr; (Key (shrK P) \<in> parts (knows Spy evs4F)) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy evs4F)) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy evs4F)) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy evs4F)) = (Card B \<in> cloned); Nonce Na \<notin> used evs4F; illegalUse (Card Aa); Inputs Spy (Card Aa) (Agent Aa) \<in> set evs4F\<rbrakk> \<Longrightarrow> (Key (shrK P) \<in> parts (knows Spy (Outpts (Card Aa) Spy \<lbrace>Nonce Na, Crypt (crdK (Card Aa)) (Nonce Na)\<rbrace> # evs4F))) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy (Outpts (Card Aa) Spy \<lbrace>Nonce Na, Crypt (crdK (Card Aa)) (Nonce Na)\<rbrace> # evs4F))) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy (Outpts (Card Aa) Spy \<lbrace>Nonce Na, Crypt (crdK (Card Aa)) (Nonce Na)\<rbrace> # evs4F))) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy (Outpts (Card Aa) Spy \<lbrace>Nonce Na, Crypt (crdK (Card Aa)) (Nonce Na)\<rbrace> # evs4F))) = (Card B \<in> cloned)
 10. \<And>evs5 Aa Na Certificate Ba. \<lbrakk>evs5 \<in> sr; (Key (shrK P) \<in> parts (knows Spy evs5)) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy evs5)) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy evs5)) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy evs5)) = (Card B \<in> cloned); Outpts (Card Aa) Aa \<lbrace>Nonce Na, Certificate\<rbrace> \<in> set evs5; \<forall>p q. Certificate \<noteq> \<lbrace>p, q\<rbrace>\<rbrakk> \<Longrightarrow> (Key (shrK P) \<in> parts (knows Spy (Says Aa Ba \<lbrace>Agent Aa, Nonce Na\<rbrace> # evs5))) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy (Says Aa Ba \<lbrace>Agent Aa, Nonce Na\<rbrace> # evs5))) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy (Says Aa Ba \<lbrace>Agent Aa, Nonce Na\<rbrace> # evs5))) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy (Says Aa Ba \<lbrace>Agent Aa, Nonce Na\<rbrace> # evs5))) = (Card B \<in> cloned)
A total of 20 subgoals...
[PROOF STEP]
apply parts_prepare
[PROOF STATE]
proof (prove)
goal (27 subgoals):
 1. \<And>evsF X Ba Aa. \<lbrakk>evsF \<in> sr; (Key (shrK P) \<in> parts (knows Spy evsF)) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy evsF)) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy evsF)) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy evsF)) = (Card B \<in> cloned); X \<in> synth (analz (knows Spy evsF)); illegalUse (Card Ba)\<rbrakk> \<Longrightarrow> (Key (shrK P) \<in> parts (knows Spy (Says Spy Aa X # Inputs Spy (Card Ba) X # evsF))) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy (Says Spy Aa X # Inputs Spy (Card Ba) X # evsF))) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy (Says Spy Aa X # Inputs Spy (Card Ba) X # evsF))) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy (Says Spy Aa X # Inputs Spy (Card Ba) X # evsF))) = (Card B \<in> cloned)
 2. \<And>evsFo Nb Aa Ba. \<lbrakk>evsFo \<in> sr; (Key (shrK P) \<in> parts (knows Spy evsFo)) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy evsFo)) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy evsFo)) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy evsFo)) = (Card B \<in> cloned); Nonce Nb \<in> analz (knows Spy evsFo); Key (pairK (Aa, Ba)) \<in> knows Spy evsFo\<rbrakk> \<Longrightarrow> (Key (shrK P) \<in> parts (knows Spy (Notes Spy (Key (sesK (Nb, pairK (Aa, Ba)))) # evsFo))) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy (Notes Spy (Key (sesK (Nb, pairK (Aa, Ba)))) # evsFo))) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy (Notes Spy (Key (sesK (Nb, pairK (Aa, Ba)))) # evsFo))) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy (Notes Spy (Key (sesK (Nb, pairK (Aa, Ba)))) # evsFo))) = (Card B \<in> cloned)
 3. \<And>evsR Aa Ba X. \<lbrakk>evsR \<in> sr; (Key (shrK P) \<in> parts (knows Spy evsR)) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy evsR)) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy evsR)) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy evsR)) = (Card B \<in> cloned); Says Aa Ba X \<in> set evsR\<rbrakk> \<Longrightarrow> (Key (shrK P) \<in> parts (knows Spy (Gets Ba X # evsR))) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy (Gets Ba X # evsR))) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy (Gets Ba X # evsR))) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy (Gets Ba X # evsR))) = (Card B \<in> cloned)
 4. \<And>evs1 Aa Ba. \<lbrakk>evs1 \<in> sr; (Key (shrK P) \<in> parts (knows Spy evs1)) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy evs1)) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy evs1)) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy evs1)) = (Card B \<in> cloned); Aa \<noteq> Server\<rbrakk> \<Longrightarrow> (Key (shrK P) \<in> parts (knows Spy (Says Aa Server \<lbrace>Agent Aa, Agent Ba\<rbrace> # evs1))) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy (Says Aa Server \<lbrace>Agent Aa, Agent Ba\<rbrace> # evs1))) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy (Says Aa Server \<lbrace>Agent Aa, Agent Ba\<rbrace> # evs1))) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy (Says Aa Server \<lbrace>Agent Aa, Agent Ba\<rbrace> # evs1))) = (Card B \<in> cloned)
 5. \<And>evs2 Aa Ba. \<lbrakk>evs2 \<in> sr; (Key (shrK P) \<in> parts (knows Spy evs2)) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy evs2)) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy evs2)) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy evs2)) = (Card B \<in> cloned); Gets Server \<lbrace>Agent Aa, Agent Ba\<rbrace> \<in> set evs2\<rbrakk> \<Longrightarrow> (Key (shrK P) \<in> parts (knows Spy (Says Server Aa \<lbrace>Nonce (Pairkey (Aa, Ba)), Crypt (shrK Aa) \<lbrace>Nonce (Pairkey (Aa, Ba)), Agent Ba\<rbrace>\<rbrace> # evs2))) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy (Says Server Aa \<lbrace>Nonce (Pairkey (Aa, Ba)), Crypt (shrK Aa) \<lbrace>Nonce (Pairkey (Aa, Ba)), Agent Ba\<rbrace>\<rbrace> # evs2))) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy (Says Server Aa \<lbrace>Nonce (Pairkey (Aa, Ba)), Crypt (shrK Aa) \<lbrace>Nonce (Pairkey (Aa, Ba)), Agent Ba\<rbrace>\<rbrace> # evs2))) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy (Says Server Aa \<lbrace>Nonce (Pairkey (Aa, Ba)), Crypt (shrK Aa) \<lbrace>Nonce (Pairkey (Aa, Ba)), Agent Ba\<rbrace>\<rbrace> # evs2))) = (Card B \<in> cloned)
 6. \<And>evs3 Aa Ba Pk Certificate. \<lbrakk>evs3 \<in> sr; (Key (shrK P) \<in> parts (knows Spy evs3)) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy evs3)) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy evs3)) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy evs3)) = (Card B \<in> cloned); legalUse Card Aa; Says Aa Server \<lbrace>Agent Aa, Agent Ba\<rbrace> \<in> set evs3; Gets Aa \<lbrace>Nonce Pk, Certificate\<rbrace> \<in> set evs3\<rbrakk> \<Longrightarrow> (Key (shrK P) \<in> parts (knows Spy (Inputs Aa (Card Aa) (Agent Aa) # evs3))) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy (Inputs Aa (Card Aa) (Agent Aa) # evs3))) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy (Inputs Aa (Card Aa) (Agent Aa) # evs3))) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy (Inputs Aa (Card Aa) (Agent Aa) # evs3))) = (Card B \<in> cloned)
 7. \<And>evs4 Aa Na. \<lbrakk>evs4 \<in> sr; (Key (shrK P) \<in> parts (knows Spy evs4)) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy evs4)) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy evs4)) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy evs4)) = (Card B \<in> cloned); Aa \<noteq> Server; Nonce Na \<notin> used evs4; legalUse Card Aa; Inputs Aa (Card Aa) (Agent Aa) \<in> set evs4\<rbrakk> \<Longrightarrow> (Key (shrK P) \<in> parts (knows Spy (Outpts (Card Aa) Aa \<lbrace>Nonce Na, Crypt (crdK (Card Aa)) (Nonce Na)\<rbrace> # evs4))) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy (Outpts (Card Aa) Aa \<lbrace>Nonce Na, Crypt (crdK (Card Aa)) (Nonce Na)\<rbrace> # evs4))) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy (Outpts (Card Aa) Aa \<lbrace>Nonce Na, Crypt (crdK (Card Aa)) (Nonce Na)\<rbrace> # evs4))) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy (Outpts (Card Aa) Aa \<lbrace>Nonce Na, Crypt (crdK (Card Aa)) (Nonce Na)\<rbrace> # evs4))) = (Card B \<in> cloned)
 8. \<And>evs4F Na Aa. \<lbrakk>evs4F \<in> sr; (Key (shrK P) \<in> parts (knows Spy evs4F)) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy evs4F)) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy evs4F)) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy evs4F)) = (Card B \<in> cloned); Nonce Na \<notin> used evs4F; illegalUse (Card Aa); Inputs Spy (Card Aa) (Agent Aa) \<in> set evs4F\<rbrakk> \<Longrightarrow> (Key (shrK P) \<in> parts (knows Spy (Outpts (Card Aa) Spy \<lbrace>Nonce Na, Crypt (crdK (Card Aa)) (Nonce Na)\<rbrace> # evs4F))) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy (Outpts (Card Aa) Spy \<lbrace>Nonce Na, Crypt (crdK (Card Aa)) (Nonce Na)\<rbrace> # evs4F))) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy (Outpts (Card Aa) Spy \<lbrace>Nonce Na, Crypt (crdK (Card Aa)) (Nonce Na)\<rbrace> # evs4F))) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy (Outpts (Card Aa) Spy \<lbrace>Nonce Na, Crypt (crdK (Card Aa)) (Nonce Na)\<rbrace> # evs4F))) = (Card B \<in> cloned)
 9. \<And>evs5 Aa Na Certificate Ba. \<lbrakk>evs5 \<in> sr; (Key (shrK P) \<in> parts (knows Spy evs5)) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy evs5)) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy evs5)) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy evs5)) = (Card B \<in> cloned); Outpts (Card Aa) Aa \<lbrace>Nonce Na, Certificate\<rbrace> \<in> set evs5; \<forall>p q. Certificate \<noteq> \<lbrace>p, q\<rbrace>\<rbrakk> \<Longrightarrow> (Key (shrK P) \<in> parts (knows Spy (Says Aa Ba \<lbrace>Agent Aa, Nonce Na\<rbrace> # evs5))) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy (Says Aa Ba \<lbrace>Agent Aa, Nonce Na\<rbrace> # evs5))) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy (Says Aa Ba \<lbrace>Agent Aa, Nonce Na\<rbrace> # evs5))) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy (Says Aa Ba \<lbrace>Agent Aa, Nonce Na\<rbrace> # evs5))) = (Card B \<in> cloned)
 10. \<And>evs6 Ba Aa Na. \<lbrakk>evs6 \<in> sr; (Key (shrK P) \<in> parts (knows Spy evs6)) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy evs6)) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy evs6)) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy evs6)) = (Card B \<in> cloned); legalUse Card Ba; Gets Ba \<lbrace>Agent Aa, Nonce Na\<rbrace> \<in> set evs6\<rbrakk> \<Longrightarrow> (Key (shrK P) \<in> parts (knows Spy (Inputs Ba (Card Ba) \<lbrace>Agent Aa, Nonce Na\<rbrace> # evs6))) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy (Inputs Ba (Card Ba) \<lbrace>Agent Aa, Nonce Na\<rbrace> # evs6))) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy (Inputs Ba (Card Ba) \<lbrace>Agent Aa, Nonce Na\<rbrace> # evs6))) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy (Inputs Ba (Card Ba) \<lbrace>Agent Aa, Nonce Na\<rbrace> # evs6))) = (Card B \<in> cloned)
A total of 27 subgoals...
[PROOF STEP]
apply simp_all
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>evsF X Ba. \<lbrakk>evsF \<in> sr; (Key (shrK P) \<in> parts (knows Spy evsF)) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (knows Spy evsF)) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (knows Spy evsF)) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (knows Spy evsF)) = (Card B \<in> cloned); X \<in> synth (analz (knows Spy evsF)); Card Ba \<in> stolen \<and> Ba \<in> bad \<or> Card Ba \<in> cloned\<rbrakk> \<Longrightarrow> (Key (shrK P) \<in> parts (insert X (knows Spy evsF))) = (Card P \<in> cloned) \<and> (Key (pin P) \<in> parts (insert X (knows Spy evsF))) = (P \<in> bad \<or> Card P \<in> cloned) \<and> (Key (crdK C) \<in> parts (insert X (knows Spy evsF))) = (C \<in> cloned) \<and> (Key (pairK (A, B)) \<in> parts (insert X (knows Spy evsF))) = (Card B \<in> cloned)
[PROOF STEP]
apply (blast intro: parts_insertI)
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done