[STATEMENT]
lemma pr_key_set_unused [rule_format]:
 "(evs, S, A, U) \<in> protocol \<Longrightarrow>
    H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow>
  analz (H \<union> A \<union> spies evs) = H \<union> analz (A \<union> spies evs)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (evs, S, A, U) \<in> protocol \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evs) = H \<union> analz (A \<union> spies evs)
[PROOF STEP]
proof (induction arbitrary: H rule: protocol.induct, simp_all add: analz_simp_insert_2,
 rule impI, (subst analz_simp, blast)+, simp)
[PROOF STATE]
proof (state)
goal (15 subgoals):
 1. \<And>evsR1 S A U s n run H. \<lbrakk>(evsR1, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR1) = H \<union> analz (A \<union> spies evsR1); Pri_AgrK s \<notin> U; s \<noteq> 0; NonceS (S (Card n, n, run)) = None\<rbrakk> \<Longrightarrow> (n \<in> bad \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U \<longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1))) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (A \<union> spies evsR1)))) \<and> (n \<notin> bad \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U \<longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1)))
 2. \<And>evsFR1 S A U m s H. \<lbrakk>(evsFR1, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR1) = H \<union> analz (A \<union> spies evsFR1); 0 < m; s \<noteq> 0; Crypt (symK m) (Pri_AgrK s) \<in> synth (analz (A \<union> spies evsFR1))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
 3. \<And>evsC2 S A U a m n run X n' s s' H. \<lbrakk>(evsC2, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC2) = H \<union> analz (A \<union> spies evsC2); Pri_AgrK a \<notin> U; NonceS (S (User m, n, run)) = None; Says n run (Suc 0) X (User m) (Crypt (symK n') (Pri_AgrK s)) \<in> set evsC2; s' = (if symK n' = symK m then s else 0)\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U \<longrightarrow> insert (pubAK a) (analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2))) = insert (pubAK a) (H \<union> analz (insert (Pri_AgrK a) (A \<union> spies evsC2)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U \<longrightarrow> insert (pubAK a) (analz (H \<union> A \<union> spies evsC2)) = insert (pubAK a) (H \<union> analz (A \<union> spies evsC2)))
 4. \<And>evsR2 S A U b n run X a H. \<lbrakk>(evsR2, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR2) = H \<union> analz (A \<union> spies evsR2); Pri_AgrK b \<notin> U; \<exists>y. NonceS (S (Card n, n, run)) = Some y; IntMapK (S (Card n, n, run)) = None; Says n run 2 X (Card n) (pubAK a) \<in> set evsR2\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK b) U \<longrightarrow> insert (pubAK b) (analz (H \<union> A \<union> spies evsR2)) = insert (pubAK b) (H \<union> analz (A \<union> spies evsR2))
 5. \<And>evsC3 S A U c m n run s a X b H. \<lbrakk>(evsC3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC3) = H \<union> analz (A \<union> spies evsC3); Pri_AgrK c \<notin> U; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = None; Says n run 2 X (User m) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3)))
 6. \<And>evsR3 S A U d n run s b a X c s' H. \<lbrakk>(evsR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR3) = H \<union> analz (A \<union> spies evsR3); Pri_AgrK d \<notin> U; NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = None; Says n run 3 X (Card n) (pubAK (c * (s' + a * b))) \<in> set evsR3; Key (sesK (c * d * (s' + a * b))) \<notin> U; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))) \<and> ((s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3)) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3)))
 7. \<And>evsFR3 S A U m n run s a b c d H. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR3) = H \<union> analz (A \<union> spies evsFR3); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; Pri_AgrK s \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK d \<in> analz (A \<union> spies evsFR3); Key (sesK (c * d * (s + a * b))) \<notin> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
 8. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 9. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 10. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 11. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 12. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 13. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 14. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 15. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
fix evsR1 S A U n s H
[PROOF STATE]
proof (state)
goal (15 subgoals):
 1. \<And>evsR1 S A U s n run H. \<lbrakk>(evsR1, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR1) = H \<union> analz (A \<union> spies evsR1); Pri_AgrK s \<notin> U; s \<noteq> 0; NonceS (S (Card n, n, run)) = None\<rbrakk> \<Longrightarrow> (n \<in> bad \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U \<longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1))) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (A \<union> spies evsR1)))) \<and> (n \<notin> bad \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U \<longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1)))
 2. \<And>evsFR1 S A U m s H. \<lbrakk>(evsFR1, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR1) = H \<union> analz (A \<union> spies evsFR1); 0 < m; s \<noteq> 0; Crypt (symK m) (Pri_AgrK s) \<in> synth (analz (A \<union> spies evsFR1))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
 3. \<And>evsC2 S A U a m n run X n' s s' H. \<lbrakk>(evsC2, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC2) = H \<union> analz (A \<union> spies evsC2); Pri_AgrK a \<notin> U; NonceS (S (User m, n, run)) = None; Says n run (Suc 0) X (User m) (Crypt (symK n') (Pri_AgrK s)) \<in> set evsC2; s' = (if symK n' = symK m then s else 0)\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U \<longrightarrow> insert (pubAK a) (analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2))) = insert (pubAK a) (H \<union> analz (insert (Pri_AgrK a) (A \<union> spies evsC2)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U \<longrightarrow> insert (pubAK a) (analz (H \<union> A \<union> spies evsC2)) = insert (pubAK a) (H \<union> analz (A \<union> spies evsC2)))
 4. \<And>evsR2 S A U b n run X a H. \<lbrakk>(evsR2, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR2) = H \<union> analz (A \<union> spies evsR2); Pri_AgrK b \<notin> U; \<exists>y. NonceS (S (Card n, n, run)) = Some y; IntMapK (S (Card n, n, run)) = None; Says n run 2 X (Card n) (pubAK a) \<in> set evsR2\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK b) U \<longrightarrow> insert (pubAK b) (analz (H \<union> A \<union> spies evsR2)) = insert (pubAK b) (H \<union> analz (A \<union> spies evsR2))
 5. \<And>evsC3 S A U c m n run s a X b H. \<lbrakk>(evsC3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC3) = H \<union> analz (A \<union> spies evsC3); Pri_AgrK c \<notin> U; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = None; Says n run 2 X (User m) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3)))
 6. \<And>evsR3 S A U d n run s b a X c s' H. \<lbrakk>(evsR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR3) = H \<union> analz (A \<union> spies evsR3); Pri_AgrK d \<notin> U; NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = None; Says n run 3 X (Card n) (pubAK (c * (s' + a * b))) \<in> set evsR3; Key (sesK (c * d * (s' + a * b))) \<notin> U; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))) \<and> ((s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3)) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3)))
 7. \<And>evsFR3 S A U m n run s a b c d H. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR3) = H \<union> analz (A \<union> spies evsFR3); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; Pri_AgrK s \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK d \<in> analz (A \<union> spies evsFR3); Key (sesK (c * d * (s + a * b))) \<notin> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
 8. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 9. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 10. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 11. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 12. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 13. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 14. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 15. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
assume
    A: "\<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow>
      analz (H \<union> A \<union> spies evsR1) = H \<union> analz (A \<union> spies evsR1)" and
    B: "(evsR1, S, A, U) \<in> protocol" and
    C: "Pri_AgrK s \<notin> U"
[PROOF STATE]
proof (state)
this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsR1) = ?H \<union> analz (A \<union> spies evsR1)
(evsR1, S, A, U) \<in> protocol
Pri_AgrK s \<notin> U

goal (15 subgoals):
 1. \<And>evsR1 S A U s n run H. \<lbrakk>(evsR1, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR1) = H \<union> analz (A \<union> spies evsR1); Pri_AgrK s \<notin> U; s \<noteq> 0; NonceS (S (Card n, n, run)) = None\<rbrakk> \<Longrightarrow> (n \<in> bad \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U \<longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1))) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (A \<union> spies evsR1)))) \<and> (n \<notin> bad \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U \<longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1)))
 2. \<And>evsFR1 S A U m s H. \<lbrakk>(evsFR1, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR1) = H \<union> analz (A \<union> spies evsFR1); 0 < m; s \<noteq> 0; Crypt (symK m) (Pri_AgrK s) \<in> synth (analz (A \<union> spies evsFR1))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
 3. \<And>evsC2 S A U a m n run X n' s s' H. \<lbrakk>(evsC2, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC2) = H \<union> analz (A \<union> spies evsC2); Pri_AgrK a \<notin> U; NonceS (S (User m, n, run)) = None; Says n run (Suc 0) X (User m) (Crypt (symK n') (Pri_AgrK s)) \<in> set evsC2; s' = (if symK n' = symK m then s else 0)\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U \<longrightarrow> insert (pubAK a) (analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2))) = insert (pubAK a) (H \<union> analz (insert (Pri_AgrK a) (A \<union> spies evsC2)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U \<longrightarrow> insert (pubAK a) (analz (H \<union> A \<union> spies evsC2)) = insert (pubAK a) (H \<union> analz (A \<union> spies evsC2)))
 4. \<And>evsR2 S A U b n run X a H. \<lbrakk>(evsR2, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR2) = H \<union> analz (A \<union> spies evsR2); Pri_AgrK b \<notin> U; \<exists>y. NonceS (S (Card n, n, run)) = Some y; IntMapK (S (Card n, n, run)) = None; Says n run 2 X (Card n) (pubAK a) \<in> set evsR2\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK b) U \<longrightarrow> insert (pubAK b) (analz (H \<union> A \<union> spies evsR2)) = insert (pubAK b) (H \<union> analz (A \<union> spies evsR2))
 5. \<And>evsC3 S A U c m n run s a X b H. \<lbrakk>(evsC3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC3) = H \<union> analz (A \<union> spies evsC3); Pri_AgrK c \<notin> U; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = None; Says n run 2 X (User m) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3)))
 6. \<And>evsR3 S A U d n run s b a X c s' H. \<lbrakk>(evsR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR3) = H \<union> analz (A \<union> spies evsR3); Pri_AgrK d \<notin> U; NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = None; Says n run 3 X (Card n) (pubAK (c * (s' + a * b))) \<in> set evsR3; Key (sesK (c * d * (s' + a * b))) \<notin> U; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))) \<and> ((s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3)) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3)))
 7. \<And>evsFR3 S A U m n run s a b c d H. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR3) = H \<union> analz (A \<union> spies evsFR3); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; Pri_AgrK s \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK d \<in> analz (A \<union> spies evsFR3); Key (sesK (c * d * (s + a * b))) \<notin> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
 8. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 9. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 10. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 11. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 12. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 13. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 14. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 15. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
let
    ?B = "H \<union> A \<union> spies evsR1" and
    ?C = "A \<union> spies evsR1"
[PROOF STATE]
proof (state)
goal (15 subgoals):
 1. \<And>evsR1 S A U s n run H. \<lbrakk>(evsR1, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR1) = H \<union> analz (A \<union> spies evsR1); Pri_AgrK s \<notin> U; s \<noteq> 0; NonceS (S (Card n, n, run)) = None\<rbrakk> \<Longrightarrow> (n \<in> bad \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U \<longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1))) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (A \<union> spies evsR1)))) \<and> (n \<notin> bad \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U \<longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1)))
 2. \<And>evsFR1 S A U m s H. \<lbrakk>(evsFR1, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR1) = H \<union> analz (A \<union> spies evsFR1); 0 < m; s \<noteq> 0; Crypt (symK m) (Pri_AgrK s) \<in> synth (analz (A \<union> spies evsFR1))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
 3. \<And>evsC2 S A U a m n run X n' s s' H. \<lbrakk>(evsC2, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC2) = H \<union> analz (A \<union> spies evsC2); Pri_AgrK a \<notin> U; NonceS (S (User m, n, run)) = None; Says n run (Suc 0) X (User m) (Crypt (symK n') (Pri_AgrK s)) \<in> set evsC2; s' = (if symK n' = symK m then s else 0)\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U \<longrightarrow> insert (pubAK a) (analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2))) = insert (pubAK a) (H \<union> analz (insert (Pri_AgrK a) (A \<union> spies evsC2)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U \<longrightarrow> insert (pubAK a) (analz (H \<union> A \<union> spies evsC2)) = insert (pubAK a) (H \<union> analz (A \<union> spies evsC2)))
 4. \<And>evsR2 S A U b n run X a H. \<lbrakk>(evsR2, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR2) = H \<union> analz (A \<union> spies evsR2); Pri_AgrK b \<notin> U; \<exists>y. NonceS (S (Card n, n, run)) = Some y; IntMapK (S (Card n, n, run)) = None; Says n run 2 X (Card n) (pubAK a) \<in> set evsR2\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK b) U \<longrightarrow> insert (pubAK b) (analz (H \<union> A \<union> spies evsR2)) = insert (pubAK b) (H \<union> analz (A \<union> spies evsR2))
 5. \<And>evsC3 S A U c m n run s a X b H. \<lbrakk>(evsC3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC3) = H \<union> analz (A \<union> spies evsC3); Pri_AgrK c \<notin> U; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = None; Says n run 2 X (User m) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3)))
 6. \<And>evsR3 S A U d n run s b a X c s' H. \<lbrakk>(evsR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR3) = H \<union> analz (A \<union> spies evsR3); Pri_AgrK d \<notin> U; NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = None; Says n run 3 X (Card n) (pubAK (c * (s' + a * b))) \<in> set evsR3; Key (sesK (c * d * (s' + a * b))) \<notin> U; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))) \<and> ((s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3)) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3)))
 7. \<And>evsFR3 S A U m n run s a b c d H. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR3) = H \<union> analz (A \<union> spies evsFR3); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; Pri_AgrK s \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK d \<in> analz (A \<union> spies evsFR3); Key (sesK (c * d * (s + a * b))) \<notin> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
 8. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 9. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 10. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 11. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 12. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 13. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 14. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 15. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
show
   "(n \<in> bad \<longrightarrow>
       H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U \<longrightarrow>
     analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) ?B)) =
     H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) ?C))) \<and>
    (n \<notin> bad \<longrightarrow>
       H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U \<longrightarrow>
     analz (insert (Crypt (symK n) (Pri_AgrK s)) ?B) =
     H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) ?C))"
    (is "(_ \<longrightarrow> _ \<longrightarrow> ?T) \<and> (_ \<longrightarrow> _ \<longrightarrow> ?T')")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (n \<in> bad \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U \<longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1))) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (A \<union> spies evsR1)))) \<and> (n \<notin> bad \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U \<longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1)))
[PROOF STEP]
proof (rule conjI, (rule_tac [!] impI)+)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<lbrakk>n \<in> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1))) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (A \<union> spies evsR1)))
 2. \<lbrakk>n \<notin> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1))
[PROOF STEP]
assume "H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U"
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U

goal (2 subgoals):
 1. \<lbrakk>n \<in> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1))) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (A \<union> spies evsR1)))
 2. \<lbrakk>n \<notin> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1))
[PROOF STEP]
hence "insert (Pri_AgrK s) H \<subseteq> range Key \<union> range Pri_AgrK - U"
[PROOF STATE]
proof (prove)
using this:
H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U

goal (1 subgoal):
 1. insert (Pri_AgrK s) H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
using C
[PROOF STATE]
proof (prove)
using this:
H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U
Pri_AgrK s \<notin> U

goal (1 subgoal):
 1. insert (Pri_AgrK s) H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
insert (Pri_AgrK s) H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (2 subgoals):
 1. \<lbrakk>n \<in> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1))) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (A \<union> spies evsR1)))
 2. \<lbrakk>n \<notin> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1))
[PROOF STEP]
with A
[PROOF STATE]
proof (chain)
picking this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsR1) = ?H \<union> analz (A \<union> spies evsR1)
insert (Pri_AgrK s) H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
have "analz (insert (Pri_AgrK s) H \<union> A \<union> spies evsR1) =
      insert (Pri_AgrK s) H \<union> analz (A \<union> spies evsR1)"
[PROOF STATE]
proof (prove)
using this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsR1) = ?H \<union> analz (A \<union> spies evsR1)
insert (Pri_AgrK s) H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. analz (insert (Pri_AgrK s) H \<union> A \<union> spies evsR1) = insert (Pri_AgrK s) H \<union> analz (A \<union> spies evsR1)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
analz (insert (Pri_AgrK s) H \<union> A \<union> spies evsR1) = insert (Pri_AgrK s) H \<union> analz (A \<union> spies evsR1)

goal (2 subgoals):
 1. \<lbrakk>n \<in> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1))) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (A \<union> spies evsR1)))
 2. \<lbrakk>n \<notin> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1))
[PROOF STEP]
hence "analz (insert (Pri_AgrK s) ?B) = H \<union> insert (Pri_AgrK s) (analz ?C)"
[PROOF STATE]
proof (prove)
using this:
analz (insert (Pri_AgrK s) H \<union> A \<union> spies evsR1) = insert (Pri_AgrK s) H \<union> analz (A \<union> spies evsR1)

goal (1 subgoal):
 1. analz (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1)) = H \<union> insert (Pri_AgrK s) (analz (A \<union> spies evsR1))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
analz (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1)) = H \<union> insert (Pri_AgrK s) (analz (A \<union> spies evsR1))

goal (2 subgoals):
 1. \<lbrakk>n \<in> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1))) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (A \<union> spies evsR1)))
 2. \<lbrakk>n \<notin> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
analz (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1)) = H \<union> insert (Pri_AgrK s) (analz (A \<union> spies evsR1))

goal (2 subgoals):
 1. \<lbrakk>n \<in> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1))) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (A \<union> spies evsR1)))
 2. \<lbrakk>n \<notin> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1))
[PROOF STEP]
have "{Pri_AgrK s} \<subseteq> range Key \<union> range Pri_AgrK - U"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {Pri_AgrK s} \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
using C
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK s \<notin> U

goal (1 subgoal):
 1. {Pri_AgrK s} \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
{Pri_AgrK s} \<subseteq> range Key \<union> range Pri_AgrK - U

goal (2 subgoals):
 1. \<lbrakk>n \<in> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1))) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (A \<union> spies evsR1)))
 2. \<lbrakk>n \<notin> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1))
[PROOF STEP]
with A
[PROOF STATE]
proof (chain)
picking this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsR1) = ?H \<union> analz (A \<union> spies evsR1)
{Pri_AgrK s} \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
have "analz ({Pri_AgrK s} \<union> A \<union> spies evsR1) =
      {Pri_AgrK s} \<union> analz (A \<union> spies evsR1)"
[PROOF STATE]
proof (prove)
using this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsR1) = ?H \<union> analz (A \<union> spies evsR1)
{Pri_AgrK s} \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. analz ({Pri_AgrK s} \<union> A \<union> spies evsR1) = {Pri_AgrK s} \<union> analz (A \<union> spies evsR1)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
analz ({Pri_AgrK s} \<union> A \<union> spies evsR1) = {Pri_AgrK s} \<union> analz (A \<union> spies evsR1)

goal (2 subgoals):
 1. \<lbrakk>n \<in> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1))) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (A \<union> spies evsR1)))
 2. \<lbrakk>n \<notin> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1))
[PROOF STEP]
hence "insert (Pri_AgrK s) (analz ?C) = analz (insert (Pri_AgrK s) ?C)"
[PROOF STATE]
proof (prove)
using this:
analz ({Pri_AgrK s} \<union> A \<union> spies evsR1) = {Pri_AgrK s} \<union> analz (A \<union> spies evsR1)

goal (1 subgoal):
 1. insert (Pri_AgrK s) (analz (A \<union> spies evsR1)) = analz (insert (Pri_AgrK s) (A \<union> spies evsR1))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
insert (Pri_AgrK s) (analz (A \<union> spies evsR1)) = analz (insert (Pri_AgrK s) (A \<union> spies evsR1))

goal (2 subgoals):
 1. \<lbrakk>n \<in> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1))) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (A \<union> spies evsR1)))
 2. \<lbrakk>n \<notin> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
analz (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1)) = H \<union> insert (Pri_AgrK s) (analz (A \<union> spies evsR1))
insert (Pri_AgrK s) (analz (A \<union> spies evsR1)) = analz (insert (Pri_AgrK s) (A \<union> spies evsR1))
[PROOF STEP]
have D: "analz (insert (Pri_AgrK s) ?B) =
      H \<union> analz (insert (Pri_AgrK s) ?C)"
[PROOF STATE]
proof (prove)
using this:
analz (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1)) = H \<union> insert (Pri_AgrK s) (analz (A \<union> spies evsR1))
insert (Pri_AgrK s) (analz (A \<union> spies evsR1)) = analz (insert (Pri_AgrK s) (A \<union> spies evsR1))

goal (1 subgoal):
 1. analz (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Pri_AgrK s) (A \<union> spies evsR1))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
analz (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Pri_AgrK s) (A \<union> spies evsR1))

goal (2 subgoals):
 1. \<lbrakk>n \<in> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1))) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (A \<union> spies evsR1)))
 2. \<lbrakk>n \<notin> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1))
[PROOF STEP]
assume "n \<in> bad"
[PROOF STATE]
proof (state)
this:
n \<in> bad

goal (2 subgoals):
 1. \<lbrakk>n \<in> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1))) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (A \<union> spies evsR1)))
 2. \<lbrakk>n \<notin> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1))
[PROOF STEP]
hence E: "Key (invK (symK n)) \<in> analz ?C"
[PROOF STATE]
proof (prove)
using this:
n \<in> bad

goal (1 subgoal):
 1. Key (invK (symK n)) \<in> analz (A \<union> spies evsR1)
[PROOF STEP]
using B
[PROOF STATE]
proof (prove)
using this:
n \<in> bad
(evsR1, S, A, U) \<in> protocol

goal (1 subgoal):
 1. Key (invK (symK n)) \<in> analz (A \<union> spies evsR1)
[PROOF STEP]
by (simp add: pr_symk_analz invK_symK)
[PROOF STATE]
proof (state)
this:
Key (invK (symK n)) \<in> analz (A \<union> spies evsR1)

goal (2 subgoals):
 1. \<lbrakk>n \<in> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1))) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (A \<union> spies evsR1)))
 2. \<lbrakk>n \<notin> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1))
[PROOF STEP]
have "Key (invK (symK n)) \<in> analz (insert (Pri_AgrK s) ?B)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Key (invK (symK n)) \<in> analz (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1))
[PROOF STEP]
by (rule subsetD [OF _ E], rule analz_mono, blast)
[PROOF STATE]
proof (state)
this:
Key (invK (symK n)) \<in> analz (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1))

goal (2 subgoals):
 1. \<lbrakk>n \<in> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1))) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (A \<union> spies evsR1)))
 2. \<lbrakk>n \<notin> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1))
[PROOF STEP]
hence "analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) ?B)) =
      insert (Crypt (symK n) (Pri_AgrK s)) (analz (insert (Pri_AgrK s) ?B))"
[PROOF STATE]
proof (prove)
using this:
Key (invK (symK n)) \<in> analz (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1))

goal (1 subgoal):
 1. analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1))) = insert (Crypt (symK n) (Pri_AgrK s)) (analz (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1)))
[PROOF STEP]
by (simp add: analz_crypt_in)
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1))) = insert (Crypt (symK n) (Pri_AgrK s)) (analz (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1)))

goal (2 subgoals):
 1. \<lbrakk>n \<in> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1))) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (A \<union> spies evsR1)))
 2. \<lbrakk>n \<notin> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1))) = insert (Crypt (symK n) (Pri_AgrK s)) (analz (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1)))

goal (2 subgoals):
 1. \<lbrakk>n \<in> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1))) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (A \<union> spies evsR1)))
 2. \<lbrakk>n \<notin> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1))
[PROOF STEP]
have "Key (invK (symK n)) \<in> analz (insert (Pri_AgrK s) ?C)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Key (invK (symK n)) \<in> analz (insert (Pri_AgrK s) (A \<union> spies evsR1))
[PROOF STEP]
by (rule subsetD [OF _ E], rule analz_mono, blast)
[PROOF STATE]
proof (state)
this:
Key (invK (symK n)) \<in> analz (insert (Pri_AgrK s) (A \<union> spies evsR1))

goal (2 subgoals):
 1. \<lbrakk>n \<in> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1))) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (A \<union> spies evsR1)))
 2. \<lbrakk>n \<notin> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1))
[PROOF STEP]
hence "analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) ?C)) =
      insert (Crypt (symK n) (Pri_AgrK s)) (analz (insert (Pri_AgrK s) ?C))"
[PROOF STATE]
proof (prove)
using this:
Key (invK (symK n)) \<in> analz (insert (Pri_AgrK s) (A \<union> spies evsR1))

goal (1 subgoal):
 1. analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (A \<union> spies evsR1))) = insert (Crypt (symK n) (Pri_AgrK s)) (analz (insert (Pri_AgrK s) (A \<union> spies evsR1)))
[PROOF STEP]
by (simp add: analz_crypt_in)
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (A \<union> spies evsR1))) = insert (Crypt (symK n) (Pri_AgrK s)) (analz (insert (Pri_AgrK s) (A \<union> spies evsR1)))

goal (2 subgoals):
 1. \<lbrakk>n \<in> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1))) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (A \<union> spies evsR1)))
 2. \<lbrakk>n \<notin> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1))) = insert (Crypt (symK n) (Pri_AgrK s)) (analz (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1)))
analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (A \<union> spies evsR1))) = insert (Crypt (symK n) (Pri_AgrK s)) (analz (insert (Pri_AgrK s) (A \<union> spies evsR1)))
[PROOF STEP]
show ?T
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1))) = insert (Crypt (symK n) (Pri_AgrK s)) (analz (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1)))
analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (A \<union> spies evsR1))) = insert (Crypt (symK n) (Pri_AgrK s)) (analz (insert (Pri_AgrK s) (A \<union> spies evsR1)))

goal (1 subgoal):
 1. analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1))) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (A \<union> spies evsR1)))
[PROOF STEP]
using D
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1))) = insert (Crypt (symK n) (Pri_AgrK s)) (analz (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1)))
analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (A \<union> spies evsR1))) = insert (Crypt (symK n) (Pri_AgrK s)) (analz (insert (Pri_AgrK s) (A \<union> spies evsR1)))
analz (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Pri_AgrK s) (A \<union> spies evsR1))

goal (1 subgoal):
 1. analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1))) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (A \<union> spies evsR1)))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1))) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (A \<union> spies evsR1)))

goal (1 subgoal):
 1. \<lbrakk>n \<notin> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>n \<notin> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1))
[PROOF STEP]
assume "H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U"
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U

goal (1 subgoal):
 1. \<lbrakk>n \<notin> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1))
[PROOF STEP]
hence D: "H \<subseteq> range Key \<union> range Pri_AgrK - U"
[PROOF STATE]
proof (prove)
using this:
H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. \<lbrakk>n \<notin> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1))
[PROOF STEP]
with A
[PROOF STATE]
proof (chain)
picking this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsR1) = ?H \<union> analz (A \<union> spies evsR1)
H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
have E: "analz ?B = H \<union> analz ?C"
[PROOF STATE]
proof (prove)
using this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsR1) = ?H \<union> analz (A \<union> spies evsR1)
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. analz (H \<union> A \<union> spies evsR1) = H \<union> analz (A \<union> spies evsR1)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
analz (H \<union> A \<union> spies evsR1) = H \<union> analz (A \<union> spies evsR1)

goal (1 subgoal):
 1. \<lbrakk>n \<notin> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
analz (H \<union> A \<union> spies evsR1) = H \<union> analz (A \<union> spies evsR1)

goal (1 subgoal):
 1. \<lbrakk>n \<notin> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1))
[PROOF STEP]
assume "n \<notin> bad"
[PROOF STATE]
proof (state)
this:
n \<notin> bad

goal (1 subgoal):
 1. \<lbrakk>n \<notin> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1))
[PROOF STEP]
hence F: "Key (invK (symK n)) \<notin> analz ?C"
[PROOF STATE]
proof (prove)
using this:
n \<notin> bad

goal (1 subgoal):
 1. Key (invK (symK n)) \<notin> analz (A \<union> spies evsR1)
[PROOF STEP]
using B
[PROOF STATE]
proof (prove)
using this:
n \<notin> bad
(evsR1, S, A, U) \<in> protocol

goal (1 subgoal):
 1. Key (invK (symK n)) \<notin> analz (A \<union> spies evsR1)
[PROOF STEP]
by (simp add: pr_symk_analz invK_symK)
[PROOF STATE]
proof (state)
this:
Key (invK (symK n)) \<notin> analz (A \<union> spies evsR1)

goal (1 subgoal):
 1. \<lbrakk>n \<notin> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
analz (H \<union> A \<union> spies evsR1) = H \<union> analz (A \<union> spies evsR1)
Key (invK (symK n)) \<notin> analz (A \<union> spies evsR1)
[PROOF STEP]
have "Key (invK (symK n)) \<notin> analz ?B"
[PROOF STATE]
proof (prove)
using this:
analz (H \<union> A \<union> spies evsR1) = H \<union> analz (A \<union> spies evsR1)
Key (invK (symK n)) \<notin> analz (A \<union> spies evsR1)

goal (1 subgoal):
 1. Key (invK (symK n)) \<notin> analz (H \<union> A \<union> spies evsR1)
[PROOF STEP]
proof (simp add: invK_symK, insert pr_symk_used [OF B, of n])
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>analz (H \<union> A \<union> spies evsR1) = H \<union> analz (A \<union> spies evsR1); Key (symK n) \<notin> analz (A \<union> spies evsR1); Key (symK n) \<in> U\<rbrakk> \<Longrightarrow> Key (symK n) \<notin> H
[PROOF STEP]
qed (rule notI, drule subsetD [OF D], simp)
[PROOF STATE]
proof (state)
this:
Key (invK (symK n)) \<notin> analz (H \<union> A \<union> spies evsR1)

goal (1 subgoal):
 1. \<lbrakk>n \<notin> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1))
[PROOF STEP]
hence "analz (insert (Crypt (symK n) (Pri_AgrK s)) ?B) =
      insert (Crypt (symK n) (Pri_AgrK s)) (analz ?B)"
[PROOF STATE]
proof (prove)
using this:
Key (invK (symK n)) \<notin> analz (H \<union> A \<union> spies evsR1)

goal (1 subgoal):
 1. analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = insert (Crypt (symK n) (Pri_AgrK s)) (analz (H \<union> A \<union> spies evsR1))
[PROOF STEP]
by (simp add: analz_crypt_out)
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = insert (Crypt (symK n) (Pri_AgrK s)) (analz (H \<union> A \<union> spies evsR1))

goal (1 subgoal):
 1. \<lbrakk>n \<notin> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = insert (Crypt (symK n) (Pri_AgrK s)) (analz (H \<union> A \<union> spies evsR1))

goal (1 subgoal):
 1. \<lbrakk>n \<notin> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1))
[PROOF STEP]
have "H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) ?C) =
      insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> analz ?C)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1)) = insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> analz (A \<union> spies evsR1))
[PROOF STEP]
using F
[PROOF STATE]
proof (prove)
using this:
Key (invK (symK n)) \<notin> analz (A \<union> spies evsR1)

goal (1 subgoal):
 1. H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1)) = insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> analz (A \<union> spies evsR1))
[PROOF STEP]
by (simp add: analz_crypt_out)
[PROOF STATE]
proof (state)
this:
H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1)) = insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> analz (A \<union> spies evsR1))

goal (1 subgoal):
 1. \<lbrakk>n \<notin> bad; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = insert (Crypt (symK n) (Pri_AgrK s)) (analz (H \<union> A \<union> spies evsR1))
H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1)) = insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> analz (A \<union> spies evsR1))
[PROOF STEP]
show ?T'
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = insert (Crypt (symK n) (Pri_AgrK s)) (analz (H \<union> A \<union> spies evsR1))
H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1)) = insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> analz (A \<union> spies evsR1))

goal (1 subgoal):
 1. analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1))
[PROOF STEP]
using E
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = insert (Crypt (symK n) (Pri_AgrK s)) (analz (H \<union> A \<union> spies evsR1))
H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1)) = insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> analz (A \<union> spies evsR1))
analz (H \<union> A \<union> spies evsR1) = H \<union> analz (A \<union> spies evsR1)

goal (1 subgoal):
 1. analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
(n \<in> bad \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U \<longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (H \<union> A \<union> spies evsR1))) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (insert (Pri_AgrK s) (A \<union> spies evsR1)))) \<and> (n \<notin> bad \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK s) U \<longrightarrow> analz (insert (Crypt (symK n) (Pri_AgrK s)) (H \<union> A \<union> spies evsR1)) = H \<union> analz (insert (Crypt (symK n) (Pri_AgrK s)) (A \<union> spies evsR1)))

goal (14 subgoals):
 1. \<And>evsFR1 S A U m s H. \<lbrakk>(evsFR1, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR1) = H \<union> analz (A \<union> spies evsFR1); 0 < m; s \<noteq> 0; Crypt (symK m) (Pri_AgrK s) \<in> synth (analz (A \<union> spies evsFR1))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
 2. \<And>evsC2 S A U a m n run X n' s s' H. \<lbrakk>(evsC2, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC2) = H \<union> analz (A \<union> spies evsC2); Pri_AgrK a \<notin> U; NonceS (S (User m, n, run)) = None; Says n run (Suc 0) X (User m) (Crypt (symK n') (Pri_AgrK s)) \<in> set evsC2; s' = (if symK n' = symK m then s else 0)\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U \<longrightarrow> insert (pubAK a) (analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2))) = insert (pubAK a) (H \<union> analz (insert (Pri_AgrK a) (A \<union> spies evsC2)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U \<longrightarrow> insert (pubAK a) (analz (H \<union> A \<union> spies evsC2)) = insert (pubAK a) (H \<union> analz (A \<union> spies evsC2)))
 3. \<And>evsR2 S A U b n run X a H. \<lbrakk>(evsR2, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR2) = H \<union> analz (A \<union> spies evsR2); Pri_AgrK b \<notin> U; \<exists>y. NonceS (S (Card n, n, run)) = Some y; IntMapK (S (Card n, n, run)) = None; Says n run 2 X (Card n) (pubAK a) \<in> set evsR2\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK b) U \<longrightarrow> insert (pubAK b) (analz (H \<union> A \<union> spies evsR2)) = insert (pubAK b) (H \<union> analz (A \<union> spies evsR2))
 4. \<And>evsC3 S A U c m n run s a X b H. \<lbrakk>(evsC3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC3) = H \<union> analz (A \<union> spies evsC3); Pri_AgrK c \<notin> U; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = None; Says n run 2 X (User m) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3)))
 5. \<And>evsR3 S A U d n run s b a X c s' H. \<lbrakk>(evsR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR3) = H \<union> analz (A \<union> spies evsR3); Pri_AgrK d \<notin> U; NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = None; Says n run 3 X (Card n) (pubAK (c * (s' + a * b))) \<in> set evsR3; Key (sesK (c * d * (s' + a * b))) \<notin> U; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))) \<and> ((s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3)) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3)))
 6. \<And>evsFR3 S A U m n run s a b c d H. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR3) = H \<union> analz (A \<union> spies evsFR3); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; Pri_AgrK s \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK d \<in> analz (A \<union> spies evsFR3); Key (sesK (c * d * (s + a * b))) \<notin> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
 7. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 8. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 9. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 10. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 11. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 12. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 13. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 14. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (14 subgoals):
 1. \<And>evsFR1 S A U m s H. \<lbrakk>(evsFR1, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR1) = H \<union> analz (A \<union> spies evsFR1); 0 < m; s \<noteq> 0; Crypt (symK m) (Pri_AgrK s) \<in> synth (analz (A \<union> spies evsFR1))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
 2. \<And>evsC2 S A U a m n run X n' s s' H. \<lbrakk>(evsC2, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC2) = H \<union> analz (A \<union> spies evsC2); Pri_AgrK a \<notin> U; NonceS (S (User m, n, run)) = None; Says n run (Suc 0) X (User m) (Crypt (symK n') (Pri_AgrK s)) \<in> set evsC2; s' = (if symK n' = symK m then s else 0)\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U \<longrightarrow> insert (pubAK a) (analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2))) = insert (pubAK a) (H \<union> analz (insert (Pri_AgrK a) (A \<union> spies evsC2)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U \<longrightarrow> insert (pubAK a) (analz (H \<union> A \<union> spies evsC2)) = insert (pubAK a) (H \<union> analz (A \<union> spies evsC2)))
 3. \<And>evsR2 S A U b n run X a H. \<lbrakk>(evsR2, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR2) = H \<union> analz (A \<union> spies evsR2); Pri_AgrK b \<notin> U; \<exists>y. NonceS (S (Card n, n, run)) = Some y; IntMapK (S (Card n, n, run)) = None; Says n run 2 X (Card n) (pubAK a) \<in> set evsR2\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK b) U \<longrightarrow> insert (pubAK b) (analz (H \<union> A \<union> spies evsR2)) = insert (pubAK b) (H \<union> analz (A \<union> spies evsR2))
 4. \<And>evsC3 S A U c m n run s a X b H. \<lbrakk>(evsC3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC3) = H \<union> analz (A \<union> spies evsC3); Pri_AgrK c \<notin> U; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = None; Says n run 2 X (User m) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3)))
 5. \<And>evsR3 S A U d n run s b a X c s' H. \<lbrakk>(evsR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR3) = H \<union> analz (A \<union> spies evsR3); Pri_AgrK d \<notin> U; NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = None; Says n run 3 X (Card n) (pubAK (c * (s' + a * b))) \<in> set evsR3; Key (sesK (c * d * (s' + a * b))) \<notin> U; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))) \<and> ((s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3)) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3)))
 6. \<And>evsFR3 S A U m n run s a b c d H. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR3) = H \<union> analz (A \<union> spies evsFR3); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; Pri_AgrK s \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK d \<in> analz (A \<union> spies evsFR3); Key (sesK (c * d * (s + a * b))) \<notin> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
 7. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 8. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 9. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 10. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 11. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 12. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 13. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 14. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
fix evsFR1 S A U m s H
[PROOF STATE]
proof (state)
goal (14 subgoals):
 1. \<And>evsFR1 S A U m s H. \<lbrakk>(evsFR1, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR1) = H \<union> analz (A \<union> spies evsFR1); 0 < m; s \<noteq> 0; Crypt (symK m) (Pri_AgrK s) \<in> synth (analz (A \<union> spies evsFR1))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
 2. \<And>evsC2 S A U a m n run X n' s s' H. \<lbrakk>(evsC2, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC2) = H \<union> analz (A \<union> spies evsC2); Pri_AgrK a \<notin> U; NonceS (S (User m, n, run)) = None; Says n run (Suc 0) X (User m) (Crypt (symK n') (Pri_AgrK s)) \<in> set evsC2; s' = (if symK n' = symK m then s else 0)\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U \<longrightarrow> insert (pubAK a) (analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2))) = insert (pubAK a) (H \<union> analz (insert (Pri_AgrK a) (A \<union> spies evsC2)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U \<longrightarrow> insert (pubAK a) (analz (H \<union> A \<union> spies evsC2)) = insert (pubAK a) (H \<union> analz (A \<union> spies evsC2)))
 3. \<And>evsR2 S A U b n run X a H. \<lbrakk>(evsR2, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR2) = H \<union> analz (A \<union> spies evsR2); Pri_AgrK b \<notin> U; \<exists>y. NonceS (S (Card n, n, run)) = Some y; IntMapK (S (Card n, n, run)) = None; Says n run 2 X (Card n) (pubAK a) \<in> set evsR2\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK b) U \<longrightarrow> insert (pubAK b) (analz (H \<union> A \<union> spies evsR2)) = insert (pubAK b) (H \<union> analz (A \<union> spies evsR2))
 4. \<And>evsC3 S A U c m n run s a X b H. \<lbrakk>(evsC3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC3) = H \<union> analz (A \<union> spies evsC3); Pri_AgrK c \<notin> U; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = None; Says n run 2 X (User m) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3)))
 5. \<And>evsR3 S A U d n run s b a X c s' H. \<lbrakk>(evsR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR3) = H \<union> analz (A \<union> spies evsR3); Pri_AgrK d \<notin> U; NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = None; Says n run 3 X (Card n) (pubAK (c * (s' + a * b))) \<in> set evsR3; Key (sesK (c * d * (s' + a * b))) \<notin> U; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))) \<and> ((s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3)) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3)))
 6. \<And>evsFR3 S A U m n run s a b c d H. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR3) = H \<union> analz (A \<union> spies evsFR3); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; Pri_AgrK s \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK d \<in> analz (A \<union> spies evsFR3); Key (sesK (c * d * (s + a * b))) \<notin> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
 7. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 8. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 9. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 10. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 11. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 12. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 13. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 14. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
assume
    A: "\<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow>
      analz (H \<union> A \<union> spies evsFR1) = H \<union> analz (A \<union> spies evsFR1)" and
    B: "(evsFR1, S, A, U) \<in> protocol" and
    C: "Crypt (symK m) (Pri_AgrK s) \<in> synth (analz (A \<union> spies evsFR1))"
[PROOF STATE]
proof (state)
this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsFR1) = ?H \<union> analz (A \<union> spies evsFR1)
(evsFR1, S, A, U) \<in> protocol
Crypt (symK m) (Pri_AgrK s) \<in> synth (analz (A \<union> spies evsFR1))

goal (14 subgoals):
 1. \<And>evsFR1 S A U m s H. \<lbrakk>(evsFR1, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR1) = H \<union> analz (A \<union> spies evsFR1); 0 < m; s \<noteq> 0; Crypt (symK m) (Pri_AgrK s) \<in> synth (analz (A \<union> spies evsFR1))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
 2. \<And>evsC2 S A U a m n run X n' s s' H. \<lbrakk>(evsC2, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC2) = H \<union> analz (A \<union> spies evsC2); Pri_AgrK a \<notin> U; NonceS (S (User m, n, run)) = None; Says n run (Suc 0) X (User m) (Crypt (symK n') (Pri_AgrK s)) \<in> set evsC2; s' = (if symK n' = symK m then s else 0)\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U \<longrightarrow> insert (pubAK a) (analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2))) = insert (pubAK a) (H \<union> analz (insert (Pri_AgrK a) (A \<union> spies evsC2)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U \<longrightarrow> insert (pubAK a) (analz (H \<union> A \<union> spies evsC2)) = insert (pubAK a) (H \<union> analz (A \<union> spies evsC2)))
 3. \<And>evsR2 S A U b n run X a H. \<lbrakk>(evsR2, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR2) = H \<union> analz (A \<union> spies evsR2); Pri_AgrK b \<notin> U; \<exists>y. NonceS (S (Card n, n, run)) = Some y; IntMapK (S (Card n, n, run)) = None; Says n run 2 X (Card n) (pubAK a) \<in> set evsR2\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK b) U \<longrightarrow> insert (pubAK b) (analz (H \<union> A \<union> spies evsR2)) = insert (pubAK b) (H \<union> analz (A \<union> spies evsR2))
 4. \<And>evsC3 S A U c m n run s a X b H. \<lbrakk>(evsC3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC3) = H \<union> analz (A \<union> spies evsC3); Pri_AgrK c \<notin> U; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = None; Says n run 2 X (User m) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3)))
 5. \<And>evsR3 S A U d n run s b a X c s' H. \<lbrakk>(evsR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR3) = H \<union> analz (A \<union> spies evsR3); Pri_AgrK d \<notin> U; NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = None; Says n run 3 X (Card n) (pubAK (c * (s' + a * b))) \<in> set evsR3; Key (sesK (c * d * (s' + a * b))) \<notin> U; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))) \<and> ((s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3)) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3)))
 6. \<And>evsFR3 S A U m n run s a b c d H. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR3) = H \<union> analz (A \<union> spies evsFR3); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; Pri_AgrK s \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK d \<in> analz (A \<union> spies evsFR3); Key (sesK (c * d * (s + a * b))) \<notin> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
 7. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 8. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 9. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 10. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 11. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 12. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 13. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 14. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
let
    ?B = "H \<union> A \<union> spies evsFR1" and
    ?C = "A \<union> spies evsFR1"
[PROOF STATE]
proof (state)
goal (14 subgoals):
 1. \<And>evsFR1 S A U m s H. \<lbrakk>(evsFR1, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR1) = H \<union> analz (A \<union> spies evsFR1); 0 < m; s \<noteq> 0; Crypt (symK m) (Pri_AgrK s) \<in> synth (analz (A \<union> spies evsFR1))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
 2. \<And>evsC2 S A U a m n run X n' s s' H. \<lbrakk>(evsC2, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC2) = H \<union> analz (A \<union> spies evsC2); Pri_AgrK a \<notin> U; NonceS (S (User m, n, run)) = None; Says n run (Suc 0) X (User m) (Crypt (symK n') (Pri_AgrK s)) \<in> set evsC2; s' = (if symK n' = symK m then s else 0)\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U \<longrightarrow> insert (pubAK a) (analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2))) = insert (pubAK a) (H \<union> analz (insert (Pri_AgrK a) (A \<union> spies evsC2)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U \<longrightarrow> insert (pubAK a) (analz (H \<union> A \<union> spies evsC2)) = insert (pubAK a) (H \<union> analz (A \<union> spies evsC2)))
 3. \<And>evsR2 S A U b n run X a H. \<lbrakk>(evsR2, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR2) = H \<union> analz (A \<union> spies evsR2); Pri_AgrK b \<notin> U; \<exists>y. NonceS (S (Card n, n, run)) = Some y; IntMapK (S (Card n, n, run)) = None; Says n run 2 X (Card n) (pubAK a) \<in> set evsR2\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK b) U \<longrightarrow> insert (pubAK b) (analz (H \<union> A \<union> spies evsR2)) = insert (pubAK b) (H \<union> analz (A \<union> spies evsR2))
 4. \<And>evsC3 S A U c m n run s a X b H. \<lbrakk>(evsC3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC3) = H \<union> analz (A \<union> spies evsC3); Pri_AgrK c \<notin> U; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = None; Says n run 2 X (User m) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3)))
 5. \<And>evsR3 S A U d n run s b a X c s' H. \<lbrakk>(evsR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR3) = H \<union> analz (A \<union> spies evsR3); Pri_AgrK d \<notin> U; NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = None; Says n run 3 X (Card n) (pubAK (c * (s' + a * b))) \<in> set evsR3; Key (sesK (c * d * (s' + a * b))) \<notin> U; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))) \<and> ((s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3)) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3)))
 6. \<And>evsFR3 S A U m n run s a b c d H. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR3) = H \<union> analz (A \<union> spies evsFR3); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; Pri_AgrK s \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK d \<in> analz (A \<union> spies evsFR3); Key (sesK (c * d * (s + a * b))) \<notin> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
 7. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 8. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 9. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 10. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 11. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 12. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 13. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 14. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
show "H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow>
    analz (insert (Crypt (symK m) (Pri_AgrK s)) ?B) =
    H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) ?C)"
    (is "_ \<longrightarrow> ?T")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
[PROOF STEP]
proof (rule impI, cases "Key (invK (symK m)) \<in> analz ?C")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<in> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<notin> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
Key (invK (symK m)) \<in> analz (A \<union> spies evsFR1)

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<in> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<notin> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
[PROOF STEP]
assume "H \<subseteq> range Key \<union> range Pri_AgrK - U"
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<in> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<notin> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
[PROOF STEP]
with A
[PROOF STATE]
proof (chain)
picking this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsFR1) = ?H \<union> analz (A \<union> spies evsFR1)
H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
have "analz ?B = H \<union> analz ?C"
[PROOF STATE]
proof (prove)
using this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsFR1) = ?H \<union> analz (A \<union> spies evsFR1)
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. analz (H \<union> A \<union> spies evsFR1) = H \<union> analz (A \<union> spies evsFR1)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
analz (H \<union> A \<union> spies evsFR1) = H \<union> analz (A \<union> spies evsFR1)

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<in> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<notin> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
analz (H \<union> A \<union> spies evsFR1) = H \<union> analz (A \<union> spies evsFR1)

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<in> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<notin> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
[PROOF STEP]
have "Pri_AgrK s \<in> analz ?C"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Pri_AgrK s \<in> analz (A \<union> spies evsFR1)
[PROOF STEP]
proof (insert synth_crypt [OF C], erule disjE, erule_tac [2] conjE)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. Crypt (symK m) (Pri_AgrK s) \<in> analz (A \<union> spies evsFR1) \<Longrightarrow> Pri_AgrK s \<in> analz (A \<union> spies evsFR1)
 2. \<lbrakk>Pri_AgrK s \<in> synth (analz (A \<union> spies evsFR1)); Key (symK m) \<in> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> Pri_AgrK s \<in> analz (A \<union> spies evsFR1)
[PROOF STEP]
assume "Crypt (symK m) (Pri_AgrK s) \<in> analz ?C"
[PROOF STATE]
proof (state)
this:
Crypt (symK m) (Pri_AgrK s) \<in> analz (A \<union> spies evsFR1)

goal (2 subgoals):
 1. Crypt (symK m) (Pri_AgrK s) \<in> analz (A \<union> spies evsFR1) \<Longrightarrow> Pri_AgrK s \<in> analz (A \<union> spies evsFR1)
 2. \<lbrakk>Pri_AgrK s \<in> synth (analz (A \<union> spies evsFR1)); Key (symK m) \<in> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> Pri_AgrK s \<in> analz (A \<union> spies evsFR1)
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
Crypt (symK m) (Pri_AgrK s) \<in> analz (A \<union> spies evsFR1)

goal (1 subgoal):
 1. Pri_AgrK s \<in> analz (A \<union> spies evsFR1)
[PROOF STEP]
using True
[PROOF STATE]
proof (prove)
using this:
Crypt (symK m) (Pri_AgrK s) \<in> analz (A \<union> spies evsFR1)
Key (invK (symK m)) \<in> analz (A \<union> spies evsFR1)

goal (1 subgoal):
 1. Pri_AgrK s \<in> analz (A \<union> spies evsFR1)
[PROOF STEP]
by (rule analz.Decrypt)
[PROOF STATE]
proof (state)
this:
Pri_AgrK s \<in> analz (A \<union> spies evsFR1)

goal (1 subgoal):
 1. \<lbrakk>Pri_AgrK s \<in> synth (analz (A \<union> spies evsFR1)); Key (symK m) \<in> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> Pri_AgrK s \<in> analz (A \<union> spies evsFR1)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>Pri_AgrK s \<in> synth (analz (A \<union> spies evsFR1)); Key (symK m) \<in> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> Pri_AgrK s \<in> analz (A \<union> spies evsFR1)
[PROOF STEP]
assume "Pri_AgrK s \<in> synth (analz ?C)"
[PROOF STATE]
proof (state)
this:
Pri_AgrK s \<in> synth (analz (A \<union> spies evsFR1))

goal (1 subgoal):
 1. \<lbrakk>Pri_AgrK s \<in> synth (analz (A \<union> spies evsFR1)); Key (symK m) \<in> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> Pri_AgrK s \<in> analz (A \<union> spies evsFR1)
[PROOF STEP]
thus ?thesis
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK s \<in> synth (analz (A \<union> spies evsFR1))

goal (1 subgoal):
 1. Pri_AgrK s \<in> analz (A \<union> spies evsFR1)
[PROOF STEP]
by (rule synth_simp_intro, simp)
[PROOF STATE]
proof (state)
this:
Pri_AgrK s \<in> analz (A \<union> spies evsFR1)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
Pri_AgrK s \<in> analz (A \<union> spies evsFR1)

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<in> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<notin> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Pri_AgrK s \<in> analz (A \<union> spies evsFR1)

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<in> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<notin> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
[PROOF STEP]
from this
[PROOF STATE]
proof (chain)
picking this:
Pri_AgrK s \<in> analz (A \<union> spies evsFR1)
[PROOF STEP]
have "Pri_AgrK s \<in> analz ?B"
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK s \<in> analz (A \<union> spies evsFR1)

goal (1 subgoal):
 1. Pri_AgrK s \<in> analz (H \<union> A \<union> spies evsFR1)
[PROOF STEP]
by (rule rev_subsetD, rule_tac analz_mono, blast)
[PROOF STATE]
proof (state)
this:
Pri_AgrK s \<in> analz (H \<union> A \<union> spies evsFR1)

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<in> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<notin> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
analz (H \<union> A \<union> spies evsFR1) = H \<union> analz (A \<union> spies evsFR1)
Pri_AgrK s \<in> analz (A \<union> spies evsFR1)
Pri_AgrK s \<in> analz (H \<union> A \<union> spies evsFR1)
[PROOF STEP]
have D: "analz (insert (Pri_AgrK s) ?B) =
      H \<union> analz (insert (Pri_AgrK s) ?C)"
[PROOF STATE]
proof (prove)
using this:
analz (H \<union> A \<union> spies evsFR1) = H \<union> analz (A \<union> spies evsFR1)
Pri_AgrK s \<in> analz (A \<union> spies evsFR1)
Pri_AgrK s \<in> analz (H \<union> A \<union> spies evsFR1)

goal (1 subgoal):
 1. analz (insert (Pri_AgrK s) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Pri_AgrK s) (A \<union> spies evsFR1))
[PROOF STEP]
by (simp add: analz_simp_insert_1)
[PROOF STATE]
proof (state)
this:
analz (insert (Pri_AgrK s) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Pri_AgrK s) (A \<union> spies evsFR1))

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<in> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<notin> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
[PROOF STEP]
have "Key (invK (symK m)) \<in> analz ?B"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Key (invK (symK m)) \<in> analz (H \<union> A \<union> spies evsFR1)
[PROOF STEP]
by (rule subsetD [OF _ True], rule analz_mono, blast)
[PROOF STATE]
proof (state)
this:
Key (invK (symK m)) \<in> analz (H \<union> A \<union> spies evsFR1)

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<in> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<notin> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
[PROOF STEP]
hence "analz (insert (Crypt (symK m) (Pri_AgrK s)) ?B) =
      insert (Crypt (symK m) (Pri_AgrK s)) (analz (insert (Pri_AgrK s) ?B))"
[PROOF STATE]
proof (prove)
using this:
Key (invK (symK m)) \<in> analz (H \<union> A \<union> spies evsFR1)

goal (1 subgoal):
 1. analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = insert (Crypt (symK m) (Pri_AgrK s)) (analz (insert (Pri_AgrK s) (H \<union> A \<union> spies evsFR1)))
[PROOF STEP]
by (simp add: analz_crypt_in)
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = insert (Crypt (symK m) (Pri_AgrK s)) (analz (insert (Pri_AgrK s) (H \<union> A \<union> spies evsFR1)))

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<in> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<notin> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = insert (Crypt (symK m) (Pri_AgrK s)) (analz (insert (Pri_AgrK s) (H \<union> A \<union> spies evsFR1)))

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<in> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<notin> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
[PROOF STEP]
have "analz (insert (Crypt (symK m) (Pri_AgrK s)) ?C) =
      insert (Crypt (symK m) (Pri_AgrK s)) (analz (insert (Pri_AgrK s) ?C))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1)) = insert (Crypt (symK m) (Pri_AgrK s)) (analz (insert (Pri_AgrK s) (A \<union> spies evsFR1)))
[PROOF STEP]
using True
[PROOF STATE]
proof (prove)
using this:
Key (invK (symK m)) \<in> analz (A \<union> spies evsFR1)

goal (1 subgoal):
 1. analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1)) = insert (Crypt (symK m) (Pri_AgrK s)) (analz (insert (Pri_AgrK s) (A \<union> spies evsFR1)))
[PROOF STEP]
by (simp add: analz_crypt_in)
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1)) = insert (Crypt (symK m) (Pri_AgrK s)) (analz (insert (Pri_AgrK s) (A \<union> spies evsFR1)))

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<in> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<notin> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = insert (Crypt (symK m) (Pri_AgrK s)) (analz (insert (Pri_AgrK s) (H \<union> A \<union> spies evsFR1)))
analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1)) = insert (Crypt (symK m) (Pri_AgrK s)) (analz (insert (Pri_AgrK s) (A \<union> spies evsFR1)))
[PROOF STEP]
show ?T
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = insert (Crypt (symK m) (Pri_AgrK s)) (analz (insert (Pri_AgrK s) (H \<union> A \<union> spies evsFR1)))
analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1)) = insert (Crypt (symK m) (Pri_AgrK s)) (analz (insert (Pri_AgrK s) (A \<union> spies evsFR1)))

goal (1 subgoal):
 1. analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
[PROOF STEP]
using D
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = insert (Crypt (symK m) (Pri_AgrK s)) (analz (insert (Pri_AgrK s) (H \<union> A \<union> spies evsFR1)))
analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1)) = insert (Crypt (symK m) (Pri_AgrK s)) (analz (insert (Pri_AgrK s) (A \<union> spies evsFR1)))
analz (insert (Pri_AgrK s) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Pri_AgrK s) (A \<union> spies evsFR1))

goal (1 subgoal):
 1. analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<notin> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<notin> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
Key (invK (symK m)) \<notin> analz (A \<union> spies evsFR1)

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<notin> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Key (invK (symK m)) \<notin> analz (A \<union> spies evsFR1)

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<notin> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
[PROOF STEP]
assume D: "H \<subseteq> range Key \<union> range Pri_AgrK - U"
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<notin> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
[PROOF STEP]
with A
[PROOF STATE]
proof (chain)
picking this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsFR1) = ?H \<union> analz (A \<union> spies evsFR1)
H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
have E: "analz ?B = H \<union> analz ?C"
[PROOF STATE]
proof (prove)
using this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsFR1) = ?H \<union> analz (A \<union> spies evsFR1)
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. analz (H \<union> A \<union> spies evsFR1) = H \<union> analz (A \<union> spies evsFR1)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
analz (H \<union> A \<union> spies evsFR1) = H \<union> analz (A \<union> spies evsFR1)

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<notin> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
Key (invK (symK m)) \<notin> analz (A \<union> spies evsFR1)
analz (H \<union> A \<union> spies evsFR1) = H \<union> analz (A \<union> spies evsFR1)
[PROOF STEP]
have "Key (invK (symK m)) \<notin> analz ?B"
[PROOF STATE]
proof (prove)
using this:
Key (invK (symK m)) \<notin> analz (A \<union> spies evsFR1)
analz (H \<union> A \<union> spies evsFR1) = H \<union> analz (A \<union> spies evsFR1)

goal (1 subgoal):
 1. Key (invK (symK m)) \<notin> analz (H \<union> A \<union> spies evsFR1)
[PROOF STEP]
proof (simp add: invK_symK, insert pr_symk_used [OF B, of m])
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>Key (symK m) \<notin> analz (A \<union> spies evsFR1); analz (H \<union> A \<union> spies evsFR1) = H \<union> analz (A \<union> spies evsFR1); Key (symK m) \<in> U\<rbrakk> \<Longrightarrow> Key (symK m) \<notin> H
[PROOF STEP]
qed (rule notI, drule subsetD [OF D], simp)
[PROOF STATE]
proof (state)
this:
Key (invK (symK m)) \<notin> analz (H \<union> A \<union> spies evsFR1)

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<notin> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
[PROOF STEP]
hence "analz (insert (Crypt (symK m) (Pri_AgrK s)) ?B) =
      insert (Crypt (symK m) (Pri_AgrK s)) (analz ?B)"
[PROOF STATE]
proof (prove)
using this:
Key (invK (symK m)) \<notin> analz (H \<union> A \<union> spies evsFR1)

goal (1 subgoal):
 1. analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = insert (Crypt (symK m) (Pri_AgrK s)) (analz (H \<union> A \<union> spies evsFR1))
[PROOF STEP]
by (simp add: analz_crypt_out)
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = insert (Crypt (symK m) (Pri_AgrK s)) (analz (H \<union> A \<union> spies evsFR1))

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<notin> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = insert (Crypt (symK m) (Pri_AgrK s)) (analz (H \<union> A \<union> spies evsFR1))

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<notin> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
[PROOF STEP]
have "H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) ?C) =
      insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> analz ?C)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1)) = insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> analz (A \<union> spies evsFR1))
[PROOF STEP]
using False
[PROOF STATE]
proof (prove)
using this:
Key (invK (symK m)) \<notin> analz (A \<union> spies evsFR1)

goal (1 subgoal):
 1. H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1)) = insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> analz (A \<union> spies evsFR1))
[PROOF STEP]
by (simp add: analz_crypt_out)
[PROOF STATE]
proof (state)
this:
H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1)) = insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> analz (A \<union> spies evsFR1))

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (symK m)) \<notin> analz (A \<union> spies evsFR1)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = insert (Crypt (symK m) (Pri_AgrK s)) (analz (H \<union> A \<union> spies evsFR1))
H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1)) = insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> analz (A \<union> spies evsFR1))
[PROOF STEP]
show ?T
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = insert (Crypt (symK m) (Pri_AgrK s)) (analz (H \<union> A \<union> spies evsFR1))
H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1)) = insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> analz (A \<union> spies evsFR1))

goal (1 subgoal):
 1. analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
[PROOF STEP]
using E
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = insert (Crypt (symK m) (Pri_AgrK s)) (analz (H \<union> A \<union> spies evsFR1))
H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1)) = insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> analz (A \<union> spies evsFR1))
analz (H \<union> A \<union> spies evsFR1) = H \<union> analz (A \<union> spies evsFR1)

goal (1 subgoal):
 1. analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (symK m) (Pri_AgrK s)) (H \<union> A \<union> spies evsFR1)) = H \<union> analz (insert (Crypt (symK m) (Pri_AgrK s)) (A \<union> spies evsFR1))

goal (13 subgoals):
 1. \<And>evsC2 S A U a m n run X n' s s' H. \<lbrakk>(evsC2, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC2) = H \<union> analz (A \<union> spies evsC2); Pri_AgrK a \<notin> U; NonceS (S (User m, n, run)) = None; Says n run (Suc 0) X (User m) (Crypt (symK n') (Pri_AgrK s)) \<in> set evsC2; s' = (if symK n' = symK m then s else 0)\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U \<longrightarrow> insert (pubAK a) (analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2))) = insert (pubAK a) (H \<union> analz (insert (Pri_AgrK a) (A \<union> spies evsC2)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U \<longrightarrow> insert (pubAK a) (analz (H \<union> A \<union> spies evsC2)) = insert (pubAK a) (H \<union> analz (A \<union> spies evsC2)))
 2. \<And>evsR2 S A U b n run X a H. \<lbrakk>(evsR2, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR2) = H \<union> analz (A \<union> spies evsR2); Pri_AgrK b \<notin> U; \<exists>y. NonceS (S (Card n, n, run)) = Some y; IntMapK (S (Card n, n, run)) = None; Says n run 2 X (Card n) (pubAK a) \<in> set evsR2\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK b) U \<longrightarrow> insert (pubAK b) (analz (H \<union> A \<union> spies evsR2)) = insert (pubAK b) (H \<union> analz (A \<union> spies evsR2))
 3. \<And>evsC3 S A U c m n run s a X b H. \<lbrakk>(evsC3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC3) = H \<union> analz (A \<union> spies evsC3); Pri_AgrK c \<notin> U; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = None; Says n run 2 X (User m) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3)))
 4. \<And>evsR3 S A U d n run s b a X c s' H. \<lbrakk>(evsR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR3) = H \<union> analz (A \<union> spies evsR3); Pri_AgrK d \<notin> U; NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = None; Says n run 3 X (Card n) (pubAK (c * (s' + a * b))) \<in> set evsR3; Key (sesK (c * d * (s' + a * b))) \<notin> U; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))) \<and> ((s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3)) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3)))
 5. \<And>evsFR3 S A U m n run s a b c d H. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR3) = H \<union> analz (A \<union> spies evsFR3); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; Pri_AgrK s \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK d \<in> analz (A \<union> spies evsFR3); Key (sesK (c * d * (s + a * b))) \<notin> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
 6. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 7. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 8. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 9. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 10. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 11. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 12. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 13. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (13 subgoals):
 1. \<And>evsC2 S A U a m n run X n' s s' H. \<lbrakk>(evsC2, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC2) = H \<union> analz (A \<union> spies evsC2); Pri_AgrK a \<notin> U; NonceS (S (User m, n, run)) = None; Says n run (Suc 0) X (User m) (Crypt (symK n') (Pri_AgrK s)) \<in> set evsC2; s' = (if symK n' = symK m then s else 0)\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U \<longrightarrow> insert (pubAK a) (analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2))) = insert (pubAK a) (H \<union> analz (insert (Pri_AgrK a) (A \<union> spies evsC2)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U \<longrightarrow> insert (pubAK a) (analz (H \<union> A \<union> spies evsC2)) = insert (pubAK a) (H \<union> analz (A \<union> spies evsC2)))
 2. \<And>evsR2 S A U b n run X a H. \<lbrakk>(evsR2, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR2) = H \<union> analz (A \<union> spies evsR2); Pri_AgrK b \<notin> U; \<exists>y. NonceS (S (Card n, n, run)) = Some y; IntMapK (S (Card n, n, run)) = None; Says n run 2 X (Card n) (pubAK a) \<in> set evsR2\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK b) U \<longrightarrow> insert (pubAK b) (analz (H \<union> A \<union> spies evsR2)) = insert (pubAK b) (H \<union> analz (A \<union> spies evsR2))
 3. \<And>evsC3 S A U c m n run s a X b H. \<lbrakk>(evsC3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC3) = H \<union> analz (A \<union> spies evsC3); Pri_AgrK c \<notin> U; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = None; Says n run 2 X (User m) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3)))
 4. \<And>evsR3 S A U d n run s b a X c s' H. \<lbrakk>(evsR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR3) = H \<union> analz (A \<union> spies evsR3); Pri_AgrK d \<notin> U; NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = None; Says n run 3 X (Card n) (pubAK (c * (s' + a * b))) \<in> set evsR3; Key (sesK (c * d * (s' + a * b))) \<notin> U; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))) \<and> ((s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3)) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3)))
 5. \<And>evsFR3 S A U m n run s a b c d H. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR3) = H \<union> analz (A \<union> spies evsFR3); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; Pri_AgrK s \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK d \<in> analz (A \<union> spies evsFR3); Key (sesK (c * d * (s + a * b))) \<notin> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
 6. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 7. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 8. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 9. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 10. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 11. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 12. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 13. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
fix evsC2 S A U a H and m :: nat
[PROOF STATE]
proof (state)
goal (13 subgoals):
 1. \<And>evsC2 S A U a m n run X n' s s' H. \<lbrakk>(evsC2, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC2) = H \<union> analz (A \<union> spies evsC2); Pri_AgrK a \<notin> U; NonceS (S (User m, n, run)) = None; Says n run (Suc 0) X (User m) (Crypt (symK n') (Pri_AgrK s)) \<in> set evsC2; s' = (if symK n' = symK m then s else 0)\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U \<longrightarrow> insert (pubAK a) (analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2))) = insert (pubAK a) (H \<union> analz (insert (Pri_AgrK a) (A \<union> spies evsC2)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U \<longrightarrow> insert (pubAK a) (analz (H \<union> A \<union> spies evsC2)) = insert (pubAK a) (H \<union> analz (A \<union> spies evsC2)))
 2. \<And>evsR2 S A U b n run X a H. \<lbrakk>(evsR2, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR2) = H \<union> analz (A \<union> spies evsR2); Pri_AgrK b \<notin> U; \<exists>y. NonceS (S (Card n, n, run)) = Some y; IntMapK (S (Card n, n, run)) = None; Says n run 2 X (Card n) (pubAK a) \<in> set evsR2\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK b) U \<longrightarrow> insert (pubAK b) (analz (H \<union> A \<union> spies evsR2)) = insert (pubAK b) (H \<union> analz (A \<union> spies evsR2))
 3. \<And>evsC3 S A U c m n run s a X b H. \<lbrakk>(evsC3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC3) = H \<union> analz (A \<union> spies evsC3); Pri_AgrK c \<notin> U; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = None; Says n run 2 X (User m) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3)))
 4. \<And>evsR3 S A U d n run s b a X c s' H. \<lbrakk>(evsR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR3) = H \<union> analz (A \<union> spies evsR3); Pri_AgrK d \<notin> U; NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = None; Says n run 3 X (Card n) (pubAK (c * (s' + a * b))) \<in> set evsR3; Key (sesK (c * d * (s' + a * b))) \<notin> U; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))) \<and> ((s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3)) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3)))
 5. \<And>evsFR3 S A U m n run s a b c d H. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR3) = H \<union> analz (A \<union> spies evsFR3); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; Pri_AgrK s \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK d \<in> analz (A \<union> spies evsFR3); Key (sesK (c * d * (s + a * b))) \<notin> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
 6. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 7. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 8. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 9. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 10. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 11. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 12. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 13. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
assume
    A: "\<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow>
      analz (H \<union> A \<union> spies evsC2) = H \<union> analz (A \<union> spies evsC2)" and
    B: "Pri_AgrK a \<notin> U"
[PROOF STATE]
proof (state)
this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsC2) = ?H \<union> analz (A \<union> spies evsC2)
Pri_AgrK a \<notin> U

goal (13 subgoals):
 1. \<And>evsC2 S A U a m n run X n' s s' H. \<lbrakk>(evsC2, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC2) = H \<union> analz (A \<union> spies evsC2); Pri_AgrK a \<notin> U; NonceS (S (User m, n, run)) = None; Says n run (Suc 0) X (User m) (Crypt (symK n') (Pri_AgrK s)) \<in> set evsC2; s' = (if symK n' = symK m then s else 0)\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U \<longrightarrow> insert (pubAK a) (analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2))) = insert (pubAK a) (H \<union> analz (insert (Pri_AgrK a) (A \<union> spies evsC2)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U \<longrightarrow> insert (pubAK a) (analz (H \<union> A \<union> spies evsC2)) = insert (pubAK a) (H \<union> analz (A \<union> spies evsC2)))
 2. \<And>evsR2 S A U b n run X a H. \<lbrakk>(evsR2, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR2) = H \<union> analz (A \<union> spies evsR2); Pri_AgrK b \<notin> U; \<exists>y. NonceS (S (Card n, n, run)) = Some y; IntMapK (S (Card n, n, run)) = None; Says n run 2 X (Card n) (pubAK a) \<in> set evsR2\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK b) U \<longrightarrow> insert (pubAK b) (analz (H \<union> A \<union> spies evsR2)) = insert (pubAK b) (H \<union> analz (A \<union> spies evsR2))
 3. \<And>evsC3 S A U c m n run s a X b H. \<lbrakk>(evsC3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC3) = H \<union> analz (A \<union> spies evsC3); Pri_AgrK c \<notin> U; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = None; Says n run 2 X (User m) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3)))
 4. \<And>evsR3 S A U d n run s b a X c s' H. \<lbrakk>(evsR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR3) = H \<union> analz (A \<union> spies evsR3); Pri_AgrK d \<notin> U; NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = None; Says n run 3 X (Card n) (pubAK (c * (s' + a * b))) \<in> set evsR3; Key (sesK (c * d * (s' + a * b))) \<notin> U; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))) \<and> ((s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3)) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3)))
 5. \<And>evsFR3 S A U m n run s a b c d H. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR3) = H \<union> analz (A \<union> spies evsFR3); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; Pri_AgrK s \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK d \<in> analz (A \<union> spies evsFR3); Key (sesK (c * d * (s + a * b))) \<notin> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
 6. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 7. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 8. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 9. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 10. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 11. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 12. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 13. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
let
    ?B = "H \<union> A \<union> spies evsC2" and
    ?C = "A \<union> spies evsC2"
[PROOF STATE]
proof (state)
goal (13 subgoals):
 1. \<And>evsC2 S A U a m n run X n' s s' H. \<lbrakk>(evsC2, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC2) = H \<union> analz (A \<union> spies evsC2); Pri_AgrK a \<notin> U; NonceS (S (User m, n, run)) = None; Says n run (Suc 0) X (User m) (Crypt (symK n') (Pri_AgrK s)) \<in> set evsC2; s' = (if symK n' = symK m then s else 0)\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U \<longrightarrow> insert (pubAK a) (analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2))) = insert (pubAK a) (H \<union> analz (insert (Pri_AgrK a) (A \<union> spies evsC2)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U \<longrightarrow> insert (pubAK a) (analz (H \<union> A \<union> spies evsC2)) = insert (pubAK a) (H \<union> analz (A \<union> spies evsC2)))
 2. \<And>evsR2 S A U b n run X a H. \<lbrakk>(evsR2, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR2) = H \<union> analz (A \<union> spies evsR2); Pri_AgrK b \<notin> U; \<exists>y. NonceS (S (Card n, n, run)) = Some y; IntMapK (S (Card n, n, run)) = None; Says n run 2 X (Card n) (pubAK a) \<in> set evsR2\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK b) U \<longrightarrow> insert (pubAK b) (analz (H \<union> A \<union> spies evsR2)) = insert (pubAK b) (H \<union> analz (A \<union> spies evsR2))
 3. \<And>evsC3 S A U c m n run s a X b H. \<lbrakk>(evsC3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC3) = H \<union> analz (A \<union> spies evsC3); Pri_AgrK c \<notin> U; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = None; Says n run 2 X (User m) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3)))
 4. \<And>evsR3 S A U d n run s b a X c s' H. \<lbrakk>(evsR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR3) = H \<union> analz (A \<union> spies evsR3); Pri_AgrK d \<notin> U; NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = None; Says n run 3 X (Card n) (pubAK (c * (s' + a * b))) \<in> set evsR3; Key (sesK (c * d * (s' + a * b))) \<notin> U; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))) \<and> ((s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3)) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3)))
 5. \<And>evsFR3 S A U m n run s a b c d H. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR3) = H \<union> analz (A \<union> spies evsFR3); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; Pri_AgrK s \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK d \<in> analz (A \<union> spies evsFR3); Key (sesK (c * d * (s + a * b))) \<notin> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
 6. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 7. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 8. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 9. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 10. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 11. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 12. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 13. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
show
   "(m = 0 \<longrightarrow>
       H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U \<longrightarrow>
     insert (pubAK a) (analz (insert (Pri_AgrK a) ?B)) =
     insert (pubAK a) (H \<union> analz (insert (Pri_AgrK a) ?C))) \<and>
    (0 < m \<longrightarrow>
       H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U \<longrightarrow>
     insert (pubAK a) (analz ?B) =
     insert (pubAK a) (H \<union> analz ?C))"
    (is "(_ \<longrightarrow> _ \<longrightarrow> ?T) \<and> (_ \<longrightarrow> _ \<longrightarrow> ?T')")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U \<longrightarrow> insert (pubAK a) (analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2))) = insert (pubAK a) (H \<union> analz (insert (Pri_AgrK a) (A \<union> spies evsC2)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U \<longrightarrow> insert (pubAK a) (analz (H \<union> A \<union> spies evsC2)) = insert (pubAK a) (H \<union> analz (A \<union> spies evsC2)))
[PROOF STEP]
proof (rule conjI, (rule_tac [!] impI)+)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<lbrakk>m = 0; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U\<rbrakk> \<Longrightarrow> insert (pubAK a) (analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2))) = insert (pubAK a) (H \<union> analz (insert (Pri_AgrK a) (A \<union> spies evsC2)))
 2. \<lbrakk>0 < m; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U\<rbrakk> \<Longrightarrow> insert (pubAK a) (analz (H \<union> A \<union> spies evsC2)) = insert (pubAK a) (H \<union> analz (A \<union> spies evsC2))
[PROOF STEP]
assume "H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U"
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U

goal (2 subgoals):
 1. \<lbrakk>m = 0; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U\<rbrakk> \<Longrightarrow> insert (pubAK a) (analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2))) = insert (pubAK a) (H \<union> analz (insert (Pri_AgrK a) (A \<union> spies evsC2)))
 2. \<lbrakk>0 < m; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U\<rbrakk> \<Longrightarrow> insert (pubAK a) (analz (H \<union> A \<union> spies evsC2)) = insert (pubAK a) (H \<union> analz (A \<union> spies evsC2))
[PROOF STEP]
hence "insert (Pri_AgrK a) H \<subseteq> range Key \<union> range Pri_AgrK - U"
[PROOF STATE]
proof (prove)
using this:
H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U

goal (1 subgoal):
 1. insert (Pri_AgrK a) H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
using B
[PROOF STATE]
proof (prove)
using this:
H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U
Pri_AgrK a \<notin> U

goal (1 subgoal):
 1. insert (Pri_AgrK a) H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
insert (Pri_AgrK a) H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (2 subgoals):
 1. \<lbrakk>m = 0; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U\<rbrakk> \<Longrightarrow> insert (pubAK a) (analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2))) = insert (pubAK a) (H \<union> analz (insert (Pri_AgrK a) (A \<union> spies evsC2)))
 2. \<lbrakk>0 < m; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U\<rbrakk> \<Longrightarrow> insert (pubAK a) (analz (H \<union> A \<union> spies evsC2)) = insert (pubAK a) (H \<union> analz (A \<union> spies evsC2))
[PROOF STEP]
with A
[PROOF STATE]
proof (chain)
picking this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsC2) = ?H \<union> analz (A \<union> spies evsC2)
insert (Pri_AgrK a) H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
have "analz (insert (Pri_AgrK a) H \<union> A \<union> spies evsC2) =
      insert (Pri_AgrK a) H \<union> analz (A \<union> spies evsC2)"
[PROOF STATE]
proof (prove)
using this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsC2) = ?H \<union> analz (A \<union> spies evsC2)
insert (Pri_AgrK a) H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. analz (insert (Pri_AgrK a) H \<union> A \<union> spies evsC2) = insert (Pri_AgrK a) H \<union> analz (A \<union> spies evsC2)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
analz (insert (Pri_AgrK a) H \<union> A \<union> spies evsC2) = insert (Pri_AgrK a) H \<union> analz (A \<union> spies evsC2)

goal (2 subgoals):
 1. \<lbrakk>m = 0; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U\<rbrakk> \<Longrightarrow> insert (pubAK a) (analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2))) = insert (pubAK a) (H \<union> analz (insert (Pri_AgrK a) (A \<union> spies evsC2)))
 2. \<lbrakk>0 < m; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U\<rbrakk> \<Longrightarrow> insert (pubAK a) (analz (H \<union> A \<union> spies evsC2)) = insert (pubAK a) (H \<union> analz (A \<union> spies evsC2))
[PROOF STEP]
hence "analz (insert (Pri_AgrK a) ?B) = H \<union> insert (Pri_AgrK a) (analz ?C)"
[PROOF STATE]
proof (prove)
using this:
analz (insert (Pri_AgrK a) H \<union> A \<union> spies evsC2) = insert (Pri_AgrK a) H \<union> analz (A \<union> spies evsC2)

goal (1 subgoal):
 1. analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2)) = H \<union> insert (Pri_AgrK a) (analz (A \<union> spies evsC2))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2)) = H \<union> insert (Pri_AgrK a) (analz (A \<union> spies evsC2))

goal (2 subgoals):
 1. \<lbrakk>m = 0; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U\<rbrakk> \<Longrightarrow> insert (pubAK a) (analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2))) = insert (pubAK a) (H \<union> analz (insert (Pri_AgrK a) (A \<union> spies evsC2)))
 2. \<lbrakk>0 < m; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U\<rbrakk> \<Longrightarrow> insert (pubAK a) (analz (H \<union> A \<union> spies evsC2)) = insert (pubAK a) (H \<union> analz (A \<union> spies evsC2))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2)) = H \<union> insert (Pri_AgrK a) (analz (A \<union> spies evsC2))

goal (2 subgoals):
 1. \<lbrakk>m = 0; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U\<rbrakk> \<Longrightarrow> insert (pubAK a) (analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2))) = insert (pubAK a) (H \<union> analz (insert (Pri_AgrK a) (A \<union> spies evsC2)))
 2. \<lbrakk>0 < m; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U\<rbrakk> \<Longrightarrow> insert (pubAK a) (analz (H \<union> A \<union> spies evsC2)) = insert (pubAK a) (H \<union> analz (A \<union> spies evsC2))
[PROOF STEP]
have "{Pri_AgrK a} \<subseteq> range Key \<union> range Pri_AgrK - U"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {Pri_AgrK a} \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
using B
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK a \<notin> U

goal (1 subgoal):
 1. {Pri_AgrK a} \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
{Pri_AgrK a} \<subseteq> range Key \<union> range Pri_AgrK - U

goal (2 subgoals):
 1. \<lbrakk>m = 0; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U\<rbrakk> \<Longrightarrow> insert (pubAK a) (analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2))) = insert (pubAK a) (H \<union> analz (insert (Pri_AgrK a) (A \<union> spies evsC2)))
 2. \<lbrakk>0 < m; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U\<rbrakk> \<Longrightarrow> insert (pubAK a) (analz (H \<union> A \<union> spies evsC2)) = insert (pubAK a) (H \<union> analz (A \<union> spies evsC2))
[PROOF STEP]
with A
[PROOF STATE]
proof (chain)
picking this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsC2) = ?H \<union> analz (A \<union> spies evsC2)
{Pri_AgrK a} \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
have "analz ({Pri_AgrK a} \<union> A \<union> spies evsC2) =
      {Pri_AgrK a} \<union> analz (A \<union> spies evsC2)"
[PROOF STATE]
proof (prove)
using this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsC2) = ?H \<union> analz (A \<union> spies evsC2)
{Pri_AgrK a} \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. analz ({Pri_AgrK a} \<union> A \<union> spies evsC2) = {Pri_AgrK a} \<union> analz (A \<union> spies evsC2)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
analz ({Pri_AgrK a} \<union> A \<union> spies evsC2) = {Pri_AgrK a} \<union> analz (A \<union> spies evsC2)

goal (2 subgoals):
 1. \<lbrakk>m = 0; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U\<rbrakk> \<Longrightarrow> insert (pubAK a) (analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2))) = insert (pubAK a) (H \<union> analz (insert (Pri_AgrK a) (A \<union> spies evsC2)))
 2. \<lbrakk>0 < m; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U\<rbrakk> \<Longrightarrow> insert (pubAK a) (analz (H \<union> A \<union> spies evsC2)) = insert (pubAK a) (H \<union> analz (A \<union> spies evsC2))
[PROOF STEP]
hence "insert (Pri_AgrK a) (analz ?C) = analz (insert (Pri_AgrK a) ?C)"
[PROOF STATE]
proof (prove)
using this:
analz ({Pri_AgrK a} \<union> A \<union> spies evsC2) = {Pri_AgrK a} \<union> analz (A \<union> spies evsC2)

goal (1 subgoal):
 1. insert (Pri_AgrK a) (analz (A \<union> spies evsC2)) = analz (insert (Pri_AgrK a) (A \<union> spies evsC2))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
insert (Pri_AgrK a) (analz (A \<union> spies evsC2)) = analz (insert (Pri_AgrK a) (A \<union> spies evsC2))

goal (2 subgoals):
 1. \<lbrakk>m = 0; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U\<rbrakk> \<Longrightarrow> insert (pubAK a) (analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2))) = insert (pubAK a) (H \<union> analz (insert (Pri_AgrK a) (A \<union> spies evsC2)))
 2. \<lbrakk>0 < m; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U\<rbrakk> \<Longrightarrow> insert (pubAK a) (analz (H \<union> A \<union> spies evsC2)) = insert (pubAK a) (H \<union> analz (A \<union> spies evsC2))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2)) = H \<union> insert (Pri_AgrK a) (analz (A \<union> spies evsC2))
insert (Pri_AgrK a) (analz (A \<union> spies evsC2)) = analz (insert (Pri_AgrK a) (A \<union> spies evsC2))
[PROOF STEP]
have "analz (insert (Pri_AgrK a) ?B) =
      H \<union> analz (insert (Pri_AgrK a) ?C)"
[PROOF STATE]
proof (prove)
using this:
analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2)) = H \<union> insert (Pri_AgrK a) (analz (A \<union> spies evsC2))
insert (Pri_AgrK a) (analz (A \<union> spies evsC2)) = analz (insert (Pri_AgrK a) (A \<union> spies evsC2))

goal (1 subgoal):
 1. analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2)) = H \<union> analz (insert (Pri_AgrK a) (A \<union> spies evsC2))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2)) = H \<union> analz (insert (Pri_AgrK a) (A \<union> spies evsC2))

goal (2 subgoals):
 1. \<lbrakk>m = 0; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U\<rbrakk> \<Longrightarrow> insert (pubAK a) (analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2))) = insert (pubAK a) (H \<union> analz (insert (Pri_AgrK a) (A \<union> spies evsC2)))
 2. \<lbrakk>0 < m; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U\<rbrakk> \<Longrightarrow> insert (pubAK a) (analz (H \<union> A \<union> spies evsC2)) = insert (pubAK a) (H \<union> analz (A \<union> spies evsC2))
[PROOF STEP]
thus ?T
[PROOF STATE]
proof (prove)
using this:
analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2)) = H \<union> analz (insert (Pri_AgrK a) (A \<union> spies evsC2))

goal (1 subgoal):
 1. insert (pubAK a) (analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2))) = insert (pubAK a) (H \<union> analz (insert (Pri_AgrK a) (A \<union> spies evsC2)))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
insert (pubAK a) (analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2))) = insert (pubAK a) (H \<union> analz (insert (Pri_AgrK a) (A \<union> spies evsC2)))

goal (1 subgoal):
 1. \<lbrakk>0 < m; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U\<rbrakk> \<Longrightarrow> insert (pubAK a) (analz (H \<union> A \<union> spies evsC2)) = insert (pubAK a) (H \<union> analz (A \<union> spies evsC2))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>0 < m; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U\<rbrakk> \<Longrightarrow> insert (pubAK a) (analz (H \<union> A \<union> spies evsC2)) = insert (pubAK a) (H \<union> analz (A \<union> spies evsC2))
[PROOF STEP]
assume "H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U"
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U

goal (1 subgoal):
 1. \<lbrakk>0 < m; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U\<rbrakk> \<Longrightarrow> insert (pubAK a) (analz (H \<union> A \<union> spies evsC2)) = insert (pubAK a) (H \<union> analz (A \<union> spies evsC2))
[PROOF STEP]
hence "H \<subseteq> range Key \<union> range Pri_AgrK - U"
[PROOF STATE]
proof (prove)
using this:
H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. \<lbrakk>0 < m; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U\<rbrakk> \<Longrightarrow> insert (pubAK a) (analz (H \<union> A \<union> spies evsC2)) = insert (pubAK a) (H \<union> analz (A \<union> spies evsC2))
[PROOF STEP]
with A
[PROOF STATE]
proof (chain)
picking this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsC2) = ?H \<union> analz (A \<union> spies evsC2)
H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
have "analz ?B = H \<union> analz ?C"
[PROOF STATE]
proof (prove)
using this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsC2) = ?H \<union> analz (A \<union> spies evsC2)
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. analz (H \<union> A \<union> spies evsC2) = H \<union> analz (A \<union> spies evsC2)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
analz (H \<union> A \<union> spies evsC2) = H \<union> analz (A \<union> spies evsC2)

goal (1 subgoal):
 1. \<lbrakk>0 < m; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U\<rbrakk> \<Longrightarrow> insert (pubAK a) (analz (H \<union> A \<union> spies evsC2)) = insert (pubAK a) (H \<union> analz (A \<union> spies evsC2))
[PROOF STEP]
thus ?T'
[PROOF STATE]
proof (prove)
using this:
analz (H \<union> A \<union> spies evsC2) = H \<union> analz (A \<union> spies evsC2)

goal (1 subgoal):
 1. insert (pubAK a) (analz (H \<union> A \<union> spies evsC2)) = insert (pubAK a) (H \<union> analz (A \<union> spies evsC2))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
insert (pubAK a) (analz (H \<union> A \<union> spies evsC2)) = insert (pubAK a) (H \<union> analz (A \<union> spies evsC2))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
(m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U \<longrightarrow> insert (pubAK a) (analz (insert (Pri_AgrK a) (H \<union> A \<union> spies evsC2))) = insert (pubAK a) (H \<union> analz (insert (Pri_AgrK a) (A \<union> spies evsC2)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK a) U \<longrightarrow> insert (pubAK a) (analz (H \<union> A \<union> spies evsC2)) = insert (pubAK a) (H \<union> analz (A \<union> spies evsC2)))

goal (12 subgoals):
 1. \<And>evsR2 S A U b n run X a H. \<lbrakk>(evsR2, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR2) = H \<union> analz (A \<union> spies evsR2); Pri_AgrK b \<notin> U; \<exists>y. NonceS (S (Card n, n, run)) = Some y; IntMapK (S (Card n, n, run)) = None; Says n run 2 X (Card n) (pubAK a) \<in> set evsR2\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK b) U \<longrightarrow> insert (pubAK b) (analz (H \<union> A \<union> spies evsR2)) = insert (pubAK b) (H \<union> analz (A \<union> spies evsR2))
 2. \<And>evsC3 S A U c m n run s a X b H. \<lbrakk>(evsC3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC3) = H \<union> analz (A \<union> spies evsC3); Pri_AgrK c \<notin> U; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = None; Says n run 2 X (User m) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3)))
 3. \<And>evsR3 S A U d n run s b a X c s' H. \<lbrakk>(evsR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR3) = H \<union> analz (A \<union> spies evsR3); Pri_AgrK d \<notin> U; NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = None; Says n run 3 X (Card n) (pubAK (c * (s' + a * b))) \<in> set evsR3; Key (sesK (c * d * (s' + a * b))) \<notin> U; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))) \<and> ((s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3)) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3)))
 4. \<And>evsFR3 S A U m n run s a b c d H. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR3) = H \<union> analz (A \<union> spies evsFR3); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; Pri_AgrK s \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK d \<in> analz (A \<union> spies evsFR3); Key (sesK (c * d * (s + a * b))) \<notin> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
 5. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 6. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 7. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 8. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 9. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 10. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 11. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 12. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (12 subgoals):
 1. \<And>evsR2 S A U b n run X a H. \<lbrakk>(evsR2, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR2) = H \<union> analz (A \<union> spies evsR2); Pri_AgrK b \<notin> U; \<exists>y. NonceS (S (Card n, n, run)) = Some y; IntMapK (S (Card n, n, run)) = None; Says n run 2 X (Card n) (pubAK a) \<in> set evsR2\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK b) U \<longrightarrow> insert (pubAK b) (analz (H \<union> A \<union> spies evsR2)) = insert (pubAK b) (H \<union> analz (A \<union> spies evsR2))
 2. \<And>evsC3 S A U c m n run s a X b H. \<lbrakk>(evsC3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC3) = H \<union> analz (A \<union> spies evsC3); Pri_AgrK c \<notin> U; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = None; Says n run 2 X (User m) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3)))
 3. \<And>evsR3 S A U d n run s b a X c s' H. \<lbrakk>(evsR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR3) = H \<union> analz (A \<union> spies evsR3); Pri_AgrK d \<notin> U; NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = None; Says n run 3 X (Card n) (pubAK (c * (s' + a * b))) \<in> set evsR3; Key (sesK (c * d * (s' + a * b))) \<notin> U; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))) \<and> ((s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3)) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3)))
 4. \<And>evsFR3 S A U m n run s a b c d H. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR3) = H \<union> analz (A \<union> spies evsFR3); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; Pri_AgrK s \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK d \<in> analz (A \<union> spies evsFR3); Key (sesK (c * d * (s + a * b))) \<notin> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
 5. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 6. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 7. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 8. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 9. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 10. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 11. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 12. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
fix evsR2 S A U b H
[PROOF STATE]
proof (state)
goal (12 subgoals):
 1. \<And>evsR2 S A U b n run X a H. \<lbrakk>(evsR2, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR2) = H \<union> analz (A \<union> spies evsR2); Pri_AgrK b \<notin> U; \<exists>y. NonceS (S (Card n, n, run)) = Some y; IntMapK (S (Card n, n, run)) = None; Says n run 2 X (Card n) (pubAK a) \<in> set evsR2\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK b) U \<longrightarrow> insert (pubAK b) (analz (H \<union> A \<union> spies evsR2)) = insert (pubAK b) (H \<union> analz (A \<union> spies evsR2))
 2. \<And>evsC3 S A U c m n run s a X b H. \<lbrakk>(evsC3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC3) = H \<union> analz (A \<union> spies evsC3); Pri_AgrK c \<notin> U; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = None; Says n run 2 X (User m) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3)))
 3. \<And>evsR3 S A U d n run s b a X c s' H. \<lbrakk>(evsR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR3) = H \<union> analz (A \<union> spies evsR3); Pri_AgrK d \<notin> U; NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = None; Says n run 3 X (Card n) (pubAK (c * (s' + a * b))) \<in> set evsR3; Key (sesK (c * d * (s' + a * b))) \<notin> U; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))) \<and> ((s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3)) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3)))
 4. \<And>evsFR3 S A U m n run s a b c d H. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR3) = H \<union> analz (A \<union> spies evsFR3); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; Pri_AgrK s \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK d \<in> analz (A \<union> spies evsFR3); Key (sesK (c * d * (s + a * b))) \<notin> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
 5. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 6. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 7. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 8. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 9. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 10. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 11. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 12. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
assume A: "\<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow>
    analz (H \<union> A \<union> spies evsR2) = H \<union> analz (A \<union> spies evsR2)"
[PROOF STATE]
proof (state)
this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsR2) = ?H \<union> analz (A \<union> spies evsR2)

goal (12 subgoals):
 1. \<And>evsR2 S A U b n run X a H. \<lbrakk>(evsR2, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR2) = H \<union> analz (A \<union> spies evsR2); Pri_AgrK b \<notin> U; \<exists>y. NonceS (S (Card n, n, run)) = Some y; IntMapK (S (Card n, n, run)) = None; Says n run 2 X (Card n) (pubAK a) \<in> set evsR2\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK b) U \<longrightarrow> insert (pubAK b) (analz (H \<union> A \<union> spies evsR2)) = insert (pubAK b) (H \<union> analz (A \<union> spies evsR2))
 2. \<And>evsC3 S A U c m n run s a X b H. \<lbrakk>(evsC3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC3) = H \<union> analz (A \<union> spies evsC3); Pri_AgrK c \<notin> U; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = None; Says n run 2 X (User m) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3)))
 3. \<And>evsR3 S A U d n run s b a X c s' H. \<lbrakk>(evsR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR3) = H \<union> analz (A \<union> spies evsR3); Pri_AgrK d \<notin> U; NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = None; Says n run 3 X (Card n) (pubAK (c * (s' + a * b))) \<in> set evsR3; Key (sesK (c * d * (s' + a * b))) \<notin> U; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))) \<and> ((s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3)) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3)))
 4. \<And>evsFR3 S A U m n run s a b c d H. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR3) = H \<union> analz (A \<union> spies evsFR3); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; Pri_AgrK s \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK d \<in> analz (A \<union> spies evsFR3); Key (sesK (c * d * (s + a * b))) \<notin> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
 5. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 6. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 7. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 8. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 9. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 10. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 11. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 12. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
let
    ?B = "H \<union> A \<union> spies evsR2" and
    ?C = "A \<union> spies evsR2"
[PROOF STATE]
proof (state)
goal (12 subgoals):
 1. \<And>evsR2 S A U b n run X a H. \<lbrakk>(evsR2, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR2) = H \<union> analz (A \<union> spies evsR2); Pri_AgrK b \<notin> U; \<exists>y. NonceS (S (Card n, n, run)) = Some y; IntMapK (S (Card n, n, run)) = None; Says n run 2 X (Card n) (pubAK a) \<in> set evsR2\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK b) U \<longrightarrow> insert (pubAK b) (analz (H \<union> A \<union> spies evsR2)) = insert (pubAK b) (H \<union> analz (A \<union> spies evsR2))
 2. \<And>evsC3 S A U c m n run s a X b H. \<lbrakk>(evsC3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC3) = H \<union> analz (A \<union> spies evsC3); Pri_AgrK c \<notin> U; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = None; Says n run 2 X (User m) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3)))
 3. \<And>evsR3 S A U d n run s b a X c s' H. \<lbrakk>(evsR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR3) = H \<union> analz (A \<union> spies evsR3); Pri_AgrK d \<notin> U; NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = None; Says n run 3 X (Card n) (pubAK (c * (s' + a * b))) \<in> set evsR3; Key (sesK (c * d * (s' + a * b))) \<notin> U; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))) \<and> ((s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3)) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3)))
 4. \<And>evsFR3 S A U m n run s a b c d H. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR3) = H \<union> analz (A \<union> spies evsFR3); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; Pri_AgrK s \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK d \<in> analz (A \<union> spies evsFR3); Key (sesK (c * d * (s + a * b))) \<notin> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
 5. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 6. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 7. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 8. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 9. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 10. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 11. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 12. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
show "H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK b) U \<longrightarrow>
    insert (pubAK b) (analz ?B) = insert (pubAK b) (H \<union> analz ?C)"
    (is "_ \<longrightarrow> ?T")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK b) U \<longrightarrow> insert (pubAK b) (analz (H \<union> A \<union> spies evsR2)) = insert (pubAK b) (H \<union> analz (A \<union> spies evsR2))
[PROOF STEP]
proof
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK b) U \<Longrightarrow> insert (pubAK b) (analz (H \<union> A \<union> spies evsR2)) = insert (pubAK b) (H \<union> analz (A \<union> spies evsR2))
[PROOF STEP]
assume "H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK b) U"
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK b) U

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK b) U \<Longrightarrow> insert (pubAK b) (analz (H \<union> A \<union> spies evsR2)) = insert (pubAK b) (H \<union> analz (A \<union> spies evsR2))
[PROOF STEP]
hence "H \<subseteq> range Key \<union> range Pri_AgrK - U"
[PROOF STATE]
proof (prove)
using this:
H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK b) U

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK b) U \<Longrightarrow> insert (pubAK b) (analz (H \<union> A \<union> spies evsR2)) = insert (pubAK b) (H \<union> analz (A \<union> spies evsR2))
[PROOF STEP]
with A
[PROOF STATE]
proof (chain)
picking this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsR2) = ?H \<union> analz (A \<union> spies evsR2)
H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
have "analz ?B = H \<union> analz ?C"
[PROOF STATE]
proof (prove)
using this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsR2) = ?H \<union> analz (A \<union> spies evsR2)
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. analz (H \<union> A \<union> spies evsR2) = H \<union> analz (A \<union> spies evsR2)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
analz (H \<union> A \<union> spies evsR2) = H \<union> analz (A \<union> spies evsR2)

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK b) U \<Longrightarrow> insert (pubAK b) (analz (H \<union> A \<union> spies evsR2)) = insert (pubAK b) (H \<union> analz (A \<union> spies evsR2))
[PROOF STEP]
thus ?T
[PROOF STATE]
proof (prove)
using this:
analz (H \<union> A \<union> spies evsR2) = H \<union> analz (A \<union> spies evsR2)

goal (1 subgoal):
 1. insert (pubAK b) (analz (H \<union> A \<union> spies evsR2)) = insert (pubAK b) (H \<union> analz (A \<union> spies evsR2))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
insert (pubAK b) (analz (H \<union> A \<union> spies evsR2)) = insert (pubAK b) (H \<union> analz (A \<union> spies evsR2))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK b) U \<longrightarrow> insert (pubAK b) (analz (H \<union> A \<union> spies evsR2)) = insert (pubAK b) (H \<union> analz (A \<union> spies evsR2))

goal (11 subgoals):
 1. \<And>evsC3 S A U c m n run s a X b H. \<lbrakk>(evsC3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC3) = H \<union> analz (A \<union> spies evsC3); Pri_AgrK c \<notin> U; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = None; Says n run 2 X (User m) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3)))
 2. \<And>evsR3 S A U d n run s b a X c s' H. \<lbrakk>(evsR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR3) = H \<union> analz (A \<union> spies evsR3); Pri_AgrK d \<notin> U; NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = None; Says n run 3 X (Card n) (pubAK (c * (s' + a * b))) \<in> set evsR3; Key (sesK (c * d * (s' + a * b))) \<notin> U; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))) \<and> ((s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3)) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3)))
 3. \<And>evsFR3 S A U m n run s a b c d H. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR3) = H \<union> analz (A \<union> spies evsFR3); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; Pri_AgrK s \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK d \<in> analz (A \<union> spies evsFR3); Key (sesK (c * d * (s + a * b))) \<notin> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
 4. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 5. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 6. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 7. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 8. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 9. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 10. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 11. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (11 subgoals):
 1. \<And>evsC3 S A U c m n run s a X b H. \<lbrakk>(evsC3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC3) = H \<union> analz (A \<union> spies evsC3); Pri_AgrK c \<notin> U; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = None; Says n run 2 X (User m) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3)))
 2. \<And>evsR3 S A U d n run s b a X c s' H. \<lbrakk>(evsR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR3) = H \<union> analz (A \<union> spies evsR3); Pri_AgrK d \<notin> U; NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = None; Says n run 3 X (Card n) (pubAK (c * (s' + a * b))) \<in> set evsR3; Key (sesK (c * d * (s' + a * b))) \<notin> U; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))) \<and> ((s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3)) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3)))
 3. \<And>evsFR3 S A U m n run s a b c d H. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR3) = H \<union> analz (A \<union> spies evsFR3); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; Pri_AgrK s \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK d \<in> analz (A \<union> spies evsFR3); Key (sesK (c * d * (s + a * b))) \<notin> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
 4. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 5. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 6. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 7. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 8. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 9. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 10. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 11. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
fix evsC3 S A U s a b c H and m :: nat
[PROOF STATE]
proof (state)
goal (11 subgoals):
 1. \<And>evsC3 S A U c m n run s a X b H. \<lbrakk>(evsC3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC3) = H \<union> analz (A \<union> spies evsC3); Pri_AgrK c \<notin> U; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = None; Says n run 2 X (User m) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3)))
 2. \<And>evsR3 S A U d n run s b a X c s' H. \<lbrakk>(evsR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR3) = H \<union> analz (A \<union> spies evsR3); Pri_AgrK d \<notin> U; NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = None; Says n run 3 X (Card n) (pubAK (c * (s' + a * b))) \<in> set evsR3; Key (sesK (c * d * (s' + a * b))) \<notin> U; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))) \<and> ((s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3)) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3)))
 3. \<And>evsFR3 S A U m n run s a b c d H. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR3) = H \<union> analz (A \<union> spies evsFR3); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; Pri_AgrK s \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK d \<in> analz (A \<union> spies evsFR3); Key (sesK (c * d * (s + a * b))) \<notin> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
 4. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 5. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 6. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 7. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 8. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 9. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 10. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 11. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
assume
    A: "\<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow>
      analz (H \<union> A \<union> spies evsC3) = H \<union> analz (A \<union> spies evsC3)" and
    B: "Pri_AgrK c \<notin> U"
[PROOF STATE]
proof (state)
this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsC3) = ?H \<union> analz (A \<union> spies evsC3)
Pri_AgrK c \<notin> U

goal (11 subgoals):
 1. \<And>evsC3 S A U c m n run s a X b H. \<lbrakk>(evsC3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC3) = H \<union> analz (A \<union> spies evsC3); Pri_AgrK c \<notin> U; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = None; Says n run 2 X (User m) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3)))
 2. \<And>evsR3 S A U d n run s b a X c s' H. \<lbrakk>(evsR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR3) = H \<union> analz (A \<union> spies evsR3); Pri_AgrK d \<notin> U; NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = None; Says n run 3 X (Card n) (pubAK (c * (s' + a * b))) \<in> set evsR3; Key (sesK (c * d * (s' + a * b))) \<notin> U; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))) \<and> ((s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3)) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3)))
 3. \<And>evsFR3 S A U m n run s a b c d H. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR3) = H \<union> analz (A \<union> spies evsFR3); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; Pri_AgrK s \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK d \<in> analz (A \<union> spies evsFR3); Key (sesK (c * d * (s + a * b))) \<notin> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
 4. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 5. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 6. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 7. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 8. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 9. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 10. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 11. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
let
    ?B = "H \<union> A \<union> spies evsC3" and
    ?C = "A \<union> spies evsC3"
[PROOF STATE]
proof (state)
goal (11 subgoals):
 1. \<And>evsC3 S A U c m n run s a X b H. \<lbrakk>(evsC3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC3) = H \<union> analz (A \<union> spies evsC3); Pri_AgrK c \<notin> U; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = None; Says n run 2 X (User m) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3)))
 2. \<And>evsR3 S A U d n run s b a X c s' H. \<lbrakk>(evsR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR3) = H \<union> analz (A \<union> spies evsR3); Pri_AgrK d \<notin> U; NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = None; Says n run 3 X (Card n) (pubAK (c * (s' + a * b))) \<in> set evsR3; Key (sesK (c * d * (s' + a * b))) \<notin> U; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))) \<and> ((s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3)) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3)))
 3. \<And>evsFR3 S A U m n run s a b c d H. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR3) = H \<union> analz (A \<union> spies evsFR3); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; Pri_AgrK s \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK d \<in> analz (A \<union> spies evsFR3); Key (sesK (c * d * (s + a * b))) \<notin> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
 4. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 5. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 6. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 7. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 8. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 9. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 10. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 11. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
show
   "(m = 0 \<longrightarrow>
       H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow>
     insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) ?B)) =
     insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) ?C))) \<and>
    (0 < m \<longrightarrow>
       H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow>
     insert (pubAK (c * (s + a * b))) (analz ?B) =
     insert (pubAK (c * (s + a * b))) (H \<union> analz ?C))"
    (is "(_ \<longrightarrow> _ \<longrightarrow> ?T) \<and> (_ \<longrightarrow> _ \<longrightarrow> ?T')")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3)))
[PROOF STEP]
proof (rule conjI, (rule_tac [!] impI)+)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<lbrakk>m = 0; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U\<rbrakk> \<Longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))
 2. \<lbrakk>0 < m; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U\<rbrakk> \<Longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3))
[PROOF STEP]
assume "H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U"
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U

goal (2 subgoals):
 1. \<lbrakk>m = 0; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U\<rbrakk> \<Longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))
 2. \<lbrakk>0 < m; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U\<rbrakk> \<Longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3))
[PROOF STEP]
hence "insert (Pri_AgrK c) H \<subseteq> range Key \<union> range Pri_AgrK - U"
[PROOF STATE]
proof (prove)
using this:
H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U

goal (1 subgoal):
 1. insert (Pri_AgrK c) H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
using B
[PROOF STATE]
proof (prove)
using this:
H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U
Pri_AgrK c \<notin> U

goal (1 subgoal):
 1. insert (Pri_AgrK c) H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
insert (Pri_AgrK c) H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (2 subgoals):
 1. \<lbrakk>m = 0; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U\<rbrakk> \<Longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))
 2. \<lbrakk>0 < m; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U\<rbrakk> \<Longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3))
[PROOF STEP]
with A
[PROOF STATE]
proof (chain)
picking this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsC3) = ?H \<union> analz (A \<union> spies evsC3)
insert (Pri_AgrK c) H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
have "analz (insert (Pri_AgrK c) H \<union> A \<union> spies evsC3) =
      insert (Pri_AgrK c) H \<union> analz (A \<union> spies evsC3)"
[PROOF STATE]
proof (prove)
using this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsC3) = ?H \<union> analz (A \<union> spies evsC3)
insert (Pri_AgrK c) H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. analz (insert (Pri_AgrK c) H \<union> A \<union> spies evsC3) = insert (Pri_AgrK c) H \<union> analz (A \<union> spies evsC3)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
analz (insert (Pri_AgrK c) H \<union> A \<union> spies evsC3) = insert (Pri_AgrK c) H \<union> analz (A \<union> spies evsC3)

goal (2 subgoals):
 1. \<lbrakk>m = 0; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U\<rbrakk> \<Longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))
 2. \<lbrakk>0 < m; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U\<rbrakk> \<Longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3))
[PROOF STEP]
hence "analz (insert (Pri_AgrK c) ?B) = H \<union> insert (Pri_AgrK c) (analz ?C)"
[PROOF STATE]
proof (prove)
using this:
analz (insert (Pri_AgrK c) H \<union> A \<union> spies evsC3) = insert (Pri_AgrK c) H \<union> analz (A \<union> spies evsC3)

goal (1 subgoal):
 1. analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3)) = H \<union> insert (Pri_AgrK c) (analz (A \<union> spies evsC3))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3)) = H \<union> insert (Pri_AgrK c) (analz (A \<union> spies evsC3))

goal (2 subgoals):
 1. \<lbrakk>m = 0; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U\<rbrakk> \<Longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))
 2. \<lbrakk>0 < m; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U\<rbrakk> \<Longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3)) = H \<union> insert (Pri_AgrK c) (analz (A \<union> spies evsC3))

goal (2 subgoals):
 1. \<lbrakk>m = 0; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U\<rbrakk> \<Longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))
 2. \<lbrakk>0 < m; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U\<rbrakk> \<Longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3))
[PROOF STEP]
have "{Pri_AgrK c} \<subseteq> range Key \<union> range Pri_AgrK - U"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {Pri_AgrK c} \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
using B
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK c \<notin> U

goal (1 subgoal):
 1. {Pri_AgrK c} \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
{Pri_AgrK c} \<subseteq> range Key \<union> range Pri_AgrK - U

goal (2 subgoals):
 1. \<lbrakk>m = 0; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U\<rbrakk> \<Longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))
 2. \<lbrakk>0 < m; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U\<rbrakk> \<Longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3))
[PROOF STEP]
with A
[PROOF STATE]
proof (chain)
picking this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsC3) = ?H \<union> analz (A \<union> spies evsC3)
{Pri_AgrK c} \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
have "analz ({Pri_AgrK c} \<union> A \<union> spies evsC3) =
      {Pri_AgrK c} \<union> analz (A \<union> spies evsC3)"
[PROOF STATE]
proof (prove)
using this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsC3) = ?H \<union> analz (A \<union> spies evsC3)
{Pri_AgrK c} \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. analz ({Pri_AgrK c} \<union> A \<union> spies evsC3) = {Pri_AgrK c} \<union> analz (A \<union> spies evsC3)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
analz ({Pri_AgrK c} \<union> A \<union> spies evsC3) = {Pri_AgrK c} \<union> analz (A \<union> spies evsC3)

goal (2 subgoals):
 1. \<lbrakk>m = 0; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U\<rbrakk> \<Longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))
 2. \<lbrakk>0 < m; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U\<rbrakk> \<Longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3))
[PROOF STEP]
hence "insert (Pri_AgrK c) (analz ?C) = analz (insert (Pri_AgrK c) ?C)"
[PROOF STATE]
proof (prove)
using this:
analz ({Pri_AgrK c} \<union> A \<union> spies evsC3) = {Pri_AgrK c} \<union> analz (A \<union> spies evsC3)

goal (1 subgoal):
 1. insert (Pri_AgrK c) (analz (A \<union> spies evsC3)) = analz (insert (Pri_AgrK c) (A \<union> spies evsC3))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
insert (Pri_AgrK c) (analz (A \<union> spies evsC3)) = analz (insert (Pri_AgrK c) (A \<union> spies evsC3))

goal (2 subgoals):
 1. \<lbrakk>m = 0; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U\<rbrakk> \<Longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))
 2. \<lbrakk>0 < m; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U\<rbrakk> \<Longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3)) = H \<union> insert (Pri_AgrK c) (analz (A \<union> spies evsC3))
insert (Pri_AgrK c) (analz (A \<union> spies evsC3)) = analz (insert (Pri_AgrK c) (A \<union> spies evsC3))
[PROOF STEP]
have "analz (insert (Pri_AgrK c) ?B) =
      H \<union> analz (insert (Pri_AgrK c) ?C)"
[PROOF STATE]
proof (prove)
using this:
analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3)) = H \<union> insert (Pri_AgrK c) (analz (A \<union> spies evsC3))
insert (Pri_AgrK c) (analz (A \<union> spies evsC3)) = analz (insert (Pri_AgrK c) (A \<union> spies evsC3))

goal (1 subgoal):
 1. analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3)) = H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3)) = H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3))

goal (2 subgoals):
 1. \<lbrakk>m = 0; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U\<rbrakk> \<Longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))
 2. \<lbrakk>0 < m; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U\<rbrakk> \<Longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3))
[PROOF STEP]
thus ?T
[PROOF STATE]
proof (prove)
using this:
analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3)) = H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3))

goal (1 subgoal):
 1. insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))

goal (1 subgoal):
 1. \<lbrakk>0 < m; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U\<rbrakk> \<Longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>0 < m; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U\<rbrakk> \<Longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3))
[PROOF STEP]
assume "H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U"
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U

goal (1 subgoal):
 1. \<lbrakk>0 < m; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U\<rbrakk> \<Longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3))
[PROOF STEP]
hence "H \<subseteq> range Key \<union> range Pri_AgrK - U"
[PROOF STATE]
proof (prove)
using this:
H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. \<lbrakk>0 < m; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U\<rbrakk> \<Longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3))
[PROOF STEP]
with A
[PROOF STATE]
proof (chain)
picking this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsC3) = ?H \<union> analz (A \<union> spies evsC3)
H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
have "analz ?B = H \<union> analz ?C"
[PROOF STATE]
proof (prove)
using this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsC3) = ?H \<union> analz (A \<union> spies evsC3)
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. analz (H \<union> A \<union> spies evsC3) = H \<union> analz (A \<union> spies evsC3)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
analz (H \<union> A \<union> spies evsC3) = H \<union> analz (A \<union> spies evsC3)

goal (1 subgoal):
 1. \<lbrakk>0 < m; H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U\<rbrakk> \<Longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3))
[PROOF STEP]
thus ?T'
[PROOF STATE]
proof (prove)
using this:
analz (H \<union> A \<union> spies evsC3) = H \<union> analz (A \<union> spies evsC3)

goal (1 subgoal):
 1. insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
(m = 0 \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (insert (Pri_AgrK c) (H \<union> A \<union> spies evsC3))) = insert (pubAK (c * (s + a * b))) (H \<union> analz (insert (Pri_AgrK c) (A \<union> spies evsC3)))) \<and> (0 < m \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK c) U \<longrightarrow> insert (pubAK (c * (s + a * b))) (analz (H \<union> A \<union> spies evsC3)) = insert (pubAK (c * (s + a * b))) (H \<union> analz (A \<union> spies evsC3)))

goal (10 subgoals):
 1. \<And>evsR3 S A U d n run s b a X c s' H. \<lbrakk>(evsR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR3) = H \<union> analz (A \<union> spies evsR3); Pri_AgrK d \<notin> U; NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = None; Says n run 3 X (Card n) (pubAK (c * (s' + a * b))) \<in> set evsR3; Key (sesK (c * d * (s' + a * b))) \<notin> U; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))) \<and> ((s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3)) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3)))
 2. \<And>evsFR3 S A U m n run s a b c d H. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR3) = H \<union> analz (A \<union> spies evsFR3); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; Pri_AgrK s \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK d \<in> analz (A \<union> spies evsFR3); Key (sesK (c * d * (s + a * b))) \<notin> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
 3. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 4. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 5. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 6. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 7. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 8. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 9. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 10. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (10 subgoals):
 1. \<And>evsR3 S A U d n run s b a X c s' H. \<lbrakk>(evsR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR3) = H \<union> analz (A \<union> spies evsR3); Pri_AgrK d \<notin> U; NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = None; Says n run 3 X (Card n) (pubAK (c * (s' + a * b))) \<in> set evsR3; Key (sesK (c * d * (s' + a * b))) \<notin> U; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))) \<and> ((s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3)) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3)))
 2. \<And>evsFR3 S A U m n run s a b c d H. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR3) = H \<union> analz (A \<union> spies evsFR3); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; Pri_AgrK s \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK d \<in> analz (A \<union> spies evsFR3); Key (sesK (c * d * (s + a * b))) \<notin> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
 3. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 4. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 5. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 6. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 7. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 8. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 9. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 10. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
fix evsR3 S A U n run s s' a b c d X H
[PROOF STATE]
proof (state)
goal (10 subgoals):
 1. \<And>evsR3 S A U d n run s b a X c s' H. \<lbrakk>(evsR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR3) = H \<union> analz (A \<union> spies evsR3); Pri_AgrK d \<notin> U; NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = None; Says n run 3 X (Card n) (pubAK (c * (s' + a * b))) \<in> set evsR3; Key (sesK (c * d * (s' + a * b))) \<notin> U; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))) \<and> ((s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3)) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3)))
 2. \<And>evsFR3 S A U m n run s a b c d H. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR3) = H \<union> analz (A \<union> spies evsFR3); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; Pri_AgrK s \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK d \<in> analz (A \<union> spies evsFR3); Key (sesK (c * d * (s + a * b))) \<notin> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
 3. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 4. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 5. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 6. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 7. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 8. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 9. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 10. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
assume
    A: "\<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow>
      analz (H \<union> A \<union> spies evsR3) = H \<union> analz (A \<union> spies evsR3)" and
    B: "Key (sesK (c * d * (s + a * b))) \<notin> U"
      (is "Key ?K \<notin> _")
[PROOF STATE]
proof (state)
this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsR3) = ?H \<union> analz (A \<union> spies evsR3)
Key (sesK (c * d * (s + a * b))) \<notin> U

goal (10 subgoals):
 1. \<And>evsR3 S A U d n run s b a X c s' H. \<lbrakk>(evsR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR3) = H \<union> analz (A \<union> spies evsR3); Pri_AgrK d \<notin> U; NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = None; Says n run 3 X (Card n) (pubAK (c * (s' + a * b))) \<in> set evsR3; Key (sesK (c * d * (s' + a * b))) \<notin> U; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))) \<and> ((s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3)) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3)))
 2. \<And>evsFR3 S A U m n run s a b c d H. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR3) = H \<union> analz (A \<union> spies evsFR3); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; Pri_AgrK s \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK d \<in> analz (A \<union> spies evsFR3); Key (sesK (c * d * (s + a * b))) \<notin> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
 3. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 4. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 5. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 6. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 7. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 8. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 9. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 10. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
let
    ?B = "H \<union> A \<union> spies evsR3" and
    ?C = "A \<union> spies evsR3" and
    ?K' = "sesK (c * d * (s' + a * b))"
[PROOF STATE]
proof (state)
goal (10 subgoals):
 1. \<And>evsR3 S A U d n run s b a X c s' H. \<lbrakk>(evsR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR3) = H \<union> analz (A \<union> spies evsR3); Pri_AgrK d \<notin> U; NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = None; Says n run 3 X (Card n) (pubAK (c * (s' + a * b))) \<in> set evsR3; Key (sesK (c * d * (s' + a * b))) \<notin> U; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0\<rbrakk> \<Longrightarrow> (s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))) \<and> ((s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3)) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3)))
 2. \<And>evsFR3 S A U m n run s a b c d H. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR3) = H \<union> analz (A \<union> spies evsFR3); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; Pri_AgrK s \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK d \<in> analz (A \<union> spies evsFR3); Key (sesK (c * d * (s + a * b))) \<notin> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
 3. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 4. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 5. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 6. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 7. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 8. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 9. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 10. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
show
   "(s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3) \<longrightarrow>
       H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d)
         (insert (Key ?K) (insert \<lbrace>Key ?K, Agent X, Number n, Number run\<rbrace> U)) \<longrightarrow>
     insert (pubAK (d * (s + a * b))) (analz (insert (Key ?K) ?B)) =
     insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key ?K) ?C))) \<and>
    ((s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3)) \<longrightarrow>
       H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key ?K')
         (insert (Key ?K) (insert \<lbrace>Key ?K, Agent X, Number n, Number run\<rbrace> U))) \<longrightarrow>
     insert (pubAK (d * (s + a * b))) (analz ?B) =
     insert (pubAK (d * (s + a * b))) (H \<union> analz ?C))"
    (is "(_ \<longrightarrow> _ \<longrightarrow> ?T) \<and> (_ \<longrightarrow> _ \<longrightarrow> ?T')")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))) \<and> ((s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3)) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3)))
[PROOF STEP]
proof (rule conjI, (rule_tac [!] impI)+)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<lbrakk>s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3); H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))\<rbrakk> \<Longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))
 2. \<lbrakk>s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3); H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)))\<rbrakk> \<Longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3))
[PROOF STEP]
assume "H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d)
      (insert (Key ?K) (insert \<lbrace>Key ?K, Agent X, Number n, Number run\<rbrace> U))"
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))

goal (2 subgoals):
 1. \<lbrakk>s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3); H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))\<rbrakk> \<Longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))
 2. \<lbrakk>s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3); H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)))\<rbrakk> \<Longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3))
[PROOF STEP]
hence "insert (Key ?K) H \<subseteq> range Key \<union> range Pri_AgrK - U"
[PROOF STATE]
proof (prove)
using this:
H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))

goal (1 subgoal):
 1. insert (Key (sesK (c * d * (s + a * b)))) H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
using B
[PROOF STATE]
proof (prove)
using this:
H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))
Key (sesK (c * d * (s + a * b))) \<notin> U

goal (1 subgoal):
 1. insert (Key (sesK (c * d * (s + a * b)))) H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
insert (Key (sesK (c * d * (s + a * b)))) H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (2 subgoals):
 1. \<lbrakk>s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3); H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))\<rbrakk> \<Longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))
 2. \<lbrakk>s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3); H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)))\<rbrakk> \<Longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3))
[PROOF STEP]
with A
[PROOF STATE]
proof (chain)
picking this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsR3) = ?H \<union> analz (A \<union> spies evsR3)
insert (Key (sesK (c * d * (s + a * b)))) H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
have "analz (insert (Key ?K) H \<union> A \<union> spies evsR3) =
      insert (Key ?K) H \<union> analz (A \<union> spies evsR3)"
[PROOF STATE]
proof (prove)
using this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsR3) = ?H \<union> analz (A \<union> spies evsR3)
insert (Key (sesK (c * d * (s + a * b)))) H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. analz (insert (Key (sesK (c * d * (s + a * b)))) H \<union> A \<union> spies evsR3) = insert (Key (sesK (c * d * (s + a * b)))) H \<union> analz (A \<union> spies evsR3)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
analz (insert (Key (sesK (c * d * (s + a * b)))) H \<union> A \<union> spies evsR3) = insert (Key (sesK (c * d * (s + a * b)))) H \<union> analz (A \<union> spies evsR3)

goal (2 subgoals):
 1. \<lbrakk>s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3); H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))\<rbrakk> \<Longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))
 2. \<lbrakk>s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3); H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)))\<rbrakk> \<Longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3))
[PROOF STEP]
hence "analz (insert (Key ?K) ?B) = H \<union> insert (Key ?K) (analz ?C)"
[PROOF STATE]
proof (prove)
using this:
analz (insert (Key (sesK (c * d * (s + a * b)))) H \<union> A \<union> spies evsR3) = insert (Key (sesK (c * d * (s + a * b)))) H \<union> analz (A \<union> spies evsR3)

goal (1 subgoal):
 1. analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3)) = H \<union> insert (Key (sesK (c * d * (s + a * b)))) (analz (A \<union> spies evsR3))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3)) = H \<union> insert (Key (sesK (c * d * (s + a * b)))) (analz (A \<union> spies evsR3))

goal (2 subgoals):
 1. \<lbrakk>s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3); H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))\<rbrakk> \<Longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))
 2. \<lbrakk>s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3); H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)))\<rbrakk> \<Longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3)) = H \<union> insert (Key (sesK (c * d * (s + a * b)))) (analz (A \<union> spies evsR3))

goal (2 subgoals):
 1. \<lbrakk>s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3); H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))\<rbrakk> \<Longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))
 2. \<lbrakk>s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3); H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)))\<rbrakk> \<Longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3))
[PROOF STEP]
have "{Key ?K} \<subseteq> range Key \<union> range Pri_AgrK - U"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {Key (sesK (c * d * (s + a * b)))} \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
using B
[PROOF STATE]
proof (prove)
using this:
Key (sesK (c * d * (s + a * b))) \<notin> U

goal (1 subgoal):
 1. {Key (sesK (c * d * (s + a * b)))} \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
{Key (sesK (c * d * (s + a * b)))} \<subseteq> range Key \<union> range Pri_AgrK - U

goal (2 subgoals):
 1. \<lbrakk>s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3); H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))\<rbrakk> \<Longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))
 2. \<lbrakk>s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3); H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)))\<rbrakk> \<Longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3))
[PROOF STEP]
with A
[PROOF STATE]
proof (chain)
picking this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsR3) = ?H \<union> analz (A \<union> spies evsR3)
{Key (sesK (c * d * (s + a * b)))} \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
have "analz ({Key ?K} \<union> A \<union> spies evsR3) =
      {Key ?K} \<union> analz (A \<union> spies evsR3)"
[PROOF STATE]
proof (prove)
using this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsR3) = ?H \<union> analz (A \<union> spies evsR3)
{Key (sesK (c * d * (s + a * b)))} \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. analz ({Key (sesK (c * d * (s + a * b)))} \<union> A \<union> spies evsR3) = {Key (sesK (c * d * (s + a * b)))} \<union> analz (A \<union> spies evsR3)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
analz ({Key (sesK (c * d * (s + a * b)))} \<union> A \<union> spies evsR3) = {Key (sesK (c * d * (s + a * b)))} \<union> analz (A \<union> spies evsR3)

goal (2 subgoals):
 1. \<lbrakk>s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3); H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))\<rbrakk> \<Longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))
 2. \<lbrakk>s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3); H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)))\<rbrakk> \<Longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3))
[PROOF STEP]
hence "insert (Key ?K) (analz ?C) = analz (insert (Key ?K) ?C)"
[PROOF STATE]
proof (prove)
using this:
analz ({Key (sesK (c * d * (s + a * b)))} \<union> A \<union> spies evsR3) = {Key (sesK (c * d * (s + a * b)))} \<union> analz (A \<union> spies evsR3)

goal (1 subgoal):
 1. insert (Key (sesK (c * d * (s + a * b)))) (analz (A \<union> spies evsR3)) = analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
insert (Key (sesK (c * d * (s + a * b)))) (analz (A \<union> spies evsR3)) = analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3))

goal (2 subgoals):
 1. \<lbrakk>s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3); H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))\<rbrakk> \<Longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))
 2. \<lbrakk>s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3); H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)))\<rbrakk> \<Longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3)) = H \<union> insert (Key (sesK (c * d * (s + a * b)))) (analz (A \<union> spies evsR3))
insert (Key (sesK (c * d * (s + a * b)))) (analz (A \<union> spies evsR3)) = analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3))
[PROOF STEP]
have "analz (insert (Key ?K) ?B) = H \<union> analz (insert (Key ?K) ?C)"
[PROOF STATE]
proof (prove)
using this:
analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3)) = H \<union> insert (Key (sesK (c * d * (s + a * b)))) (analz (A \<union> spies evsR3))
insert (Key (sesK (c * d * (s + a * b)))) (analz (A \<union> spies evsR3)) = analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3))

goal (1 subgoal):
 1. analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3)) = H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3)) = H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3))

goal (2 subgoals):
 1. \<lbrakk>s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3); H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))\<rbrakk> \<Longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))
 2. \<lbrakk>s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3); H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)))\<rbrakk> \<Longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3))
[PROOF STEP]
thus ?T
[PROOF STATE]
proof (prove)
using this:
analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3)) = H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3))

goal (1 subgoal):
 1. insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))

goal (1 subgoal):
 1. \<lbrakk>s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3); H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)))\<rbrakk> \<Longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3); H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)))\<rbrakk> \<Longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3))
[PROOF STEP]
assume "H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key ?K')
      (insert (Key ?K) (insert \<lbrace>Key ?K, Agent X, Number n, Number run\<rbrace> U)))"
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)))

goal (1 subgoal):
 1. \<lbrakk>s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3); H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)))\<rbrakk> \<Longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3))
[PROOF STEP]
hence "H \<subseteq> range Key \<union> range Pri_AgrK - U"
[PROOF STATE]
proof (prove)
using this:
H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)))

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. \<lbrakk>s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3); H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)))\<rbrakk> \<Longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3))
[PROOF STEP]
with A
[PROOF STATE]
proof (chain)
picking this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsR3) = ?H \<union> analz (A \<union> spies evsR3)
H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
have "analz ?B = H \<union> analz ?C"
[PROOF STATE]
proof (prove)
using this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsR3) = ?H \<union> analz (A \<union> spies evsR3)
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. analz (H \<union> A \<union> spies evsR3) = H \<union> analz (A \<union> spies evsR3)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
analz (H \<union> A \<union> spies evsR3) = H \<union> analz (A \<union> spies evsR3)

goal (1 subgoal):
 1. \<lbrakk>s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3); H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)))\<rbrakk> \<Longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3))
[PROOF STEP]
thus ?T'
[PROOF STATE]
proof (prove)
using this:
analz (H \<union> A \<union> spies evsR3) = H \<union> analz (A \<union> spies evsR3)

goal (1 subgoal):
 1. insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
(s' = s \<and> Pri_AgrK c \<in> analz (A \<union> spies evsR3) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U)) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsR3)))) \<and> ((s' = s \<longrightarrow> Pri_AgrK c \<notin> analz (A \<union> spies evsR3)) \<longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Pri_AgrK d) (insert (Key (sesK (c * d * (s' + a * b)))) (insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent X, Number n, Number run\<rbrace> U))) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsR3)) = insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsR3)))

goal (9 subgoals):
 1. \<And>evsFR3 S A U m n run s a b c d H. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR3) = H \<union> analz (A \<union> spies evsFR3); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; Pri_AgrK s \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK d \<in> analz (A \<union> spies evsFR3); Key (sesK (c * d * (s + a * b))) \<notin> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
 2. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 3. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 4. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 5. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 6. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 7. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 8. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 9. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (9 subgoals):
 1. \<And>evsFR3 S A U m n run s a b c d H. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR3) = H \<union> analz (A \<union> spies evsFR3); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; Pri_AgrK s \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK d \<in> analz (A \<union> spies evsFR3); Key (sesK (c * d * (s + a * b))) \<notin> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
 2. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 3. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 4. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 5. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 6. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 7. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 8. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 9. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
fix evsFR3 S A U m n run s a b c d H
[PROOF STATE]
proof (state)
goal (9 subgoals):
 1. \<And>evsFR3 S A U m n run s a b c d H. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR3) = H \<union> analz (A \<union> spies evsFR3); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; Pri_AgrK s \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK d \<in> analz (A \<union> spies evsFR3); Key (sesK (c * d * (s + a * b))) \<notin> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
 2. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 3. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 4. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 5. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 6. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 7. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 8. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 9. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
assume
    A: "\<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow>
      analz (H \<union> A \<union> spies evsFR3) = H \<union> analz (A \<union> spies evsFR3)" and
    B: "Key (sesK (c * d * (s + a * b))) \<notin> U"
      (is "Key ?K \<notin> _")
[PROOF STATE]
proof (state)
this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsFR3) = ?H \<union> analz (A \<union> spies evsFR3)
Key (sesK (c * d * (s + a * b))) \<notin> U

goal (9 subgoals):
 1. \<And>evsFR3 S A U m n run s a b c d H. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR3) = H \<union> analz (A \<union> spies evsFR3); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; Pri_AgrK s \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK d \<in> analz (A \<union> spies evsFR3); Key (sesK (c * d * (s + a * b))) \<notin> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
 2. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 3. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 4. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 5. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 6. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 7. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 8. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 9. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
let
    ?B = "H \<union> A \<union> spies evsFR3" and
    ?C = "A \<union> spies evsFR3"
[PROOF STATE]
proof (state)
goal (9 subgoals):
 1. \<And>evsFR3 S A U m n run s a b c d H. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR3) = H \<union> analz (A \<union> spies evsFR3); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; Pri_AgrK s \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR3) \<and> Pri_AgrK d \<in> analz (A \<union> spies evsFR3); Key (sesK (c * d * (s + a * b))) \<notin> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
 2. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 3. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 4. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 5. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 6. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 7. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 8. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 9. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
show
   "H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key ?K)
      (insert \<lbrace>Key ?K, Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow>
    insert (pubAK (d * (s + a * b))) (analz (insert (Key ?K) ?B)) =
    insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key ?K) ?C))"
    (is "_ \<longrightarrow> ?T")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
[PROOF STEP]
proof
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<Longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
[PROOF STEP]
assume "H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key ?K)
      (insert \<lbrace>Key ?K, Agent (User m), Number n, Number run\<rbrace> U)"
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U)

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<Longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
[PROOF STEP]
hence "insert (Key ?K) H \<subseteq> range Key \<union> range Pri_AgrK - U"
[PROOF STATE]
proof (prove)
using this:
H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U)

goal (1 subgoal):
 1. insert (Key (sesK (c * d * (s + a * b)))) H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
using B
[PROOF STATE]
proof (prove)
using this:
H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U)
Key (sesK (c * d * (s + a * b))) \<notin> U

goal (1 subgoal):
 1. insert (Key (sesK (c * d * (s + a * b)))) H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
insert (Key (sesK (c * d * (s + a * b)))) H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<Longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
[PROOF STEP]
with A
[PROOF STATE]
proof (chain)
picking this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsFR3) = ?H \<union> analz (A \<union> spies evsFR3)
insert (Key (sesK (c * d * (s + a * b)))) H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
have "analz (insert (Key ?K) H \<union> A \<union> spies evsFR3) =
      insert (Key ?K) H \<union> analz (A \<union> spies evsFR3)"
[PROOF STATE]
proof (prove)
using this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsFR3) = ?H \<union> analz (A \<union> spies evsFR3)
insert (Key (sesK (c * d * (s + a * b)))) H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. analz (insert (Key (sesK (c * d * (s + a * b)))) H \<union> A \<union> spies evsFR3) = insert (Key (sesK (c * d * (s + a * b)))) H \<union> analz (A \<union> spies evsFR3)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
analz (insert (Key (sesK (c * d * (s + a * b)))) H \<union> A \<union> spies evsFR3) = insert (Key (sesK (c * d * (s + a * b)))) H \<union> analz (A \<union> spies evsFR3)

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<Longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
[PROOF STEP]
hence "analz (insert (Key ?K) ?B) = H \<union> insert (Key ?K) (analz ?C)"
[PROOF STATE]
proof (prove)
using this:
analz (insert (Key (sesK (c * d * (s + a * b)))) H \<union> A \<union> spies evsFR3) = insert (Key (sesK (c * d * (s + a * b)))) H \<union> analz (A \<union> spies evsFR3)

goal (1 subgoal):
 1. analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3)) = H \<union> insert (Key (sesK (c * d * (s + a * b)))) (analz (A \<union> spies evsFR3))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3)) = H \<union> insert (Key (sesK (c * d * (s + a * b)))) (analz (A \<union> spies evsFR3))

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<Longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3)) = H \<union> insert (Key (sesK (c * d * (s + a * b)))) (analz (A \<union> spies evsFR3))

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<Longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
[PROOF STEP]
have "{Key ?K} \<subseteq> range Key \<union> range Pri_AgrK - U"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. {Key (sesK (c * d * (s + a * b)))} \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
using B
[PROOF STATE]
proof (prove)
using this:
Key (sesK (c * d * (s + a * b))) \<notin> U

goal (1 subgoal):
 1. {Key (sesK (c * d * (s + a * b)))} \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
{Key (sesK (c * d * (s + a * b)))} \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<Longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
[PROOF STEP]
with A
[PROOF STATE]
proof (chain)
picking this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsFR3) = ?H \<union> analz (A \<union> spies evsFR3)
{Key (sesK (c * d * (s + a * b)))} \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
have "analz ({Key ?K} \<union> A \<union> spies evsFR3) =
      {Key ?K} \<union> analz (A \<union> spies evsFR3)"
[PROOF STATE]
proof (prove)
using this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsFR3) = ?H \<union> analz (A \<union> spies evsFR3)
{Key (sesK (c * d * (s + a * b)))} \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. analz ({Key (sesK (c * d * (s + a * b)))} \<union> A \<union> spies evsFR3) = {Key (sesK (c * d * (s + a * b)))} \<union> analz (A \<union> spies evsFR3)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
analz ({Key (sesK (c * d * (s + a * b)))} \<union> A \<union> spies evsFR3) = {Key (sesK (c * d * (s + a * b)))} \<union> analz (A \<union> spies evsFR3)

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<Longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
[PROOF STEP]
hence "insert (Key ?K) (analz ?C) = analz (insert (Key ?K) ?C)"
[PROOF STATE]
proof (prove)
using this:
analz ({Key (sesK (c * d * (s + a * b)))} \<union> A \<union> spies evsFR3) = {Key (sesK (c * d * (s + a * b)))} \<union> analz (A \<union> spies evsFR3)

goal (1 subgoal):
 1. insert (Key (sesK (c * d * (s + a * b)))) (analz (A \<union> spies evsFR3)) = analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
insert (Key (sesK (c * d * (s + a * b)))) (analz (A \<union> spies evsFR3)) = analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3))

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<Longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3)) = H \<union> insert (Key (sesK (c * d * (s + a * b)))) (analz (A \<union> spies evsFR3))
insert (Key (sesK (c * d * (s + a * b)))) (analz (A \<union> spies evsFR3)) = analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3))
[PROOF STEP]
have "analz (insert (Key ?K) ?B) = H \<union> analz (insert (Key ?K) ?C)"
[PROOF STATE]
proof (prove)
using this:
analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3)) = H \<union> insert (Key (sesK (c * d * (s + a * b)))) (analz (A \<union> spies evsFR3))
insert (Key (sesK (c * d * (s + a * b)))) (analz (A \<union> spies evsFR3)) = analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3))

goal (1 subgoal):
 1. analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3)) = H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3)) = H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3))

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<Longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
[PROOF STEP]
thus ?T
[PROOF STATE]
proof (prove)
using this:
analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3)) = H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3))

goal (1 subgoal):
 1. insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - insert (Key (sesK (c * d * (s + a * b)))) (insert \<lbrace>Key (sesK (c * d * (s + a * b))), Agent (User m), Number n, Number run\<rbrace> U) \<longrightarrow> insert (pubAK (d * (s + a * b))) (analz (insert (Key (sesK (c * d * (s + a * b)))) (H \<union> A \<union> spies evsFR3))) = insert (pubAK (d * (s + a * b))) (H \<union> analz (insert (Key (sesK (c * d * (s + a * b)))) (A \<union> spies evsFR3)))

goal (8 subgoals):
 1. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 2. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 3. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 4. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 5. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 6. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 7. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 8. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (8 subgoals):
 1. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 2. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 3. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 4. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 5. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 6. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 7. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 8. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
fix evsC4 S A U m n run c f H
[PROOF STATE]
proof (state)
goal (8 subgoals):
 1. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 2. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 3. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 4. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 5. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 6. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 7. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 8. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
assume
    A: "\<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow>
      analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4)" and
    B: "(evsC4, S, A, U) \<in> protocol" and
    C: "\<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U"
[PROOF STATE]
proof (state)
this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsC4) = ?H \<union> analz (A \<union> spies evsC4)
(evsC4, S, A, U) \<in> protocol
\<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U

goal (8 subgoals):
 1. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 2. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 3. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 4. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 5. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 6. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 7. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 8. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
let
    ?B = "H \<union> A \<union> spies evsC4" and
    ?C = "A \<union> spies evsC4"
[PROOF STATE]
proof (state)
goal (8 subgoals):
 1. \<And>evsC4 S A U m n run c X f H. \<lbrakk>(evsC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = None; Says n run 3 X (User m) (pubAK f) \<in> set evsC4; \<lbrace>Key (sesK (c * f)), Agent (User m), Number n, Number run\<rbrace> \<in> U\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 2. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 3. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 4. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 5. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 6. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 7. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 8. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
show "H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow>
    analz (insert (Crypt (sesK (c * f)) (pubAK f)) ?B) =
    H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) ?C)"
    (is "_ \<longrightarrow> ?T")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
[PROOF STEP]
proof (rule impI, cases "Key (invK (sesK (c * f))) \<in> analz ?C")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsC4)

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
[PROOF STEP]
assume "H \<subseteq> range Key \<union> range Pri_AgrK - U"
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
[PROOF STEP]
with A
[PROOF STATE]
proof (chain)
picking this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsC4) = ?H \<union> analz (A \<union> spies evsC4)
H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
have D: "analz ?B = H \<union> analz ?C"
[PROOF STATE]
proof (prove)
using this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsC4) = ?H \<union> analz (A \<union> spies evsC4)
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4)

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
[PROOF STEP]
have "Key (invK (sesK (c * f))) \<in> analz ?B"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Key (invK (sesK (c * f))) \<in> analz (H \<union> A \<union> spies evsC4)
[PROOF STEP]
by (rule subsetD [OF _ True], rule analz_mono, blast)
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (c * f))) \<in> analz (H \<union> A \<union> spies evsC4)

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
[PROOF STEP]
hence "analz (insert (Crypt (sesK (c * f)) (pubAK f)) ?B) =
      insert (Crypt (sesK (c * f)) (pubAK f)) (insert (pubAK f) (analz ?B))"
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (c * f))) \<in> analz (H \<union> A \<union> spies evsC4)

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = insert (Crypt (sesK (c * f)) (pubAK f)) (insert (pubAK f) (analz (H \<union> A \<union> spies evsC4)))
[PROOF STEP]
by (simp add: analz_crypt_in analz_simp_insert_2)
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = insert (Crypt (sesK (c * f)) (pubAK f)) (insert (pubAK f) (analz (H \<union> A \<union> spies evsC4)))

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = insert (Crypt (sesK (c * f)) (pubAK f)) (insert (pubAK f) (analz (H \<union> A \<union> spies evsC4)))

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
[PROOF STEP]
have "H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) ?C) =
      insert (Crypt (sesK (c * f)) (pubAK f)) (insert (pubAK f) (H \<union> analz ?C))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4)) = insert (Crypt (sesK (c * f)) (pubAK f)) (insert (pubAK f) (H \<union> analz (A \<union> spies evsC4)))
[PROOF STEP]
using True
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsC4)

goal (1 subgoal):
 1. H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4)) = insert (Crypt (sesK (c * f)) (pubAK f)) (insert (pubAK f) (H \<union> analz (A \<union> spies evsC4)))
[PROOF STEP]
by (simp add: analz_crypt_in analz_simp_insert_2)
[PROOF STATE]
proof (state)
this:
H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4)) = insert (Crypt (sesK (c * f)) (pubAK f)) (insert (pubAK f) (H \<union> analz (A \<union> spies evsC4)))

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = insert (Crypt (sesK (c * f)) (pubAK f)) (insert (pubAK f) (analz (H \<union> A \<union> spies evsC4)))
H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4)) = insert (Crypt (sesK (c * f)) (pubAK f)) (insert (pubAK f) (H \<union> analz (A \<union> spies evsC4)))
[PROOF STEP]
show ?T
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = insert (Crypt (sesK (c * f)) (pubAK f)) (insert (pubAK f) (analz (H \<union> A \<union> spies evsC4)))
H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4)) = insert (Crypt (sesK (c * f)) (pubAK f)) (insert (pubAK f) (H \<union> analz (A \<union> spies evsC4)))

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
[PROOF STEP]
using D
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = insert (Crypt (sesK (c * f)) (pubAK f)) (insert (pubAK f) (analz (H \<union> A \<union> spies evsC4)))
H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4)) = insert (Crypt (sesK (c * f)) (pubAK f)) (insert (pubAK f) (H \<union> analz (A \<union> spies evsC4)))
analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4)

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC4)

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC4)

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
[PROOF STEP]
assume D: "H \<subseteq> range Key \<union> range Pri_AgrK - U"
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
[PROOF STEP]
with A
[PROOF STATE]
proof (chain)
picking this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsC4) = ?H \<union> analz (A \<union> spies evsC4)
H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
have E: "analz ?B = H \<union> analz ?C"
[PROOF STATE]
proof (prove)
using this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsC4) = ?H \<union> analz (A \<union> spies evsC4)
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4)

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC4)
analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4)
[PROOF STEP]
have "Key (invK (sesK (c * f))) \<notin> analz ?B"
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC4)
analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4)

goal (1 subgoal):
 1. Key (invK (sesK (c * f))) \<notin> analz (H \<union> A \<union> spies evsC4)
[PROOF STEP]
proof (simp add: invK_sesK, insert pr_sesk_user_2 [OF B C])
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>Key (sesK (c * f)) \<notin> analz (A \<union> spies evsC4); analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4); Key (sesK (c * f)) \<in> U\<rbrakk> \<Longrightarrow> Key (sesK (c * f)) \<notin> H
[PROOF STEP]
qed (rule notI, drule subsetD [OF D], simp)
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (c * f))) \<notin> analz (H \<union> A \<union> spies evsC4)

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
[PROOF STEP]
hence "analz (insert (Crypt (sesK (c * f)) (pubAK f)) ?B) =
      insert (Crypt (sesK (c * f)) (pubAK f)) (analz ?B)"
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (c * f))) \<notin> analz (H \<union> A \<union> spies evsC4)

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = insert (Crypt (sesK (c * f)) (pubAK f)) (analz (H \<union> A \<union> spies evsC4))
[PROOF STEP]
by (simp add: analz_crypt_out)
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = insert (Crypt (sesK (c * f)) (pubAK f)) (analz (H \<union> A \<union> spies evsC4))

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = insert (Crypt (sesK (c * f)) (pubAK f)) (analz (H \<union> A \<union> spies evsC4))

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
[PROOF STEP]
have "H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) ?C) =
      insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> analz ?C)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4)) = insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> analz (A \<union> spies evsC4))
[PROOF STEP]
using False
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC4)

goal (1 subgoal):
 1. H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4)) = insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> analz (A \<union> spies evsC4))
[PROOF STEP]
by (simp add: analz_crypt_out)
[PROOF STATE]
proof (state)
this:
H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4)) = insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> analz (A \<union> spies evsC4))

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = insert (Crypt (sesK (c * f)) (pubAK f)) (analz (H \<union> A \<union> spies evsC4))
H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4)) = insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> analz (A \<union> spies evsC4))
[PROOF STEP]
show ?T
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = insert (Crypt (sesK (c * f)) (pubAK f)) (analz (H \<union> A \<union> spies evsC4))
H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4)) = insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> analz (A \<union> spies evsC4))

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
[PROOF STEP]
using E
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = insert (Crypt (sesK (c * f)) (pubAK f)) (analz (H \<union> A \<union> spies evsC4))
H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4)) = insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> analz (A \<union> spies evsC4))
analz (H \<union> A \<union> spies evsC4) = H \<union> analz (A \<union> spies evsC4)

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (H \<union> A \<union> spies evsC4)) = H \<union> analz (insert (Crypt (sesK (c * f)) (pubAK f)) (A \<union> spies evsC4))

goal (7 subgoals):
 1. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 2. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 3. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 4. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 5. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 6. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 7. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (7 subgoals):
 1. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 2. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 3. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 4. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 5. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 6. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 7. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
fix evsFC4 S A U n run s a b d e H
[PROOF STATE]
proof (state)
goal (7 subgoals):
 1. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 2. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 3. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 4. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 5. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 6. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 7. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
assume
    A: "\<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow>
      analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4)" and
    B: "(evsFC4, S, A, U) \<in> protocol" and
    C: "IntAgrK (S (Card n, n, run)) = Some d" and
    D: "ExtAgrK (S (Card n, n, run)) = Some e"
[PROOF STATE]
proof (state)
this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsFC4) = ?H \<union> analz (A \<union> spies evsFC4)
(evsFC4, S, A, U) \<in> protocol
IntAgrK (S (Card n, n, run)) = Some d
ExtAgrK (S (Card n, n, run)) = Some e

goal (7 subgoals):
 1. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 2. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 3. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 4. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 5. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 6. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 7. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
let
    ?B = "H \<union> A \<union> spies evsFC4" and
    ?C = "A \<union> spies evsFC4" and
    ?f = "d * (s + a * b)"
[PROOF STATE]
proof (state)
goal (7 subgoals):
 1. \<And>evsFC4 S A U n run s b a d e H. \<lbrakk>(evsFC4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (pubAK (d * (s + a * b))) \<in> synth (analz (A \<union> spies evsFC4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 2. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 3. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 4. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 5. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 6. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 7. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
show "H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow>
    analz (insert (Crypt (sesK (d * e)) (pubAK ?f)) ?B) =
    H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK ?f)) ?C)"
    (is "_ \<longrightarrow> ?T")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
[PROOF STEP]
proof (rule impI, cases "Key (invK (sesK (d * e))) \<in> analz ?C")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<in> analz (A \<union> spies evsFC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (d * e))) \<in> analz (A \<union> spies evsFC4)

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<in> analz (A \<union> spies evsFC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
[PROOF STEP]
assume "H \<subseteq> range Key \<union> range Pri_AgrK - U"
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<in> analz (A \<union> spies evsFC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
[PROOF STEP]
with A
[PROOF STATE]
proof (chain)
picking this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsFC4) = ?H \<union> analz (A \<union> spies evsFC4)
H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
have E: "analz ?B = H \<union> analz ?C"
[PROOF STATE]
proof (prove)
using this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsFC4) = ?H \<union> analz (A \<union> spies evsFC4)
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4)

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<in> analz (A \<union> spies evsFC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
[PROOF STEP]
have "Key (invK (sesK (d * e))) \<in> analz ?B"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Key (invK (sesK (d * e))) \<in> analz (H \<union> A \<union> spies evsFC4)
[PROOF STEP]
by (rule subsetD [OF _ True], rule analz_mono, blast)
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (d * e))) \<in> analz (H \<union> A \<union> spies evsFC4)

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<in> analz (A \<union> spies evsFC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
[PROOF STEP]
hence "analz (insert (Crypt (sesK (d * e)) (pubAK ?f)) ?B) =
      insert (Crypt (sesK (d * e)) (pubAK ?f)) (insert (pubAK ?f) (analz ?B))"
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (d * e))) \<in> analz (H \<union> A \<union> spies evsFC4)

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsFC4)))
[PROOF STEP]
by (simp add: analz_crypt_in analz_simp_insert_2)
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsFC4)))

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<in> analz (A \<union> spies evsFC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsFC4)))

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<in> analz (A \<union> spies evsFC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
[PROOF STEP]
have "H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK ?f)) ?C) =
      insert (Crypt (sesK (d * e)) (pubAK ?f)) (insert (pubAK ?f) (H \<union> analz ?C))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4)) = insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsFC4)))
[PROOF STEP]
using True
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (d * e))) \<in> analz (A \<union> spies evsFC4)

goal (1 subgoal):
 1. H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4)) = insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsFC4)))
[PROOF STEP]
by (simp add: analz_crypt_in analz_simp_insert_2)
[PROOF STATE]
proof (state)
this:
H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4)) = insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsFC4)))

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<in> analz (A \<union> spies evsFC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsFC4)))
H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4)) = insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsFC4)))
[PROOF STEP]
show ?T
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsFC4)))
H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4)) = insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsFC4)))

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
[PROOF STEP]
using E
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (insert (pubAK (d * (s + a * b))) (analz (H \<union> A \<union> spies evsFC4)))
H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4)) = insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (insert (pubAK (d * (s + a * b))) (H \<union> analz (A \<union> spies evsFC4)))
analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4)

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC4)

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC4)

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
[PROOF STEP]
assume E: "H \<subseteq> range Key \<union> range Pri_AgrK - U"
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
[PROOF STEP]
with A
[PROOF STATE]
proof (chain)
picking this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsFC4) = ?H \<union> analz (A \<union> spies evsFC4)
H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
have F: "analz ?B = H \<union> analz ?C"
[PROOF STATE]
proof (prove)
using this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsFC4) = ?H \<union> analz (A \<union> spies evsFC4)
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4)

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC4)
analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4)
[PROOF STEP]
have "Key (invK (sesK (d * e))) \<notin> analz ?B"
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC4)
analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4)

goal (1 subgoal):
 1. Key (invK (sesK (d * e))) \<notin> analz (H \<union> A \<union> spies evsFC4)
[PROOF STEP]
proof (simp add: invK_sesK, insert pr_sesk_card [OF B C D])
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>Key (sesK (d * e)) \<notin> analz (A \<union> spies evsFC4); analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4); Key (sesK (d * e)) \<in> U\<rbrakk> \<Longrightarrow> Key (sesK (d * e)) \<notin> H
[PROOF STEP]
qed (rule notI, drule subsetD [OF E], simp)
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (d * e))) \<notin> analz (H \<union> A \<union> spies evsFC4)

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
[PROOF STEP]
hence "analz (insert (Crypt (sesK (d * e)) (pubAK ?f)) ?B) =
      insert (Crypt (sesK (d * e)) (pubAK ?f)) (analz ?B)"
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (d * e))) \<notin> analz (H \<union> A \<union> spies evsFC4)

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (analz (H \<union> A \<union> spies evsFC4))
[PROOF STEP]
by (simp add: analz_crypt_out)
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (analz (H \<union> A \<union> spies evsFC4))

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (analz (H \<union> A \<union> spies evsFC4))

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
[PROOF STEP]
have "H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK ?f)) ?C) =
      insert (Crypt (sesK (d * e)) (pubAK ?f)) (H \<union> analz ?C)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4)) = insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> analz (A \<union> spies evsFC4))
[PROOF STEP]
using False
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC4)

goal (1 subgoal):
 1. H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4)) = insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> analz (A \<union> spies evsFC4))
[PROOF STEP]
by (simp add: analz_crypt_out)
[PROOF STATE]
proof (state)
this:
H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4)) = insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> analz (A \<union> spies evsFC4))

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (analz (H \<union> A \<union> spies evsFC4))
H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4)) = insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> analz (A \<union> spies evsFC4))
[PROOF STEP]
show ?T
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (analz (H \<union> A \<union> spies evsFC4))
H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4)) = insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> analz (A \<union> spies evsFC4))

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
[PROOF STEP]
using F
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (analz (H \<union> A \<union> spies evsFC4))
H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4)) = insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> analz (A \<union> spies evsFC4))
analz (H \<union> A \<union> spies evsFC4) = H \<union> analz (A \<union> spies evsFC4)

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (H \<union> A \<union> spies evsFC4)) = H \<union> analz (insert (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) (A \<union> spies evsFC4))

goal (6 subgoals):
 1. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 2. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 3. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 4. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 5. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 6. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (6 subgoals):
 1. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 2. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 3. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 4. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 5. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 6. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
fix evsR4 S A U n run b d e H
[PROOF STATE]
proof (state)
goal (6 subgoals):
 1. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 2. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 3. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 4. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 5. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 6. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
let
    ?B = "H \<union> A \<union> spies evsR4" and
    ?C = "A \<union> spies evsR4" and
    ?H = "Hash (pubAK (priAK n))" and
    ?M = "\<lbrace>pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>" and
    ?M' = "\<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n),
      Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>"
[PROOF STATE]
proof (state)
goal (6 subgoals):
 1. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 2. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 3. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 4. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 5. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 6. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
assume
    A: "\<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow>
      analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4)" and
    B: "(evsR4, S, A, U) \<in> protocol" and
    C: "IntMapK (S (Card n, n, run)) = Some b" and
    D: "IntAgrK (S (Card n, n, run)) = Some d" and
    E: "ExtAgrK (S (Card n, n, run)) = Some e"
[PROOF STATE]
proof (state)
this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsR4) = ?H \<union> analz (A \<union> spies evsR4)
(evsR4, S, A, U) \<in> protocol
IntMapK (S (Card n, n, run)) = Some b
IntAgrK (S (Card n, n, run)) = Some d
ExtAgrK (S (Card n, n, run)) = Some e

goal (6 subgoals):
 1. \<And>evsR4 S A U n run s b a d e X H. \<lbrakk>(evsR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4); NonceS (S (Card n, n, run)) = Some s; IntMapK (S (Card n, n, run)) = Some b; ExtMapK (S (Card n, n, run)) = Some a; IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 4 X (Card n) (Crypt (sesK (d * e)) (pubAK (d * (s + a * b)))) \<in> set evsR4\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 2. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 3. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 4. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 5. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 6. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
show "H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow>
    analz (insert (Crypt (sesK (d * e)) ?M') ?B) =
    H \<union> analz (insert (Crypt (sesK (d * e)) ?M') ?C)"
    (is "_ \<longrightarrow> ?T")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
[PROOF STEP]
proof
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
[PROOF STEP]
assume F: "H \<subseteq> range Key \<union> range Pri_AgrK - U"
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
[PROOF STEP]
with A
[PROOF STATE]
proof (chain)
picking this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsR4) = ?H \<union> analz (A \<union> spies evsR4)
H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
have G: "analz ?B = H \<union> analz ?C"
[PROOF STATE]
proof (prove)
using this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsR4) = ?H \<union> analz (A \<union> spies evsR4)
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4)

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
[PROOF STEP]
have H: "Key (pubSK CA) \<in> analz ?C"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Key (pubSK CA) \<in> analz (A \<union> spies evsR4)
[PROOF STEP]
using B
[PROOF STATE]
proof (prove)
using this:
(evsR4, S, A, U) \<in> protocol

goal (1 subgoal):
 1. Key (pubSK CA) \<in> analz (A \<union> spies evsR4)
[PROOF STEP]
by (rule pr_valid_key_analz)
[PROOF STATE]
proof (state)
this:
Key (pubSK CA) \<in> analz (A \<union> spies evsR4)

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
[PROOF STEP]
hence I: "analz (insert (Crypt (priSK CA) ?H) ?C) =
      {Crypt (priSK CA) ?H, ?H} \<union> analz ?C"
[PROOF STATE]
proof (prove)
using this:
Key (pubSK CA) \<in> analz (A \<union> spies evsR4)

goal (1 subgoal):
 1. analz (insert (Crypt (priSK CA) (Hash (pubAK (priAK n)))) (A \<union> spies evsR4)) = {Crypt (priSK CA) (Hash (pubAK (priAK n))), Hash (pubAK (priAK n))} \<union> analz (A \<union> spies evsR4)
[PROOF STEP]
by (simp add: analz_crypt_in analz_simp_insert_2)
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (priSK CA) (Hash (pubAK (priAK n)))) (A \<union> spies evsR4)) = {Crypt (priSK CA) (Hash (pubAK (priAK n))), Hash (pubAK (priAK n))} \<union> analz (A \<union> spies evsR4)

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
[PROOF STEP]
have "Key (pubSK CA) \<in> analz ?B"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Key (pubSK CA) \<in> analz (H \<union> A \<union> spies evsR4)
[PROOF STEP]
by (rule subsetD [OF _ H], rule analz_mono, blast)
[PROOF STATE]
proof (state)
this:
Key (pubSK CA) \<in> analz (H \<union> A \<union> spies evsR4)

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
[PROOF STEP]
hence J: "analz (insert (Crypt (priSK CA) ?H) ?B) =
      {Crypt (priSK CA) ?H, ?H} \<union> analz ?B"
[PROOF STATE]
proof (prove)
using this:
Key (pubSK CA) \<in> analz (H \<union> A \<union> spies evsR4)

goal (1 subgoal):
 1. analz (insert (Crypt (priSK CA) (Hash (pubAK (priAK n)))) (H \<union> A \<union> spies evsR4)) = {Crypt (priSK CA) (Hash (pubAK (priAK n))), Hash (pubAK (priAK n))} \<union> analz (H \<union> A \<union> spies evsR4)
[PROOF STEP]
by (simp add: analz_crypt_in analz_simp_insert_2)
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (priSK CA) (Hash (pubAK (priAK n)))) (H \<union> A \<union> spies evsR4)) = {Crypt (priSK CA) (Hash (pubAK (priAK n))), Hash (pubAK (priAK n))} \<union> analz (H \<union> A \<union> spies evsR4)

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
[PROOF STEP]
have K: "Pri_AgrK (priAK n) \<notin> analz ?C"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Pri_AgrK (priAK n) \<notin> analz (A \<union> spies evsR4)
[PROOF STEP]
using B
[PROOF STATE]
proof (prove)
using this:
(evsR4, S, A, U) \<in> protocol

goal (1 subgoal):
 1. Pri_AgrK (priAK n) \<notin> analz (A \<union> spies evsR4)
[PROOF STEP]
by (rule pr_auth_key_analz)
[PROOF STATE]
proof (state)
this:
Pri_AgrK (priAK n) \<notin> analz (A \<union> spies evsR4)

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
[PROOF STEP]
hence L: "Pri_AgrK (priAK n) \<notin> analz (insert (Crypt (priSK CA) ?H) ?C)"
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK (priAK n) \<notin> analz (A \<union> spies evsR4)

goal (1 subgoal):
 1. Pri_AgrK (priAK n) \<notin> analz (insert (Crypt (priSK CA) (Hash (pubAK (priAK n)))) (A \<union> spies evsR4))
[PROOF STEP]
using I
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK (priAK n) \<notin> analz (A \<union> spies evsR4)
analz (insert (Crypt (priSK CA) (Hash (pubAK (priAK n)))) (A \<union> spies evsR4)) = {Crypt (priSK CA) (Hash (pubAK (priAK n))), Hash (pubAK (priAK n))} \<union> analz (A \<union> spies evsR4)

goal (1 subgoal):
 1. Pri_AgrK (priAK n) \<notin> analz (insert (Crypt (priSK CA) (Hash (pubAK (priAK n)))) (A \<union> spies evsR4))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Pri_AgrK (priAK n) \<notin> analz (insert (Crypt (priSK CA) (Hash (pubAK (priAK n)))) (A \<union> spies evsR4))

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
[PROOF STEP]
have M: "Pri_AgrK b \<notin> analz ?C"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Pri_AgrK b \<notin> analz (A \<union> spies evsR4)
[PROOF STEP]
using B and C
[PROOF STATE]
proof (prove)
using this:
(evsR4, S, A, U) \<in> protocol
IntMapK (S (Card n, n, run)) = Some b

goal (1 subgoal):
 1. Pri_AgrK b \<notin> analz (A \<union> spies evsR4)
[PROOF STEP]
by (rule pr_int_mapk_analz)
[PROOF STATE]
proof (state)
this:
Pri_AgrK b \<notin> analz (A \<union> spies evsR4)

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
[PROOF STEP]
hence N: "Pri_AgrK b \<notin> analz (insert (Crypt (priSK CA) ?H) ?C)"
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK b \<notin> analz (A \<union> spies evsR4)

goal (1 subgoal):
 1. Pri_AgrK b \<notin> analz (insert (Crypt (priSK CA) (Hash (pubAK (priAK n)))) (A \<union> spies evsR4))
[PROOF STEP]
using I
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK b \<notin> analz (A \<union> spies evsR4)
analz (insert (Crypt (priSK CA) (Hash (pubAK (priAK n)))) (A \<union> spies evsR4)) = {Crypt (priSK CA) (Hash (pubAK (priAK n))), Hash (pubAK (priAK n))} \<union> analz (A \<union> spies evsR4)

goal (1 subgoal):
 1. Pri_AgrK b \<notin> analz (insert (Crypt (priSK CA) (Hash (pubAK (priAK n)))) (A \<union> spies evsR4))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Pri_AgrK b \<notin> analz (insert (Crypt (priSK CA) (Hash (pubAK (priAK n)))) (A \<union> spies evsR4))

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
[PROOF STEP]
have "Pri_AgrK (priAK n) \<in> U"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Pri_AgrK (priAK n) \<in> U
[PROOF STEP]
using B
[PROOF STATE]
proof (prove)
using this:
(evsR4, S, A, U) \<in> protocol

goal (1 subgoal):
 1. Pri_AgrK (priAK n) \<in> U
[PROOF STEP]
by (rule pr_auth_key_used)
[PROOF STATE]
proof (state)
this:
Pri_AgrK (priAK n) \<in> U

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
[PROOF STEP]
hence "Pri_AgrK (priAK n) \<notin> H"
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK (priAK n) \<in> U

goal (1 subgoal):
 1. Pri_AgrK (priAK n) \<notin> H
[PROOF STEP]
using F
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK (priAK n) \<in> U
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. Pri_AgrK (priAK n) \<notin> H
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
Pri_AgrK (priAK n) \<notin> H

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
[PROOF STEP]
hence O: "Pri_AgrK (priAK n) \<notin> analz (insert (Crypt (priSK CA) ?H) ?B)"
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK (priAK n) \<notin> H

goal (1 subgoal):
 1. Pri_AgrK (priAK n) \<notin> analz (insert (Crypt (priSK CA) (Hash (pubAK (priAK n)))) (H \<union> A \<union> spies evsR4))
[PROOF STEP]
using G and J and K
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK (priAK n) \<notin> H
analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4)
analz (insert (Crypt (priSK CA) (Hash (pubAK (priAK n)))) (H \<union> A \<union> spies evsR4)) = {Crypt (priSK CA) (Hash (pubAK (priAK n))), Hash (pubAK (priAK n))} \<union> analz (H \<union> A \<union> spies evsR4)
Pri_AgrK (priAK n) \<notin> analz (A \<union> spies evsR4)

goal (1 subgoal):
 1. Pri_AgrK (priAK n) \<notin> analz (insert (Crypt (priSK CA) (Hash (pubAK (priAK n)))) (H \<union> A \<union> spies evsR4))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Pri_AgrK (priAK n) \<notin> analz (insert (Crypt (priSK CA) (Hash (pubAK (priAK n)))) (H \<union> A \<union> spies evsR4))

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
[PROOF STEP]
have "Pri_AgrK b \<in> U"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Pri_AgrK b \<in> U
[PROOF STEP]
using B and C
[PROOF STATE]
proof (prove)
using this:
(evsR4, S, A, U) \<in> protocol
IntMapK (S (Card n, n, run)) = Some b

goal (1 subgoal):
 1. Pri_AgrK b \<in> U
[PROOF STEP]
by (rule pr_int_mapk_used)
[PROOF STATE]
proof (state)
this:
Pri_AgrK b \<in> U

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
[PROOF STEP]
hence "Pri_AgrK b \<notin> H"
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK b \<in> U

goal (1 subgoal):
 1. Pri_AgrK b \<notin> H
[PROOF STEP]
using F
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK b \<in> U
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. Pri_AgrK b \<notin> H
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
Pri_AgrK b \<notin> H

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
[PROOF STEP]
hence P: "Pri_AgrK b \<notin> analz (insert (Crypt (priSK CA) ?H) ?B)"
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK b \<notin> H

goal (1 subgoal):
 1. Pri_AgrK b \<notin> analz (insert (Crypt (priSK CA) (Hash (pubAK (priAK n)))) (H \<union> A \<union> spies evsR4))
[PROOF STEP]
using G and J and M
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK b \<notin> H
analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4)
analz (insert (Crypt (priSK CA) (Hash (pubAK (priAK n)))) (H \<union> A \<union> spies evsR4)) = {Crypt (priSK CA) (Hash (pubAK (priAK n))), Hash (pubAK (priAK n))} \<union> analz (H \<union> A \<union> spies evsR4)
Pri_AgrK b \<notin> analz (A \<union> spies evsR4)

goal (1 subgoal):
 1. Pri_AgrK b \<notin> analz (insert (Crypt (priSK CA) (Hash (pubAK (priAK n)))) (H \<union> A \<union> spies evsR4))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Pri_AgrK b \<notin> analz (insert (Crypt (priSK CA) (Hash (pubAK (priAK n)))) (H \<union> A \<union> spies evsR4))

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
[PROOF STEP]
show ?T
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
[PROOF STEP]
proof (cases "Key (invK (sesK (d * e))) \<in> analz ?C")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. Key (invK (sesK (d * e))) \<in> analz (A \<union> spies evsR4) \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 2. Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR4) \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (d * e))) \<in> analz (A \<union> spies evsR4)

goal (2 subgoals):
 1. Key (invK (sesK (d * e))) \<in> analz (A \<union> spies evsR4) \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 2. Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR4) \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
[PROOF STEP]
have Q: "Key (invK (sesK (d * e))) \<in> analz ?B"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Key (invK (sesK (d * e))) \<in> analz (H \<union> A \<union> spies evsR4)
[PROOF STEP]
by (rule subsetD [OF _ True], rule analz_mono, blast)
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (d * e))) \<in> analz (H \<union> A \<union> spies evsR4)

goal (2 subgoals):
 1. Key (invK (sesK (d * e))) \<in> analz (A \<union> spies evsR4) \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
 2. Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR4) \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
[PROOF STEP]
show ?T
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
[PROOF STEP]
proof (simp add: analz_crypt_in analz_mpair analz_simp_insert_2 True Q,
       rule equalityI, (rule_tac [!] insert_mono)+)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. analz (insert (Auth_Data (priAK n) b) (insert \<lbrace>pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace> (H \<union> A \<union> spies evsR4))) \<subseteq> H \<union> analz (insert (Auth_Data (priAK n) b) (insert \<lbrace>pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace> (A \<union> spies evsR4)))
 2. H \<union> analz (insert (Auth_Data (priAK n) b) (insert \<lbrace>pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace> (A \<union> spies evsR4))) \<subseteq> analz (insert (Auth_Data (priAK n) b) (insert \<lbrace>pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace> (H \<union> A \<union> spies evsR4)))
[PROOF STEP]
show "analz (insert (Auth_Data (priAK n) b) (insert ?M ?B)) \<subseteq>
          H \<union> analz (insert (Auth_Data (priAK n) b) (insert ?M ?C))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. analz (insert (Auth_Data (priAK n) b) (insert \<lbrace>pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace> (H \<union> A \<union> spies evsR4))) \<subseteq> H \<union> analz (insert (Auth_Data (priAK n) b) (insert \<lbrace>pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace> (A \<union> spies evsR4)))
[PROOF STEP]
proof (subst (1 2) insert_commute, simp add: analz_mpair analz_simp_insert_2
         del: Un_insert_right, subst (1 3) insert_commute,
         subst analz_auth_data_out [OF O P], subst analz_auth_data_out [OF L N])
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. insert (Auth_Data (priAK n) b) (analz (insert (Crypt (priSK CA) (Hash (pubAK (priAK n)))) (H \<union> A \<union> spies evsR4))) \<subseteq> H \<union> insert \<lbrace>pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace> (insert (pubAK (priAK n)) (insert (Auth_Data (priAK n) b) (analz (insert (Crypt (priSK CA) (Hash (pubAK (priAK n)))) (A \<union> spies evsR4)))))
[PROOF STEP]
qed (auto simp add: G I J)
[PROOF STATE]
proof (state)
this:
analz (insert (Auth_Data (priAK n) b) (insert \<lbrace>pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace> (H \<union> A \<union> spies evsR4))) \<subseteq> H \<union> analz (insert (Auth_Data (priAK n) b) (insert \<lbrace>pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace> (A \<union> spies evsR4)))

goal (1 subgoal):
 1. H \<union> analz (insert (Auth_Data (priAK n) b) (insert \<lbrace>pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace> (A \<union> spies evsR4))) \<subseteq> analz (insert (Auth_Data (priAK n) b) (insert \<lbrace>pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace> (H \<union> A \<union> spies evsR4)))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. H \<union> analz (insert (Auth_Data (priAK n) b) (insert \<lbrace>pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace> (A \<union> spies evsR4))) \<subseteq> analz (insert (Auth_Data (priAK n) b) (insert \<lbrace>pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace> (H \<union> A \<union> spies evsR4)))
[PROOF STEP]
show "H \<union> analz (insert (Auth_Data (priAK n) b) (insert ?M ?C)) \<subseteq>
          analz (insert (Auth_Data (priAK n) b) (insert ?M ?B))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. H \<union> analz (insert (Auth_Data (priAK n) b) (insert \<lbrace>pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace> (A \<union> spies evsR4))) \<subseteq> analz (insert (Auth_Data (priAK n) b) (insert \<lbrace>pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace> (H \<union> A \<union> spies evsR4)))
[PROOF STEP]
proof (subst (1 2) insert_commute, simp add: analz_mpair analz_simp_insert_2
         del: Un_insert_right Un_subset_iff semilattice_sup_class.sup.bounded_iff,
         subst (1 3) insert_commute, subst analz_auth_data_out [OF L N],
         subst analz_auth_data_out [OF O P])
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. H \<union> insert \<lbrace>pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace> (insert (pubAK (priAK n)) (insert (Auth_Data (priAK n) b) (analz (insert (Crypt (priSK CA) (Hash (pubAK (priAK n)))) (A \<union> spies evsR4))))) \<subseteq> insert \<lbrace>pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace> (insert (pubAK (priAK n)) (insert (Auth_Data (priAK n) b) (analz (insert (Crypt (priSK CA) (Hash (pubAK (priAK n)))) (H \<union> A \<union> spies evsR4)))))
[PROOF STEP]
qed (auto simp add: G I J)
[PROOF STATE]
proof (state)
this:
H \<union> analz (insert (Auth_Data (priAK n) b) (insert \<lbrace>pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace> (A \<union> spies evsR4))) \<subseteq> analz (insert (Auth_Data (priAK n) b) (insert \<lbrace>pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace> (H \<union> A \<union> spies evsR4)))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))

goal (1 subgoal):
 1. Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR4) \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR4) \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR4)

goal (1 subgoal):
 1. Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR4) \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
[PROOF STEP]
hence "Key (invK (sesK (d * e))) \<notin> analz ?B"
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR4)

goal (1 subgoal):
 1. Key (invK (sesK (d * e))) \<notin> analz (H \<union> A \<union> spies evsR4)
[PROOF STEP]
proof (simp add: invK_sesK G, insert pr_sesk_card [OF B D E])
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>Key (sesK (d * e)) \<notin> analz (A \<union> spies evsR4); Key (sesK (d * e)) \<in> U\<rbrakk> \<Longrightarrow> Key (sesK (d * e)) \<notin> H
[PROOF STEP]
qed (rule notI, drule subsetD [OF F], simp)
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (d * e))) \<notin> analz (H \<union> A \<union> spies evsR4)

goal (1 subgoal):
 1. Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR4) \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
[PROOF STEP]
hence "analz (insert (Crypt (sesK (d * e)) ?M') ?B) =
        insert (Crypt (sesK (d * e)) ?M') (analz ?B)"
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (d * e))) \<notin> analz (H \<union> A \<union> spies evsR4)

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (analz (H \<union> A \<union> spies evsR4))
[PROOF STEP]
by (simp add: analz_crypt_out)
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (analz (H \<union> A \<union> spies evsR4))

goal (1 subgoal):
 1. Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR4) \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (analz (H \<union> A \<union> spies evsR4))

goal (1 subgoal):
 1. Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR4) \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
[PROOF STEP]
have "H \<union> analz (insert (Crypt (sesK (d * e)) ?M') ?C) =
        insert (Crypt (sesK (d * e)) ?M') (H \<union> analz ?C)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4)) = insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> analz (A \<union> spies evsR4))
[PROOF STEP]
using False
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR4)

goal (1 subgoal):
 1. H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4)) = insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> analz (A \<union> spies evsR4))
[PROOF STEP]
by (simp add: analz_crypt_out)
[PROOF STATE]
proof (state)
this:
H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4)) = insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> analz (A \<union> spies evsR4))

goal (1 subgoal):
 1. Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR4) \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (analz (H \<union> A \<union> spies evsR4))
H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4)) = insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> analz (A \<union> spies evsR4))
[PROOF STEP]
show ?T
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (analz (H \<union> A \<union> spies evsR4))
H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4)) = insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> analz (A \<union> spies evsR4))

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
[PROOF STEP]
using G
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (analz (H \<union> A \<union> spies evsR4))
H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4)) = insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> analz (A \<union> spies evsR4))
analz (H \<union> A \<union> spies evsR4) = H \<union> analz (A \<union> spies evsR4)

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (H \<union> A \<union> spies evsR4)) = H \<union> analz (insert (Crypt (sesK (d * e)) \<lbrace>pubAK e, Auth_Data (priAK n) b, pubAK (priAK n), Crypt (priSK CA) (Hash (pubAK (priAK n)))\<rbrace>) (A \<union> spies evsR4))

goal (5 subgoals):
 1. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 2. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 3. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 4. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 5. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (5 subgoals):
 1. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 2. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 3. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 4. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 5. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
fix evsFR4 S A U m n run s a b c f g H
[PROOF STATE]
proof (state)
goal (5 subgoals):
 1. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 2. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 3. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 4. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 5. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
let
    ?B = "H \<union> A \<union> spies evsFR4" and
    ?C = "A \<union> spies evsFR4" and
    ?H = "Hash (pubAK g)" and
    ?M = "\<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>" and
    ?M' = "\<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g,
      Crypt (priSK CA) (Hash (pubAK g))\<rbrace>"
[PROOF STATE]
proof (state)
goal (5 subgoals):
 1. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 2. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 3. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 4. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 5. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
assume
    A: "\<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow>
      analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4)" and
    B: "(evsFR4, S, A, U) \<in> protocol" and
    C: "IntAgrK (S (User m, n, run)) = Some c" and
    D: "ExtAgrK (S (User m, n, run)) = Some f" and
    E: "Crypt (sesK (c * f)) ?M' \<in> synth (analz ?C)"
[PROOF STATE]
proof (state)
this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsFR4) = ?H \<union> analz (A \<union> spies evsFR4)
(evsFR4, S, A, U) \<in> protocol
IntAgrK (S (User m, n, run)) = Some c
ExtAgrK (S (User m, n, run)) = Some f
Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))

goal (5 subgoals):
 1. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 2. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 3. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 4. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 5. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
have F:
   "Key (invK (sesK (c * f))) \<in> analz ?C \<longrightarrow>
      Pri_AgrK b \<in> analz ?C \<or> Pri_AgrK g \<in> analz ?C \<longrightarrow>
    Pri_AgrK b \<in> analz ?C \<and> Pri_AgrK g \<in> analz ?C"
    (is "?P \<longrightarrow> ?Q \<longrightarrow> ?R")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4) \<longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
proof (rule impI)+
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
assume ?P and ?Q
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4)
Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
have "Crypt (sesK (c * f)) ?M' \<in> analz ?C \<or>
      ?M' \<in> synth (analz ?C) \<and> Key (sesK (c * f)) \<in> analz ?C"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4) \<or> \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4)) \<and> Key (sesK (c * f)) \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
using E
[PROOF STATE]
proof (prove)
using this:
Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))

goal (1 subgoal):
 1. Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4) \<or> \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4)) \<and> Key (sesK (c * f)) \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
by (rule synth_crypt)
[PROOF STATE]
proof (state)
this:
Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4) \<or> \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4)) \<and> Key (sesK (c * f)) \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4) \<or> \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4)) \<and> Key (sesK (c * f)) \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
{
[PROOF STATE]
proof (state)
this:
Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4) \<or> \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4)) \<and> Key (sesK (c * f)) \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
assume "Crypt (sesK (c * f)) ?M' \<in> analz ?C"
[PROOF STATE]
proof (state)
this:
Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
hence "?M' \<in> analz ?C"
[PROOF STATE]
proof (prove)
using this:
Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
using \<open>?P\<close>
[PROOF STATE]
proof (prove)
using this:
Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4)
Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
by (rule analz.Decrypt)
[PROOF STATE]
proof (state)
this:
\<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
hence "\<lbrace>Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>
        \<in> analz ?C"
[PROOF STATE]
proof (prove)
using this:
\<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. \<lbrace>Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
by (rule analz.Snd)
[PROOF STATE]
proof (state)
this:
\<lbrace>Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
hence G: "Auth_Data g b \<in> analz ?C"
[PROOF STATE]
proof (prove)
using this:
\<lbrace>Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Auth_Data g b \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
by (rule analz.Fst)
[PROOF STATE]
proof (state)
this:
Auth_Data g b \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
have ?R
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
proof (rule disjE [OF \<open>?Q\<close>])
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
 2. Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
assume "Pri_AgrK b \<in> analz ?C"
[PROOF STATE]
proof (state)
this:
Pri_AgrK b \<in> analz (A \<union> spies evsFR4)

goal (2 subgoals):
 1. Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
 2. Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Pri_AgrK b \<in> analz (A \<union> spies evsFR4)

goal (2 subgoals):
 1. Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
 2. Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
from this
[PROOF STATE]
proof (chain)
picking this:
Pri_AgrK b \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
have "Pri_AgrK g \<in> analz ?C"
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK b \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
by (rule analz.Auth_Fst [OF G])
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal (2 subgoals):
 1. Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
 2. Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
Pri_AgrK b \<in> analz (A \<union> spies evsFR4)
Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
show ?R
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK b \<in> analz (A \<union> spies evsFR4)
Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
assume "Pri_AgrK g \<in> analz ?C"
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
from this
[PROOF STATE]
proof (chain)
picking this:
Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
have "Pri_AgrK b \<in> analz ?C"
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK b \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
by (rule analz.Auth_Snd [OF G])
[PROOF STATE]
proof (state)
this:
Pri_AgrK b \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
Pri_AgrK b \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
show ?R
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
Pri_AgrK b \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
}
[PROOF STATE]
proof (state)
this:
Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
{
[PROOF STATE]
proof (state)
this:
Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
assume "?M' \<in> synth (analz ?C) \<and> Key (sesK (c * f)) \<in> analz ?C"
[PROOF STATE]
proof (state)
this:
\<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4)) \<and> Key (sesK (c * f)) \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
hence "?M' \<in> synth (analz ?C)"
[PROOF STATE]
proof (prove)
using this:
\<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4)) \<and> Key (sesK (c * f)) \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
\<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))

goal (1 subgoal):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
hence "\<lbrace>Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>
        \<in> synth (analz ?C)"
[PROOF STATE]
proof (prove)
using this:
\<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))

goal (1 subgoal):
 1. \<lbrace>Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))
[PROOF STEP]
by (rule synth_analz_snd)
[PROOF STATE]
proof (state)
this:
\<lbrace>Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))

goal (1 subgoal):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
hence "Auth_Data g b \<in> synth (analz ?C)"
[PROOF STATE]
proof (prove)
using this:
\<lbrace>Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))

goal (1 subgoal):
 1. Auth_Data g b \<in> synth (analz (A \<union> spies evsFR4))
[PROOF STEP]
by (rule synth_analz_fst)
[PROOF STATE]
proof (state)
this:
Auth_Data g b \<in> synth (analz (A \<union> spies evsFR4))

goal (1 subgoal):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
hence "Auth_Data g b \<in> analz ?C \<or>
        Pri_AgrK g \<in> analz ?C \<and> Pri_AgrK b \<in> analz ?C"
[PROOF STATE]
proof (prove)
using this:
Auth_Data g b \<in> synth (analz (A \<union> spies evsFR4))

goal (1 subgoal):
 1. Auth_Data g b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
by (rule synth_auth_data)
[PROOF STATE]
proof (state)
this:
Auth_Data g b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Auth_Data g b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
{
[PROOF STATE]
proof (state)
this:
Auth_Data g b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
assume G: "Auth_Data g b \<in> analz ?C"
[PROOF STATE]
proof (state)
this:
Auth_Data g b \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
have ?R
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
proof (rule disjE [OF \<open>?Q\<close>])
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
 2. Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
assume "Pri_AgrK b \<in> analz ?C"
[PROOF STATE]
proof (state)
this:
Pri_AgrK b \<in> analz (A \<union> spies evsFR4)

goal (2 subgoals):
 1. Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
 2. Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Pri_AgrK b \<in> analz (A \<union> spies evsFR4)

goal (2 subgoals):
 1. Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
 2. Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
from this
[PROOF STATE]
proof (chain)
picking this:
Pri_AgrK b \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
have "Pri_AgrK g \<in> analz ?C"
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK b \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
by (rule analz.Auth_Fst [OF G])
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal (2 subgoals):
 1. Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
 2. Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
Pri_AgrK b \<in> analz (A \<union> spies evsFR4)
Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
show ?R
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK b \<in> analz (A \<union> spies evsFR4)
Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
assume "Pri_AgrK g \<in> analz ?C"
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
from this
[PROOF STATE]
proof (chain)
picking this:
Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
have "Pri_AgrK b \<in> analz ?C"
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK b \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
by (rule analz.Auth_Snd [OF G])
[PROOF STATE]
proof (state)
this:
Pri_AgrK b \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
Pri_AgrK b \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
show ?R
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
Pri_AgrK b \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
}
[PROOF STATE]
proof (state)
this:
Auth_Data g b \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Auth_Data g b \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
{
[PROOF STATE]
proof (state)
this:
Auth_Data g b \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
assume "Pri_AgrK g \<in> analz ?C \<and> Pri_AgrK b \<in> analz ?C"
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
hence ?R
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
}
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
Auth_Data g b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)
Auth_Data g b \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
have ?R
[PROOF STATE]
proof (prove)
using this:
Auth_Data g b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)
Auth_Data g b \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
}
[PROOF STATE]
proof (state)
this:
\<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4)) \<and> Key (sesK (c * f)) \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4) \<or> \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4)) \<and> Key (sesK (c * f)) \<in> analz (A \<union> spies evsFR4)
Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
\<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4)) \<and> Key (sesK (c * f)) \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
show ?R
[PROOF STATE]
proof (prove)
using this:
Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4) \<or> \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4)) \<and> Key (sesK (c * f)) \<in> analz (A \<union> spies evsFR4)
Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
\<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4)) \<and> Key (sesK (c * f)) \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4) \<longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal (5 subgoals):
 1. \<And>evsFR4 S A U m n run s a b c f g H. \<lbrakk>(evsFR4, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4); 0 < m; NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 2. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 3. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 4. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 5. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
show "H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow>
    analz (insert (Crypt (sesK (c * f)) ?M') ?B) =
    H \<union> analz (insert (Crypt (sesK (c * f)) ?M') ?C)"
    (is "_ \<longrightarrow> ?T")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
proof
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
assume G: "H \<subseteq> range Key \<union> range Pri_AgrK - U"
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
with A
[PROOF STATE]
proof (chain)
picking this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsFR4) = ?H \<union> analz (A \<union> spies evsFR4)
H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
have H: "analz ?B = H \<union> analz ?C"
[PROOF STATE]
proof (prove)
using this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsFR4) = ?H \<union> analz (A \<union> spies evsFR4)
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
have I: "Key (pubSK CA) \<in> analz ?C"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Key (pubSK CA) \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
using B
[PROOF STATE]
proof (prove)
using this:
(evsFR4, S, A, U) \<in> protocol

goal (1 subgoal):
 1. Key (pubSK CA) \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
by (rule pr_valid_key_analz)
[PROOF STATE]
proof (state)
this:
Key (pubSK CA) \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
hence J: "analz (insert (Crypt (priSK CA) ?H) ?C) =
      {Crypt (priSK CA) ?H, ?H} \<union> analz ?C"
[PROOF STATE]
proof (prove)
using this:
Key (pubSK CA) \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4)) = {Crypt (priSK CA) (Hash (pubAK g)), Hash (pubAK g)} \<union> analz (A \<union> spies evsFR4)
[PROOF STEP]
by (simp add: analz_crypt_in analz_simp_insert_2)
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4)) = {Crypt (priSK CA) (Hash (pubAK g)), Hash (pubAK g)} \<union> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
have "Key (pubSK CA) \<in> analz ?B"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Key (pubSK CA) \<in> analz (H \<union> A \<union> spies evsFR4)
[PROOF STEP]
by (rule subsetD [OF _ I], rule analz_mono, blast)
[PROOF STATE]
proof (state)
this:
Key (pubSK CA) \<in> analz (H \<union> A \<union> spies evsFR4)

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
hence K: "analz (insert (Crypt (priSK CA) ?H) ?B) =
      {Crypt (priSK CA) ?H, ?H} \<union> analz ?B"
[PROOF STATE]
proof (prove)
using this:
Key (pubSK CA) \<in> analz (H \<union> A \<union> spies evsFR4)

goal (1 subgoal):
 1. analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4)) = {Crypt (priSK CA) (Hash (pubAK g)), Hash (pubAK g)} \<union> analz (H \<union> A \<union> spies evsFR4)
[PROOF STEP]
by (simp add: analz_crypt_in analz_simp_insert_2)
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4)) = {Crypt (priSK CA) (Hash (pubAK g)), Hash (pubAK g)} \<union> analz (H \<union> A \<union> spies evsFR4)

goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
show ?T
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
proof (cases "Key (invK (sesK (c * f))) \<in> analz ?C",
     cases "Pri_AgrK g \<in> analz ?C \<or> Pri_AgrK b \<in> analz ?C", simp_all)
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 2. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<notin> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<notin> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 3. Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4) \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
assume L: "Key (invK (sesK (c * f))) \<in> analz ?C"
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4)

goal (3 subgoals):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 2. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<notin> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<notin> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 3. Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4) \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
have M: "Key (invK (sesK (c * f))) \<in> analz ?B"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Key (invK (sesK (c * f))) \<in> analz (H \<union> A \<union> spies evsFR4)
[PROOF STEP]
by (rule subsetD [OF _ L], rule analz_mono, blast)
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (c * f))) \<in> analz (H \<union> A \<union> spies evsFR4)

goal (3 subgoals):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 2. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<notin> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<notin> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 3. Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4) \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
assume N: "Pri_AgrK g \<in> analz ?C \<or> Pri_AgrK b \<in> analz ?C"
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)

goal (3 subgoals):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 2. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<notin> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<notin> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 3. Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4) \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
hence O: "Pri_AgrK g \<in> analz (insert (Crypt (priSK CA) ?H) ?C) \<or>
        Pri_AgrK b \<in> analz (insert (Crypt (priSK CA) ?H) ?C)"
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4)) \<or> Pri_AgrK b \<in> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4))
[PROOF STEP]
using J
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)
analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4)) = {Crypt (priSK CA) (Hash (pubAK g)), Hash (pubAK g)} \<union> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4)) \<or> Pri_AgrK b \<in> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<in> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4)) \<or> Pri_AgrK b \<in> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4))

goal (3 subgoals):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 2. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<notin> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<notin> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 3. Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4) \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
have "Pri_AgrK g \<in> analz ?B \<or> Pri_AgrK b \<in> analz ?B"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Pri_AgrK g \<in> analz (H \<union> A \<union> spies evsFR4) \<or> Pri_AgrK b \<in> analz (H \<union> A \<union> spies evsFR4)
[PROOF STEP]
using H and N
[PROOF STATE]
proof (prove)
using this:
analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4)
Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> analz (H \<union> A \<union> spies evsFR4) \<or> Pri_AgrK b \<in> analz (H \<union> A \<union> spies evsFR4)
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<in> analz (H \<union> A \<union> spies evsFR4) \<or> Pri_AgrK b \<in> analz (H \<union> A \<union> spies evsFR4)

goal (3 subgoals):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 2. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<notin> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<notin> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 3. Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4) \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
hence P: "Pri_AgrK g \<in> analz (insert (Crypt (priSK CA) ?H) ?B) \<or>
        Pri_AgrK b \<in> analz (insert (Crypt (priSK CA) ?H) ?B)"
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK g \<in> analz (H \<union> A \<union> spies evsFR4) \<or> Pri_AgrK b \<in> analz (H \<union> A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4)) \<or> Pri_AgrK b \<in> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4))
[PROOF STEP]
using K
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK g \<in> analz (H \<union> A \<union> spies evsFR4) \<or> Pri_AgrK b \<in> analz (H \<union> A \<union> spies evsFR4)
analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4)) = {Crypt (priSK CA) (Hash (pubAK g)), Hash (pubAK g)} \<union> analz (H \<union> A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4)) \<or> Pri_AgrK b \<in> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<in> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4)) \<or> Pri_AgrK b \<in> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4))

goal (3 subgoals):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 2. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<notin> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<notin> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 3. Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4) \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
have Q: "Pri_AgrK b \<in> analz ?C \<and> Pri_AgrK g \<in> analz ?C"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
using F and L and N
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4) \<longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<longrightarrow> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4)
Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal (3 subgoals):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 2. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<notin> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<notin> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 3. Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4) \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
hence "Pri_AgrK g \<in> analz (insert (Crypt (priSK CA) ?H) ?C)"
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4))
[PROOF STEP]
using J
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4)) = {Crypt (priSK CA) (Hash (pubAK g)), Hash (pubAK g)} \<union> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<in> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4))

goal (3 subgoals):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 2. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<notin> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<notin> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 3. Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4) \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
hence R: "Pri_AgrK g \<in> analz (insert (Pri_AgrK b)
        (insert (Crypt (priSK CA) ?H) ?C))"
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK g \<in> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4))

goal (1 subgoal):
 1. Pri_AgrK g \<in> analz (insert (Pri_AgrK b) (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4)))
[PROOF STEP]
by (rule rev_subsetD, rule_tac analz_mono, blast)
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<in> analz (insert (Pri_AgrK b) (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4)))

goal (3 subgoals):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 2. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<notin> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<notin> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 3. Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4) \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
have S: "Pri_AgrK b \<in> analz (insert (Crypt (priSK CA) ?H) ?C)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Pri_AgrK b \<in> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4))
[PROOF STEP]
using J and Q
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4)) = {Crypt (priSK CA) (Hash (pubAK g)), Hash (pubAK g)} \<union> analz (A \<union> spies evsFR4)
Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK b \<in> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Pri_AgrK b \<in> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4))

goal (3 subgoals):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 2. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<notin> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<notin> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 3. Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4) \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
have T: "Pri_AgrK b \<in> analz ?B \<and> Pri_AgrK g \<in> analz ?B"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Pri_AgrK b \<in> analz (H \<union> A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (H \<union> A \<union> spies evsFR4)
[PROOF STEP]
using H and Q
[PROOF STATE]
proof (prove)
using this:
analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4)
Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK b \<in> analz (H \<union> A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (H \<union> A \<union> spies evsFR4)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Pri_AgrK b \<in> analz (H \<union> A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (H \<union> A \<union> spies evsFR4)

goal (3 subgoals):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 2. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<notin> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<notin> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 3. Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4) \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
hence "Pri_AgrK g \<in> analz (insert (Crypt (priSK CA) ?H) ?B)"
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK b \<in> analz (H \<union> A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (H \<union> A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4))
[PROOF STEP]
using K
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK b \<in> analz (H \<union> A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (H \<union> A \<union> spies evsFR4)
analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4)) = {Crypt (priSK CA) (Hash (pubAK g)), Hash (pubAK g)} \<union> analz (H \<union> A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<in> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4))

goal (3 subgoals):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 2. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<notin> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<notin> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 3. Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4) \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
hence U: "Pri_AgrK g \<in> analz (insert (Pri_AgrK b)
        (insert (Crypt (priSK CA) ?H) ?B))"
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK g \<in> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4))

goal (1 subgoal):
 1. Pri_AgrK g \<in> analz (insert (Pri_AgrK b) (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4)))
[PROOF STEP]
by (rule rev_subsetD, rule_tac analz_mono, blast)
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<in> analz (insert (Pri_AgrK b) (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4)))

goal (3 subgoals):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 2. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<notin> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<notin> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 3. Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4) \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
have V: "Pri_AgrK b \<in> analz (insert (Crypt (priSK CA) ?H) ?B)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Pri_AgrK b \<in> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4))
[PROOF STEP]
using K and T
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4)) = {Crypt (priSK CA) (Hash (pubAK g)), Hash (pubAK g)} \<union> analz (H \<union> A \<union> spies evsFR4)
Pri_AgrK b \<in> analz (H \<union> A \<union> spies evsFR4) \<and> Pri_AgrK g \<in> analz (H \<union> A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK b \<in> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Pri_AgrK b \<in> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4))

goal (3 subgoals):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 2. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<notin> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<notin> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 3. Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4) \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
show ?T
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
proof (simp add: analz_crypt_in analz_mpair analz_simp_insert_2 L M,
       rule equalityI, (rule_tac [!] insert_mono)+)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. analz (insert (Auth_Data g b) (insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (H \<union> A \<union> spies evsFR4))) \<subseteq> H \<union> analz (insert (Auth_Data g b) (insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (A \<union> spies evsFR4)))
 2. H \<union> analz (insert (Auth_Data g b) (insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (A \<union> spies evsFR4))) \<subseteq> analz (insert (Auth_Data g b) (insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (H \<union> A \<union> spies evsFR4)))
[PROOF STEP]
show "analz (insert (Auth_Data g b) (insert ?M ?B)) \<subseteq>
          H \<union> analz (insert (Auth_Data g b) (insert ?M ?C))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. analz (insert (Auth_Data g b) (insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (H \<union> A \<union> spies evsFR4))) \<subseteq> H \<union> analz (insert (Auth_Data g b) (insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (A \<union> spies evsFR4)))
[PROOF STEP]
proof (subst (1 2) insert_commute, simp add: analz_mpair analz_simp_insert_2
         del: Un_insert_right, subst (1 3) insert_commute,
         subst analz_auth_data_in [OF P], subst analz_auth_data_in [OF O],
         simp del: Un_insert_right)
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. analz (insert (Pri_AgrK g) (insert (Pri_AgrK b) (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4)))) \<subseteq> H \<union> insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (insert (pubAK g) (insert (Auth_Data g b) (analz (insert (Pri_AgrK g) (insert (Pri_AgrK b) (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4)))))))
[PROOF STEP]
show
           "analz (insert (Pri_AgrK g) (insert (Pri_AgrK b)
              (insert (Crypt (priSK CA) ?H) ?B))) \<subseteq>
            H \<union> insert ?M (insert (pubAK g) (insert (Auth_Data g b)
              (analz (insert (Pri_AgrK g) (insert (Pri_AgrK b)
                (insert (Crypt (priSK CA) ?H) ?C))))))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. analz (insert (Pri_AgrK g) (insert (Pri_AgrK b) (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4)))) \<subseteq> H \<union> insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (insert (pubAK g) (insert (Auth_Data g b) (analz (insert (Pri_AgrK g) (insert (Pri_AgrK b) (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4)))))))
[PROOF STEP]
proof (subst analz_simp_insert_1 [OF U], subst analz_simp_insert_1 [OF V],
           subst analz_simp_insert_1 [OF R], subst analz_simp_insert_1 [OF S])
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4)) \<subseteq> H \<union> insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (insert (pubAK g) (insert (Auth_Data g b) (analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4)))))
[PROOF STEP]
qed (auto simp add: H J K)
[PROOF STATE]
proof (state)
this:
analz (insert (Pri_AgrK g) (insert (Pri_AgrK b) (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4)))) \<subseteq> H \<union> insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (insert (pubAK g) (insert (Auth_Data g b) (analz (insert (Pri_AgrK g) (insert (Pri_AgrK b) (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4)))))))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
analz (insert (Auth_Data g b) (insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (H \<union> A \<union> spies evsFR4))) \<subseteq> H \<union> analz (insert (Auth_Data g b) (insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (A \<union> spies evsFR4)))

goal (1 subgoal):
 1. H \<union> analz (insert (Auth_Data g b) (insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (A \<union> spies evsFR4))) \<subseteq> analz (insert (Auth_Data g b) (insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (H \<union> A \<union> spies evsFR4)))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. H \<union> analz (insert (Auth_Data g b) (insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (A \<union> spies evsFR4))) \<subseteq> analz (insert (Auth_Data g b) (insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (H \<union> A \<union> spies evsFR4)))
[PROOF STEP]
show "H \<union> analz (insert (Auth_Data g b) (insert ?M ?C)) \<subseteq>
          analz (insert (Auth_Data g b) (insert ?M ?B))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. H \<union> analz (insert (Auth_Data g b) (insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (A \<union> spies evsFR4))) \<subseteq> analz (insert (Auth_Data g b) (insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (H \<union> A \<union> spies evsFR4)))
[PROOF STEP]
proof (subst (1 2) insert_commute, simp add: analz_mpair analz_simp_insert_2
         del: Un_insert_right Un_subset_iff semilattice_sup_class.sup.bounded_iff,
         subst (2 4) insert_commute, subst analz_auth_data_in [OF O],
         subst analz_auth_data_in [OF P], simp only: Un_insert_left Un_empty_left)
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. H \<union> insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (insert (pubAK g) (insert (Auth_Data g b) (analz (insert (Pri_AgrK g) (insert (Pri_AgrK b) (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4))))))) \<subseteq> insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (insert (pubAK g) (insert (Auth_Data g b) (analz (insert (Pri_AgrK g) (insert (Pri_AgrK b) (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4)))))))
[PROOF STEP]
show
           "H \<union> insert ?M (insert (pubAK g) (insert (Auth_Data g b)
              (analz (insert (Pri_AgrK g) (insert (Pri_AgrK b)
                (insert (Crypt (priSK CA) ?H) ?C)))))) \<subseteq>
            insert ?M (insert (pubAK g) (insert (Auth_Data g b)
              (analz (insert (Pri_AgrK g) (insert (Pri_AgrK b)
                (insert (Crypt (priSK CA) ?H) ?B))))))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. H \<union> insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (insert (pubAK g) (insert (Auth_Data g b) (analz (insert (Pri_AgrK g) (insert (Pri_AgrK b) (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4))))))) \<subseteq> insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (insert (pubAK g) (insert (Auth_Data g b) (analz (insert (Pri_AgrK g) (insert (Pri_AgrK b) (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4)))))))
[PROOF STEP]
proof (subst analz_simp_insert_1 [OF R], subst analz_simp_insert_1 [OF S],
           subst analz_simp_insert_1 [OF U], subst analz_simp_insert_1 [OF V])
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. H \<union> insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (insert (pubAK g) (insert (Auth_Data g b) (analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4))))) \<subseteq> insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (insert (pubAK g) (insert (Auth_Data g b) (analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4)))))
[PROOF STEP]
qed (auto simp add: H J K)
[PROOF STATE]
proof (state)
this:
H \<union> insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (insert (pubAK g) (insert (Auth_Data g b) (analz (insert (Pri_AgrK g) (insert (Pri_AgrK b) (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4))))))) \<subseteq> insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (insert (pubAK g) (insert (Auth_Data g b) (analz (insert (Pri_AgrK g) (insert (Pri_AgrK b) (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4)))))))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
H \<union> analz (insert (Auth_Data g b) (insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (A \<union> spies evsFR4))) \<subseteq> analz (insert (Auth_Data g b) (insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (H \<union> A \<union> spies evsFR4)))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))

goal (2 subgoals):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<notin> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<notin> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 2. Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4) \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<notin> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<notin> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 2. Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4) \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
assume L: "Key (invK (sesK (c * f))) \<in> analz ?C"
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4)

goal (2 subgoals):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<notin> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<notin> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 2. Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4) \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
have M: "Key (invK (sesK (c * f))) \<in> analz ?B"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Key (invK (sesK (c * f))) \<in> analz (H \<union> A \<union> spies evsFR4)
[PROOF STEP]
by (rule subsetD [OF _ L], rule analz_mono, blast)
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (c * f))) \<in> analz (H \<union> A \<union> spies evsFR4)

goal (2 subgoals):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<notin> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<notin> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 2. Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4) \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
assume N: "Pri_AgrK g \<notin> analz ?C \<and> Pri_AgrK b \<notin> analz ?C"
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<notin> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<notin> analz (A \<union> spies evsFR4)

goal (2 subgoals):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<notin> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<notin> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 2. Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4) \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
hence O: "Pri_AgrK g \<notin> analz (insert (Crypt (priSK CA) ?H) ?C)"
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK g \<notin> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<notin> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<notin> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4))
[PROOF STEP]
using J
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK g \<notin> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<notin> analz (A \<union> spies evsFR4)
analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4)) = {Crypt (priSK CA) (Hash (pubAK g)), Hash (pubAK g)} \<union> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<notin> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<notin> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4))

goal (2 subgoals):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<notin> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<notin> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 2. Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4) \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
have P: "Pri_AgrK b \<notin> analz (insert (Crypt (priSK CA) ?H) ?C)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Pri_AgrK b \<notin> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4))
[PROOF STEP]
using J and N
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4)) = {Crypt (priSK CA) (Hash (pubAK g)), Hash (pubAK g)} \<union> analz (A \<union> spies evsFR4)
Pri_AgrK g \<notin> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<notin> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK b \<notin> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Pri_AgrK b \<notin> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4))

goal (2 subgoals):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<notin> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<notin> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 2. Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4) \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
have Q: "Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
have "Crypt (sesK (c * f)) ?M' \<in> analz ?C \<or>
          ?M' \<in> synth (analz ?C) \<and> Key (sesK (c * f)) \<in> analz ?C"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4) \<or> \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4)) \<and> Key (sesK (c * f)) \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
using E
[PROOF STATE]
proof (prove)
using this:
Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))

goal (1 subgoal):
 1. Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4) \<or> \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4)) \<and> Key (sesK (c * f)) \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
by (rule synth_crypt)
[PROOF STATE]
proof (state)
this:
Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4) \<or> \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4)) \<and> Key (sesK (c * f)) \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4) \<or> \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4)) \<and> Key (sesK (c * f)) \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
{
[PROOF STATE]
proof (state)
this:
Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4) \<or> \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4)) \<and> Key (sesK (c * f)) \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
assume "Crypt (sesK (c * f)) ?M' \<in> analz ?C"
[PROOF STATE]
proof (state)
this:
Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
hence "Crypt (sesK (c * f)) ?M' \<in> parts ?C"
[PROOF STATE]
proof (prove)
using this:
Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> parts (A \<union> spies evsFR4)
[PROOF STEP]
by (rule subsetD [OF analz_parts_subset])
[PROOF STATE]
proof (state)
this:
Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> parts (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
hence "?M' \<in> parts ?C"
[PROOF STATE]
proof (prove)
using this:
Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> parts (A \<union> spies evsFR4)

goal (1 subgoal):
 1. \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> parts (A \<union> spies evsFR4)
[PROOF STEP]
by (rule parts.Body)
[PROOF STATE]
proof (state)
this:
\<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> parts (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
hence "\<lbrace>Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>
            \<in> parts ?C"
[PROOF STATE]
proof (prove)
using this:
\<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> parts (A \<union> spies evsFR4)

goal (1 subgoal):
 1. \<lbrace>Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> parts (A \<union> spies evsFR4)
[PROOF STEP]
by (rule parts.Snd)
[PROOF STATE]
proof (state)
this:
\<lbrace>Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> parts (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
hence R: "Auth_Data g b \<in> parts ?C"
[PROOF STATE]
proof (prove)
using this:
\<lbrace>Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> parts (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Auth_Data g b \<in> parts (A \<union> spies evsFR4)
[PROOF STEP]
by (rule parts.Fst)
[PROOF STATE]
proof (state)
this:
Auth_Data g b \<in> parts (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
hence "Pri_AgrK g \<in> parts ?C"
[PROOF STATE]
proof (prove)
using this:
Auth_Data g b \<in> parts (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> parts (A \<union> spies evsFR4)
[PROOF STEP]
by (rule parts.Auth_Fst)
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<in> parts (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
hence "Pri_AgrK g \<in> U"
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK g \<in> parts (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> U
[PROOF STEP]
by (rule contrapos_pp, rule_tac pr_pri_agrk_parts [OF B])
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<in> U

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<in> U

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
have "Pri_AgrK b \<in> parts ?C"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Pri_AgrK b \<in> parts (A \<union> spies evsFR4)
[PROOF STEP]
using R
[PROOF STATE]
proof (prove)
using this:
Auth_Data g b \<in> parts (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK b \<in> parts (A \<union> spies evsFR4)
[PROOF STEP]
by (rule parts.Auth_Snd)
[PROOF STATE]
proof (state)
this:
Pri_AgrK b \<in> parts (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
hence "Pri_AgrK b \<in> U"
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK b \<in> parts (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK b \<in> U
[PROOF STEP]
by (rule contrapos_pp, rule_tac pr_pri_agrk_parts [OF B])
[PROOF STATE]
proof (state)
this:
Pri_AgrK b \<in> U

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
Pri_AgrK g \<in> U
Pri_AgrK b \<in> U
[PROOF STEP]
have ?thesis
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK g \<in> U
Pri_AgrK b \<in> U

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
}
[PROOF STATE]
proof (state)
this:
Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
{
[PROOF STATE]
proof (state)
this:
Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
assume "?M' \<in> synth (analz ?C) \<and>
            Key (sesK (c * f)) \<in> analz ?C"
[PROOF STATE]
proof (state)
this:
\<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4)) \<and> Key (sesK (c * f)) \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
hence "?M' \<in> synth (analz ?C)"
[PROOF STATE]
proof (prove)
using this:
\<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4)) \<and> Key (sesK (c * f)) \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
\<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
hence "\<lbrace>Auth_Data g b, pubAK g,
            Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz ?C)"
[PROOF STATE]
proof (prove)
using this:
\<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))

goal (1 subgoal):
 1. \<lbrace>Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))
[PROOF STEP]
by (rule synth_analz_snd)
[PROOF STATE]
proof (state)
this:
\<lbrace>Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
hence "Auth_Data g b \<in> synth (analz ?C)"
[PROOF STATE]
proof (prove)
using this:
\<lbrace>Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4))

goal (1 subgoal):
 1. Auth_Data g b \<in> synth (analz (A \<union> spies evsFR4))
[PROOF STEP]
by (rule synth_analz_fst)
[PROOF STATE]
proof (state)
this:
Auth_Data g b \<in> synth (analz (A \<union> spies evsFR4))

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
hence "Auth_Data g b \<in> analz ?C \<or>
            Pri_AgrK g \<in> analz ?C \<and> Pri_AgrK b \<in> analz ?C"
[PROOF STATE]
proof (prove)
using this:
Auth_Data g b \<in> synth (analz (A \<union> spies evsFR4))

goal (1 subgoal):
 1. Auth_Data g b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
by (rule synth_auth_data)
[PROOF STATE]
proof (state)
this:
Auth_Data g b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Auth_Data g b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
{
[PROOF STATE]
proof (state)
this:
Auth_Data g b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
assume "Auth_Data g b \<in> analz ?C"
[PROOF STATE]
proof (state)
this:
Auth_Data g b \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
hence R: "Auth_Data g b \<in> parts ?C"
[PROOF STATE]
proof (prove)
using this:
Auth_Data g b \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Auth_Data g b \<in> parts (A \<union> spies evsFR4)
[PROOF STEP]
by (rule subsetD [OF analz_parts_subset])
[PROOF STATE]
proof (state)
this:
Auth_Data g b \<in> parts (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
hence "Pri_AgrK g \<in> parts ?C"
[PROOF STATE]
proof (prove)
using this:
Auth_Data g b \<in> parts (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> parts (A \<union> spies evsFR4)
[PROOF STEP]
by (rule parts.Auth_Fst)
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<in> parts (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
hence "Pri_AgrK g \<in> U"
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK g \<in> parts (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> U
[PROOF STEP]
by (rule contrapos_pp, rule_tac pr_pri_agrk_parts [OF B])
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<in> U

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<in> U

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
have "Pri_AgrK b \<in> parts ?C"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Pri_AgrK b \<in> parts (A \<union> spies evsFR4)
[PROOF STEP]
using R
[PROOF STATE]
proof (prove)
using this:
Auth_Data g b \<in> parts (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK b \<in> parts (A \<union> spies evsFR4)
[PROOF STEP]
by (rule parts.Auth_Snd)
[PROOF STATE]
proof (state)
this:
Pri_AgrK b \<in> parts (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
hence "Pri_AgrK b \<in> U"
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK b \<in> parts (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK b \<in> U
[PROOF STEP]
by (rule contrapos_pp, rule_tac pr_pri_agrk_parts [OF B])
[PROOF STATE]
proof (state)
this:
Pri_AgrK b \<in> U

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
Pri_AgrK g \<in> U
Pri_AgrK b \<in> U
[PROOF STEP]
have ?thesis
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK g \<in> U
Pri_AgrK b \<in> U

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
}
[PROOF STATE]
proof (state)
this:
Auth_Data g b \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Auth_Data g b \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
{
[PROOF STATE]
proof (state)
this:
Auth_Data g b \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
assume R: "Pri_AgrK g \<in> analz ?C \<and> Pri_AgrK b \<in> analz ?C"
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
hence "Pri_AgrK g \<in> analz ?C"
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
hence "Pri_AgrK g \<in> parts ?C"
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK g \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> parts (A \<union> spies evsFR4)
[PROOF STEP]
by (rule subsetD [OF analz_parts_subset])
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<in> parts (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
hence "Pri_AgrK g \<in> U"
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK g \<in> parts (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> U
[PROOF STEP]
by (rule contrapos_pp, rule_tac pr_pri_agrk_parts [OF B])
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<in> U

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<in> U

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
have "Pri_AgrK b \<in> analz ?C"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Pri_AgrK b \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
using R
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK b \<in> analz (A \<union> spies evsFR4)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
Pri_AgrK b \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
hence "Pri_AgrK b \<in> parts ?C"
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK b \<in> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK b \<in> parts (A \<union> spies evsFR4)
[PROOF STEP]
by (rule subsetD [OF analz_parts_subset])
[PROOF STATE]
proof (state)
this:
Pri_AgrK b \<in> parts (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
hence "Pri_AgrK b \<in> U"
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK b \<in> parts (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK b \<in> U
[PROOF STEP]
by (rule contrapos_pp, rule_tac pr_pri_agrk_parts [OF B])
[PROOF STATE]
proof (state)
this:
Pri_AgrK b \<in> U

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
Pri_AgrK g \<in> U
Pri_AgrK b \<in> U
[PROOF STEP]
have ?thesis
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK g \<in> U
Pri_AgrK b \<in> U

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
}
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
Auth_Data g b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)
Auth_Data g b \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
have ?thesis
[PROOF STATE]
proof (prove)
using this:
Auth_Data g b \<in> analz (A \<union> spies evsFR4) \<or> Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR4)
Auth_Data g b \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
Pri_AgrK g \<in> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
}
[PROOF STATE]
proof (state)
this:
\<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4)) \<and> Key (sesK (c * f)) \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4) \<or> \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4)) \<and> Key (sesK (c * f)) \<in> analz (A \<union> spies evsFR4)
Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
\<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4)) \<and> Key (sesK (c * f)) \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4) \<or> \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4)) \<and> Key (sesK (c * f)) \<in> analz (A \<union> spies evsFR4)
Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
\<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> \<in> synth (analz (A \<union> spies evsFR4)) \<and> Key (sesK (c * f)) \<in> analz (A \<union> spies evsFR4) \<Longrightarrow> Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U

goal (1 subgoal):
 1. Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<in> U \<and> Pri_AgrK b \<in> U

goal (2 subgoals):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<notin> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<notin> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 2. Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4) \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
have R: "Pri_AgrK g \<notin> analz ?B \<and> Pri_AgrK b \<notin> analz ?B"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Pri_AgrK g \<notin> analz (H \<union> A \<union> spies evsFR4) \<and> Pri_AgrK b \<notin> analz (H \<union> A \<union> spies evsFR4)
[PROOF STEP]
proof (simp add: H N, rule conjI, rule_tac [!] notI, drule_tac [!] subsetD [OF G])
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. Pri_AgrK g \<in> range Key \<union> range Pri_AgrK - U \<Longrightarrow> False
 2. Pri_AgrK b \<in> range Key \<union> range Pri_AgrK - U \<Longrightarrow> False
[PROOF STEP]
qed (simp_all add: Q)
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<notin> analz (H \<union> A \<union> spies evsFR4) \<and> Pri_AgrK b \<notin> analz (H \<union> A \<union> spies evsFR4)

goal (2 subgoals):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<notin> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<notin> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 2. Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4) \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
hence S: "Pri_AgrK g \<notin> analz (insert (Crypt (priSK CA) ?H) ?B)"
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK g \<notin> analz (H \<union> A \<union> spies evsFR4) \<and> Pri_AgrK b \<notin> analz (H \<union> A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<notin> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4))
[PROOF STEP]
using K
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK g \<notin> analz (H \<union> A \<union> spies evsFR4) \<and> Pri_AgrK b \<notin> analz (H \<union> A \<union> spies evsFR4)
analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4)) = {Crypt (priSK CA) (Hash (pubAK g)), Hash (pubAK g)} \<union> analz (H \<union> A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK g \<notin> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Pri_AgrK g \<notin> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4))

goal (2 subgoals):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<notin> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<notin> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 2. Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4) \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
have T: "Pri_AgrK b \<notin> analz (insert (Crypt (priSK CA) ?H) ?B)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Pri_AgrK b \<notin> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4))
[PROOF STEP]
using K and R
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4)) = {Crypt (priSK CA) (Hash (pubAK g)), Hash (pubAK g)} \<union> analz (H \<union> A \<union> spies evsFR4)
Pri_AgrK g \<notin> analz (H \<union> A \<union> spies evsFR4) \<and> Pri_AgrK b \<notin> analz (H \<union> A \<union> spies evsFR4)

goal (1 subgoal):
 1. Pri_AgrK b \<notin> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Pri_AgrK b \<notin> analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4))

goal (2 subgoals):
 1. \<lbrakk>Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR4); Pri_AgrK g \<notin> analz (A \<union> spies evsFR4) \<and> Pri_AgrK b \<notin> analz (A \<union> spies evsFR4)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
 2. Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4) \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
show ?T
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
proof (simp add: analz_crypt_in analz_mpair analz_simp_insert_2 L M,
       rule equalityI, (rule_tac [!] insert_mono)+)
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. analz (insert (Auth_Data g b) (insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (H \<union> A \<union> spies evsFR4))) \<subseteq> H \<union> analz (insert (Auth_Data g b) (insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (A \<union> spies evsFR4)))
 2. H \<union> analz (insert (Auth_Data g b) (insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (A \<union> spies evsFR4))) \<subseteq> analz (insert (Auth_Data g b) (insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (H \<union> A \<union> spies evsFR4)))
[PROOF STEP]
show "analz (insert (Auth_Data g b) (insert ?M ?B)) \<subseteq>
          H \<union> analz (insert (Auth_Data g b) (insert ?M ?C))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. analz (insert (Auth_Data g b) (insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (H \<union> A \<union> spies evsFR4))) \<subseteq> H \<union> analz (insert (Auth_Data g b) (insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (A \<union> spies evsFR4)))
[PROOF STEP]
proof (subst (1 2) insert_commute, simp add: analz_mpair analz_simp_insert_2
         del: Un_insert_right, subst (1 3) insert_commute,
         subst analz_auth_data_out [OF S T], subst analz_auth_data_out [OF O P])
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. insert (Auth_Data g b) (analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4))) \<subseteq> H \<union> insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (insert (pubAK g) (insert (Auth_Data g b) (analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4)))))
[PROOF STEP]
qed (auto simp add: H J K)
[PROOF STATE]
proof (state)
this:
analz (insert (Auth_Data g b) (insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (H \<union> A \<union> spies evsFR4))) \<subseteq> H \<union> analz (insert (Auth_Data g b) (insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (A \<union> spies evsFR4)))

goal (1 subgoal):
 1. H \<union> analz (insert (Auth_Data g b) (insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (A \<union> spies evsFR4))) \<subseteq> analz (insert (Auth_Data g b) (insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (H \<union> A \<union> spies evsFR4)))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. H \<union> analz (insert (Auth_Data g b) (insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (A \<union> spies evsFR4))) \<subseteq> analz (insert (Auth_Data g b) (insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (H \<union> A \<union> spies evsFR4)))
[PROOF STEP]
show "H \<union> analz (insert (Auth_Data g b) (insert ?M ?C)) \<subseteq>
          analz (insert (Auth_Data g b) (insert ?M ?B))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. H \<union> analz (insert (Auth_Data g b) (insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (A \<union> spies evsFR4))) \<subseteq> analz (insert (Auth_Data g b) (insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (H \<union> A \<union> spies evsFR4)))
[PROOF STEP]
proof (subst (1 2) insert_commute, simp add: analz_mpair analz_simp_insert_2
         del: Un_insert_right Un_subset_iff semilattice_sup_class.sup.bounded_iff,
         subst (2 4) insert_commute, subst analz_auth_data_out [OF O P],
         subst analz_auth_data_out [OF S T])
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. H \<union> insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (insert (pubAK g) (insert (Auth_Data g b) (analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (A \<union> spies evsFR4))))) \<subseteq> insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (insert (pubAK g) (insert (Auth_Data g b) (analz (insert (Crypt (priSK CA) (Hash (pubAK g))) (H \<union> A \<union> spies evsFR4)))))
[PROOF STEP]
qed (simp add: H J K)
[PROOF STATE]
proof (state)
this:
H \<union> analz (insert (Auth_Data g b) (insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (A \<union> spies evsFR4))) \<subseteq> analz (insert (Auth_Data g b) (insert \<lbrace>pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace> (H \<union> A \<union> spies evsFR4)))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))

goal (1 subgoal):
 1. Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4) \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4) \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
assume L: "Key (invK (sesK (c * f))) \<notin> analz ?C"
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4) \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
hence "Key (invK (sesK (c * f))) \<notin> analz ?B"
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. Key (invK (sesK (c * f))) \<notin> analz (H \<union> A \<union> spies evsFR4)
[PROOF STEP]
proof (simp add: invK_sesK, insert pr_sesk_user_1 [OF B C D,
       THEN pr_sesk_user_2 [OF B]])
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>Key (sesK (c * f)) \<notin> analz (A \<union> spies evsFR4); Key (sesK (c * f)) \<in> U\<rbrakk> \<Longrightarrow> Key (sesK (c * f)) \<notin> analz (H \<union> A \<union> spies evsFR4)
[PROOF STEP]
qed (rule notI, simp add: H, drule subsetD [OF G], simp)
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (c * f))) \<notin> analz (H \<union> A \<union> spies evsFR4)

goal (1 subgoal):
 1. Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4) \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
hence "analz (insert (Crypt (sesK (c * f)) ?M') ?B) =
        insert (Crypt (sesK (c * f)) ?M') (analz ?B)"
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (c * f))) \<notin> analz (H \<union> A \<union> spies evsFR4)

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (analz (H \<union> A \<union> spies evsFR4))
[PROOF STEP]
by (simp add: analz_crypt_out)
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (analz (H \<union> A \<union> spies evsFR4))

goal (1 subgoal):
 1. Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4) \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (analz (H \<union> A \<union> spies evsFR4))

goal (1 subgoal):
 1. Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4) \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
have "H \<union> analz (insert (Crypt (sesK (c * f)) ?M') ?C) =
        insert (Crypt (sesK (c * f)) ?M') (H \<union> analz ?C)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4)) = insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> analz (A \<union> spies evsFR4))
[PROOF STEP]
using L
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4)) = insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> analz (A \<union> spies evsFR4))
[PROOF STEP]
by (simp add: analz_crypt_out)
[PROOF STATE]
proof (state)
this:
H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4)) = insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> analz (A \<union> spies evsFR4))

goal (1 subgoal):
 1. Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR4) \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (analz (H \<union> A \<union> spies evsFR4))
H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4)) = insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> analz (A \<union> spies evsFR4))
[PROOF STEP]
show ?T
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (analz (H \<union> A \<union> spies evsFR4))
H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4)) = insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> analz (A \<union> spies evsFR4))

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
using H
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (analz (H \<union> A \<union> spies evsFR4))
H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4)) = insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> analz (A \<union> spies evsFR4))
analz (H \<union> A \<union> spies evsFR4) = H \<union> analz (A \<union> spies evsFR4)

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (H \<union> A \<union> spies evsFR4)) = H \<union> analz (insert (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) (A \<union> spies evsFR4))

goal (4 subgoals):
 1. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 2. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 3. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 4. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 2. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 3. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 4. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
fix evsC5 S A U m n run c f H
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 2. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 3. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 4. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
assume
    A: "\<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow>
      analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5)" and
    B: "(evsC5, S, A, U) \<in> protocol" and
    C: "IntAgrK (S (User m, n, run)) = Some c" and
    D: "ExtAgrK (S (User m, n, run)) = Some f"
[PROOF STATE]
proof (state)
this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsC5) = ?H \<union> analz (A \<union> spies evsC5)
(evsC5, S, A, U) \<in> protocol
IntAgrK (S (User m, n, run)) = Some c
ExtAgrK (S (User m, n, run)) = Some f

goal (4 subgoals):
 1. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 2. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 3. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 4. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
let
    ?B = "H \<union> A \<union> spies evsC5" and
    ?C = "A \<union> spies evsC5"
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. \<And>evsC5 S A U m n run s a b c f X g H. \<lbrakk>(evsC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); NonceS (S (User m, n, run)) = Some s; IntMapK (S (User m, n, run)) = Some a; ExtMapK (S (User m, n, run)) = Some b; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Says n run 4 X (User m) (Crypt (sesK (c * f)) \<lbrace>pubAK (c * (s + a * b)), Auth_Data g b, pubAK g, Crypt (priSK CA) (Hash (pubAK g))\<rbrace>) \<in> set evsC5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 2. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 3. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 4. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
show "H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow>
    analz (insert (Crypt (sesK (c * f)) (Passwd m)) ?B) =
    H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) ?C)"
    (is "_ \<longrightarrow> ?T")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
[PROOF STEP]
proof (rule impI, cases "Key (invK (sesK (c * f))) \<in> analz ?C")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsC5)

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
[PROOF STEP]
assume "H \<subseteq> range Key \<union> range Pri_AgrK - U"
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
[PROOF STEP]
with A
[PROOF STATE]
proof (chain)
picking this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsC5) = ?H \<union> analz (A \<union> spies evsC5)
H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
have E: "analz ?B = H \<union> analz ?C"
[PROOF STATE]
proof (prove)
using this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsC5) = ?H \<union> analz (A \<union> spies evsC5)
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5)

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
[PROOF STEP]
have "Key (invK (sesK (c * f))) \<in> analz ?B"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Key (invK (sesK (c * f))) \<in> analz (H \<union> A \<union> spies evsC5)
[PROOF STEP]
by (rule subsetD [OF _ True], rule analz_mono, blast)
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (c * f))) \<in> analz (H \<union> A \<union> spies evsC5)

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
[PROOF STEP]
hence "analz (insert (Crypt (sesK (c * f)) (Passwd m)) ?B) =
      insert (Crypt (sesK (c * f)) (Passwd m)) (insert (Passwd m) (analz ?B))"
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (c * f))) \<in> analz (H \<union> A \<union> spies evsC5)

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = insert (Crypt (sesK (c * f)) (Passwd m)) (insert (Passwd m) (analz (H \<union> A \<union> spies evsC5)))
[PROOF STEP]
by (simp add: analz_crypt_in analz_simp_insert_2)
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = insert (Crypt (sesK (c * f)) (Passwd m)) (insert (Passwd m) (analz (H \<union> A \<union> spies evsC5)))

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = insert (Crypt (sesK (c * f)) (Passwd m)) (insert (Passwd m) (analz (H \<union> A \<union> spies evsC5)))

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
[PROOF STEP]
have "H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) ?C) =
      insert (Crypt (sesK (c * f)) (Passwd m)) (insert (Passwd m) (H \<union> analz ?C))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5)) = insert (Crypt (sesK (c * f)) (Passwd m)) (insert (Passwd m) (H \<union> analz (A \<union> spies evsC5)))
[PROOF STEP]
using True
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsC5)

goal (1 subgoal):
 1. H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5)) = insert (Crypt (sesK (c * f)) (Passwd m)) (insert (Passwd m) (H \<union> analz (A \<union> spies evsC5)))
[PROOF STEP]
by (simp add: analz_crypt_in analz_simp_insert_2)
[PROOF STATE]
proof (state)
this:
H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5)) = insert (Crypt (sesK (c * f)) (Passwd m)) (insert (Passwd m) (H \<union> analz (A \<union> spies evsC5)))

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = insert (Crypt (sesK (c * f)) (Passwd m)) (insert (Passwd m) (analz (H \<union> A \<union> spies evsC5)))
H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5)) = insert (Crypt (sesK (c * f)) (Passwd m)) (insert (Passwd m) (H \<union> analz (A \<union> spies evsC5)))
[PROOF STEP]
show ?T
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = insert (Crypt (sesK (c * f)) (Passwd m)) (insert (Passwd m) (analz (H \<union> A \<union> spies evsC5)))
H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5)) = insert (Crypt (sesK (c * f)) (Passwd m)) (insert (Passwd m) (H \<union> analz (A \<union> spies evsC5)))

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
[PROOF STEP]
using E
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = insert (Crypt (sesK (c * f)) (Passwd m)) (insert (Passwd m) (analz (H \<union> A \<union> spies evsC5)))
H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5)) = insert (Crypt (sesK (c * f)) (Passwd m)) (insert (Passwd m) (H \<union> analz (A \<union> spies evsC5)))
analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5)

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC5)

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC5)

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
[PROOF STEP]
assume E: "H \<subseteq> range Key \<union> range Pri_AgrK - U"
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
[PROOF STEP]
with A
[PROOF STATE]
proof (chain)
picking this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsC5) = ?H \<union> analz (A \<union> spies evsC5)
H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
have F: "analz ?B = H \<union> analz ?C"
[PROOF STATE]
proof (prove)
using this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsC5) = ?H \<union> analz (A \<union> spies evsC5)
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5)

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC5)
analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5)
[PROOF STEP]
have "Key (invK (sesK (c * f))) \<notin> analz ?B"
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC5)
analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5)

goal (1 subgoal):
 1. Key (invK (sesK (c * f))) \<notin> analz (H \<union> A \<union> spies evsC5)
[PROOF STEP]
proof (simp add: invK_sesK, insert pr_sesk_user_1 [OF B C D,
     THEN pr_sesk_user_2 [OF B]])
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>Key (sesK (c * f)) \<notin> analz (A \<union> spies evsC5); analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5); Key (sesK (c * f)) \<in> U\<rbrakk> \<Longrightarrow> Key (sesK (c * f)) \<notin> H
[PROOF STEP]
qed (rule notI, drule subsetD [OF E], simp)
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (c * f))) \<notin> analz (H \<union> A \<union> spies evsC5)

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
[PROOF STEP]
hence "analz (insert (Crypt (sesK (c * f)) (Passwd m)) ?B) =
      insert (Crypt (sesK (c * f)) (Passwd m)) (analz ?B)"
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (c * f))) \<notin> analz (H \<union> A \<union> spies evsC5)

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = insert (Crypt (sesK (c * f)) (Passwd m)) (analz (H \<union> A \<union> spies evsC5))
[PROOF STEP]
by (simp add: analz_crypt_out)
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = insert (Crypt (sesK (c * f)) (Passwd m)) (analz (H \<union> A \<union> spies evsC5))

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = insert (Crypt (sesK (c * f)) (Passwd m)) (analz (H \<union> A \<union> spies evsC5))

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
[PROOF STEP]
have "H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) ?C) =
      insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> analz ?C)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5)) = insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> analz (A \<union> spies evsC5))
[PROOF STEP]
using False
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC5)

goal (1 subgoal):
 1. H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5)) = insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> analz (A \<union> spies evsC5))
[PROOF STEP]
by (simp add: analz_crypt_out)
[PROOF STATE]
proof (state)
this:
H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5)) = insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> analz (A \<union> spies evsC5))

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = insert (Crypt (sesK (c * f)) (Passwd m)) (analz (H \<union> A \<union> spies evsC5))
H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5)) = insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> analz (A \<union> spies evsC5))
[PROOF STEP]
show ?T
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = insert (Crypt (sesK (c * f)) (Passwd m)) (analz (H \<union> A \<union> spies evsC5))
H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5)) = insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> analz (A \<union> spies evsC5))

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
[PROOF STEP]
using F
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = insert (Crypt (sesK (c * f)) (Passwd m)) (analz (H \<union> A \<union> spies evsC5))
H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5)) = insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> analz (A \<union> spies evsC5))
analz (H \<union> A \<union> spies evsC5) = H \<union> analz (A \<union> spies evsC5)

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (H \<union> A \<union> spies evsC5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Passwd m)) (A \<union> spies evsC5))

goal (3 subgoals):
 1. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 2. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 3. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 2. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 3. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
fix evsFC5 S A U n run d e H
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 2. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 3. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
assume
    A: "\<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow>
      analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5)" and
    B: "(evsFC5, S, A, U) \<in> protocol" and
    C: "IntAgrK (S (Card n, n, run)) = Some d" and
    D: "ExtAgrK (S (Card n, n, run)) = Some e"
[PROOF STATE]
proof (state)
this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsFC5) = ?H \<union> analz (A \<union> spies evsFC5)
(evsFC5, S, A, U) \<in> protocol
IntAgrK (S (Card n, n, run)) = Some d
ExtAgrK (S (Card n, n, run)) = Some e

goal (3 subgoals):
 1. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 2. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 3. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
let
    ?B = "H \<union> A \<union> spies evsFC5" and
    ?C = "A \<union> spies evsFC5"
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<And>evsFC5 S A U n run d e H. \<lbrakk>(evsFC5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Crypt (sesK (d * e)) (Passwd n) \<in> synth (analz (A \<union> spies evsFC5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 2. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 3. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
show "H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow>
    analz (insert (Crypt (sesK (d * e)) (Passwd n)) ?B) =
    H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) ?C)"
    (is "_ \<longrightarrow> ?T")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
[PROOF STEP]
proof (rule impI, cases "Key (invK (sesK (d * e))) \<in> analz ?C")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<in> analz (A \<union> spies evsFC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (d * e))) \<in> analz (A \<union> spies evsFC5)

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<in> analz (A \<union> spies evsFC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
[PROOF STEP]
assume "H \<subseteq> range Key \<union> range Pri_AgrK - U"
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<in> analz (A \<union> spies evsFC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
[PROOF STEP]
with A
[PROOF STATE]
proof (chain)
picking this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsFC5) = ?H \<union> analz (A \<union> spies evsFC5)
H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
have E: "analz ?B = H \<union> analz ?C"
[PROOF STATE]
proof (prove)
using this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsFC5) = ?H \<union> analz (A \<union> spies evsFC5)
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5)

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<in> analz (A \<union> spies evsFC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
[PROOF STEP]
have "Key (invK (sesK (d * e))) \<in> analz ?B"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Key (invK (sesK (d * e))) \<in> analz (H \<union> A \<union> spies evsFC5)
[PROOF STEP]
by (rule subsetD [OF _ True], rule analz_mono, blast)
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (d * e))) \<in> analz (H \<union> A \<union> spies evsFC5)

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<in> analz (A \<union> spies evsFC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
[PROOF STEP]
hence "analz (insert (Crypt (sesK (d * e)) (Passwd n)) ?B) =
      insert (Crypt (sesK (d * e)) (Passwd n)) (insert (Passwd n) (analz ?B))"
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (d * e))) \<in> analz (H \<union> A \<union> spies evsFC5)

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = insert (Crypt (sesK (d * e)) (Passwd n)) (insert (Passwd n) (analz (H \<union> A \<union> spies evsFC5)))
[PROOF STEP]
by (simp add: analz_crypt_in analz_simp_insert_2)
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = insert (Crypt (sesK (d * e)) (Passwd n)) (insert (Passwd n) (analz (H \<union> A \<union> spies evsFC5)))

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<in> analz (A \<union> spies evsFC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = insert (Crypt (sesK (d * e)) (Passwd n)) (insert (Passwd n) (analz (H \<union> A \<union> spies evsFC5)))

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<in> analz (A \<union> spies evsFC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
[PROOF STEP]
have "H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) ?C) =
      insert (Crypt (sesK (d * e)) (Passwd n)) (insert (Passwd n) (H \<union> analz ?C))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5)) = insert (Crypt (sesK (d * e)) (Passwd n)) (insert (Passwd n) (H \<union> analz (A \<union> spies evsFC5)))
[PROOF STEP]
using True
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (d * e))) \<in> analz (A \<union> spies evsFC5)

goal (1 subgoal):
 1. H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5)) = insert (Crypt (sesK (d * e)) (Passwd n)) (insert (Passwd n) (H \<union> analz (A \<union> spies evsFC5)))
[PROOF STEP]
by (simp add: analz_crypt_in analz_simp_insert_2)
[PROOF STATE]
proof (state)
this:
H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5)) = insert (Crypt (sesK (d * e)) (Passwd n)) (insert (Passwd n) (H \<union> analz (A \<union> spies evsFC5)))

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<in> analz (A \<union> spies evsFC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = insert (Crypt (sesK (d * e)) (Passwd n)) (insert (Passwd n) (analz (H \<union> A \<union> spies evsFC5)))
H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5)) = insert (Crypt (sesK (d * e)) (Passwd n)) (insert (Passwd n) (H \<union> analz (A \<union> spies evsFC5)))
[PROOF STEP]
show ?T
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = insert (Crypt (sesK (d * e)) (Passwd n)) (insert (Passwd n) (analz (H \<union> A \<union> spies evsFC5)))
H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5)) = insert (Crypt (sesK (d * e)) (Passwd n)) (insert (Passwd n) (H \<union> analz (A \<union> spies evsFC5)))

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
[PROOF STEP]
using E
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = insert (Crypt (sesK (d * e)) (Passwd n)) (insert (Passwd n) (analz (H \<union> A \<union> spies evsFC5)))
H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5)) = insert (Crypt (sesK (d * e)) (Passwd n)) (insert (Passwd n) (H \<union> analz (A \<union> spies evsFC5)))
analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5)

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC5)

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC5)

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
[PROOF STEP]
assume E: "H \<subseteq> range Key \<union> range Pri_AgrK - U"
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
[PROOF STEP]
with A
[PROOF STATE]
proof (chain)
picking this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsFC5) = ?H \<union> analz (A \<union> spies evsFC5)
H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
have F: "analz ?B = H \<union> analz ?C"
[PROOF STATE]
proof (prove)
using this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsFC5) = ?H \<union> analz (A \<union> spies evsFC5)
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5)

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC5)
analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5)
[PROOF STEP]
have "Key (invK (sesK (d * e))) \<notin> analz ?B"
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC5)
analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5)

goal (1 subgoal):
 1. Key (invK (sesK (d * e))) \<notin> analz (H \<union> A \<union> spies evsFC5)
[PROOF STEP]
proof (simp add: invK_sesK, insert pr_sesk_card [OF B C D])
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>Key (sesK (d * e)) \<notin> analz (A \<union> spies evsFC5); analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5); Key (sesK (d * e)) \<in> U\<rbrakk> \<Longrightarrow> Key (sesK (d * e)) \<notin> H
[PROOF STEP]
qed (rule notI, drule subsetD [OF E], simp)
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (d * e))) \<notin> analz (H \<union> A \<union> spies evsFC5)

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
[PROOF STEP]
hence "analz (insert (Crypt (sesK (d * e)) (Passwd n)) ?B) =
      insert (Crypt (sesK (d * e)) (Passwd n)) (analz ?B)"
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (d * e))) \<notin> analz (H \<union> A \<union> spies evsFC5)

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = insert (Crypt (sesK (d * e)) (Passwd n)) (analz (H \<union> A \<union> spies evsFC5))
[PROOF STEP]
by (simp add: analz_crypt_out)
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = insert (Crypt (sesK (d * e)) (Passwd n)) (analz (H \<union> A \<union> spies evsFC5))

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = insert (Crypt (sesK (d * e)) (Passwd n)) (analz (H \<union> A \<union> spies evsFC5))

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
[PROOF STEP]
have "H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) ?C) =
      insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> analz ?C)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5)) = insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> analz (A \<union> spies evsFC5))
[PROOF STEP]
using False
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC5)

goal (1 subgoal):
 1. H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5)) = insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> analz (A \<union> spies evsFC5))
[PROOF STEP]
by (simp add: analz_crypt_out)
[PROOF STATE]
proof (state)
this:
H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5)) = insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> analz (A \<union> spies evsFC5))

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsFC5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = insert (Crypt (sesK (d * e)) (Passwd n)) (analz (H \<union> A \<union> spies evsFC5))
H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5)) = insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> analz (A \<union> spies evsFC5))
[PROOF STEP]
show ?T
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = insert (Crypt (sesK (d * e)) (Passwd n)) (analz (H \<union> A \<union> spies evsFC5))
H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5)) = insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> analz (A \<union> spies evsFC5))

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
[PROOF STEP]
using F
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = insert (Crypt (sesK (d * e)) (Passwd n)) (analz (H \<union> A \<union> spies evsFC5))
H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5)) = insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> analz (A \<union> spies evsFC5))
analz (H \<union> A \<union> spies evsFC5) = H \<union> analz (A \<union> spies evsFC5)

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (H \<union> A \<union> spies evsFC5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Passwd n)) (A \<union> spies evsFC5))

goal (2 subgoals):
 1. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 2. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 2. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
fix evsR5 S A U n run d e H
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 2. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
assume
    A: "\<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow>
      analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5)" and
    B: "(evsR5, S, A, U) \<in> protocol" and
    C: "IntAgrK (S (Card n, n, run)) = Some d" and
    D: "ExtAgrK (S (Card n, n, run)) = Some e"
[PROOF STATE]
proof (state)
this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsR5) = ?H \<union> analz (A \<union> spies evsR5)
(evsR5, S, A, U) \<in> protocol
IntAgrK (S (Card n, n, run)) = Some d
ExtAgrK (S (Card n, n, run)) = Some e

goal (2 subgoals):
 1. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 2. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
let
    ?B = "H \<union> A \<union> spies evsR5" and
    ?C = "A \<union> spies evsR5"
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>evsR5 S A U n run d e X H. \<lbrakk>(evsR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); IntAgrK (S (Card n, n, run)) = Some d; ExtAgrK (S (Card n, n, run)) = Some e; Says n run 5 X (Card n) (Crypt (sesK (d * e)) (Passwd n)) \<in> set evsR5\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 2. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
show "H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow>
    analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) =
    H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))"
    (is "_ \<longrightarrow> ?T")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
[PROOF STEP]
proof (rule impI, cases "Key (invK (sesK (d * e))) \<in> analz ?C")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<in> analz (A \<union> spies evsR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (d * e))) \<in> analz (A \<union> spies evsR5)

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<in> analz (A \<union> spies evsR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
[PROOF STEP]
assume "H \<subseteq> range Key \<union> range Pri_AgrK - U"
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<in> analz (A \<union> spies evsR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
[PROOF STEP]
with A
[PROOF STATE]
proof (chain)
picking this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsR5) = ?H \<union> analz (A \<union> spies evsR5)
H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
have E: "analz ?B = H \<union> analz ?C"
[PROOF STATE]
proof (prove)
using this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsR5) = ?H \<union> analz (A \<union> spies evsR5)
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5)

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<in> analz (A \<union> spies evsR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
[PROOF STEP]
have "Key (invK (sesK (d * e))) \<in> analz ?B"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Key (invK (sesK (d * e))) \<in> analz (H \<union> A \<union> spies evsR5)
[PROOF STEP]
by (rule subsetD [OF _ True], rule analz_mono, blast)
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (d * e))) \<in> analz (H \<union> A \<union> spies evsR5)

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<in> analz (A \<union> spies evsR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
[PROOF STEP]
hence "analz (insert (Crypt (sesK (d * e)) (Number 0)) ?B) =
      insert (Crypt (sesK (d * e)) (Number 0)) (insert (Number 0) (analz ?B))"
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (d * e))) \<in> analz (H \<union> A \<union> spies evsR5)

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = insert (Crypt (sesK (d * e)) (Number 0)) (insert (Number 0) (analz (H \<union> A \<union> spies evsR5)))
[PROOF STEP]
by (simp add: analz_crypt_in analz_simp_insert_2)
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = insert (Crypt (sesK (d * e)) (Number 0)) (insert (Number 0) (analz (H \<union> A \<union> spies evsR5)))

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<in> analz (A \<union> spies evsR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = insert (Crypt (sesK (d * e)) (Number 0)) (insert (Number 0) (analz (H \<union> A \<union> spies evsR5)))

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<in> analz (A \<union> spies evsR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
[PROOF STEP]
have "H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) ?C) =
      insert (Crypt (sesK (d * e)) (Number 0)) (insert (Number 0) (H \<union> analz ?C))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5)) = insert (Crypt (sesK (d * e)) (Number 0)) (insert (Number 0) (H \<union> analz (A \<union> spies evsR5)))
[PROOF STEP]
using True
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (d * e))) \<in> analz (A \<union> spies evsR5)

goal (1 subgoal):
 1. H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5)) = insert (Crypt (sesK (d * e)) (Number 0)) (insert (Number 0) (H \<union> analz (A \<union> spies evsR5)))
[PROOF STEP]
by (simp add: analz_crypt_in analz_simp_insert_2)
[PROOF STATE]
proof (state)
this:
H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5)) = insert (Crypt (sesK (d * e)) (Number 0)) (insert (Number 0) (H \<union> analz (A \<union> spies evsR5)))

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<in> analz (A \<union> spies evsR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = insert (Crypt (sesK (d * e)) (Number 0)) (insert (Number 0) (analz (H \<union> A \<union> spies evsR5)))
H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5)) = insert (Crypt (sesK (d * e)) (Number 0)) (insert (Number 0) (H \<union> analz (A \<union> spies evsR5)))
[PROOF STEP]
show ?T
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = insert (Crypt (sesK (d * e)) (Number 0)) (insert (Number 0) (analz (H \<union> A \<union> spies evsR5)))
H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5)) = insert (Crypt (sesK (d * e)) (Number 0)) (insert (Number 0) (H \<union> analz (A \<union> spies evsR5)))

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
[PROOF STEP]
using E
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = insert (Crypt (sesK (d * e)) (Number 0)) (insert (Number 0) (analz (H \<union> A \<union> spies evsR5)))
H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5)) = insert (Crypt (sesK (d * e)) (Number 0)) (insert (Number 0) (H \<union> analz (A \<union> spies evsR5)))
analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5)

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR5)

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR5)

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
[PROOF STEP]
assume E: "H \<subseteq> range Key \<union> range Pri_AgrK - U"
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
[PROOF STEP]
with A
[PROOF STATE]
proof (chain)
picking this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsR5) = ?H \<union> analz (A \<union> spies evsR5)
H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
have F: "analz ?B = H \<union> analz ?C"
[PROOF STATE]
proof (prove)
using this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsR5) = ?H \<union> analz (A \<union> spies evsR5)
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5)

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR5)
analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5)
[PROOF STEP]
have "Key (invK (sesK (d * e))) \<notin> analz ?B"
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR5)
analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5)

goal (1 subgoal):
 1. Key (invK (sesK (d * e))) \<notin> analz (H \<union> A \<union> spies evsR5)
[PROOF STEP]
proof (simp add: invK_sesK, insert pr_sesk_card [OF B C D])
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>Key (sesK (d * e)) \<notin> analz (A \<union> spies evsR5); analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5); Key (sesK (d * e)) \<in> U\<rbrakk> \<Longrightarrow> Key (sesK (d * e)) \<notin> H
[PROOF STEP]
qed (rule notI, drule subsetD [OF E], simp)
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (d * e))) \<notin> analz (H \<union> A \<union> spies evsR5)

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
[PROOF STEP]
hence "analz (insert (Crypt (sesK (d * e)) (Number 0)) ?B) =
      insert (Crypt (sesK (d * e)) (Number 0)) (analz ?B)"
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (d * e))) \<notin> analz (H \<union> A \<union> spies evsR5)

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = insert (Crypt (sesK (d * e)) (Number 0)) (analz (H \<union> A \<union> spies evsR5))
[PROOF STEP]
by (simp add: analz_crypt_out)
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = insert (Crypt (sesK (d * e)) (Number 0)) (analz (H \<union> A \<union> spies evsR5))

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = insert (Crypt (sesK (d * e)) (Number 0)) (analz (H \<union> A \<union> spies evsR5))

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
[PROOF STEP]
have "H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) ?C) =
      insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> analz ?C)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5)) = insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> analz (A \<union> spies evsR5))
[PROOF STEP]
using False
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR5)

goal (1 subgoal):
 1. H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5)) = insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> analz (A \<union> spies evsR5))
[PROOF STEP]
by (simp add: analz_crypt_out)
[PROOF STATE]
proof (state)
this:
H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5)) = insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> analz (A \<union> spies evsR5))

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (d * e))) \<notin> analz (A \<union> spies evsR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = insert (Crypt (sesK (d * e)) (Number 0)) (analz (H \<union> A \<union> spies evsR5))
H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5)) = insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> analz (A \<union> spies evsR5))
[PROOF STEP]
show ?T
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = insert (Crypt (sesK (d * e)) (Number 0)) (analz (H \<union> A \<union> spies evsR5))
H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5)) = insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> analz (A \<union> spies evsR5))

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
[PROOF STEP]
using F
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = insert (Crypt (sesK (d * e)) (Number 0)) (analz (H \<union> A \<union> spies evsR5))
H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5)) = insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> analz (A \<union> spies evsR5))
analz (H \<union> A \<union> spies evsR5) = H \<union> analz (A \<union> spies evsR5)

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (d * e)) (Number 0)) (H \<union> A \<union> spies evsR5)) = H \<union> analz (insert (Crypt (sesK (d * e)) (Number 0)) (A \<union> spies evsR5))

goal (1 subgoal):
 1. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
fix evsFR5 S A U m n run c f H
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
assume
    A: "\<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow>
      analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5)" and
    B: "(evsFR5, S, A, U) \<in> protocol" and
    C: "IntAgrK (S (User m, n, run)) = Some c" and
    D: "ExtAgrK (S (User m, n, run)) = Some f"
[PROOF STATE]
proof (state)
this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsFR5) = ?H \<union> analz (A \<union> spies evsFR5)
(evsFR5, S, A, U) \<in> protocol
IntAgrK (S (User m, n, run)) = Some c
ExtAgrK (S (User m, n, run)) = Some f

goal (1 subgoal):
 1. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
let
    ?B = "H \<union> A \<union> spies evsFR5" and
    ?C = "A \<union> spies evsFR5"
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>evsFR5 S A U m n run c f H. \<lbrakk>(evsFR5, S, A, U) \<in> protocol; \<And>H. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); 0 < m; IntAgrK (S (User m, n, run)) = Some c; ExtAgrK (S (User m, n, run)) = Some f; Crypt (sesK (c * f)) (Number 0) \<in> synth (analz (A \<union> spies evsFR5))\<rbrakk> \<Longrightarrow> H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
show "H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow>
    analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) =
    H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))"
    (is "_ \<longrightarrow> ?T")
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
proof (rule impI, cases "Key (invK (sesK (c * f))) \<in> analz ?C")
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
case True
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR5)

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
assume "H \<subseteq> range Key \<union> range Pri_AgrK - U"
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
with A
[PROOF STATE]
proof (chain)
picking this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsFR5) = ?H \<union> analz (A \<union> spies evsFR5)
H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
have E: "analz ?B = H \<union> analz ?C"
[PROOF STATE]
proof (prove)
using this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsFR5) = ?H \<union> analz (A \<union> spies evsFR5)
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5)

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
have "Key (invK (sesK (c * f))) \<in> analz ?B"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. Key (invK (sesK (c * f))) \<in> analz (H \<union> A \<union> spies evsFR5)
[PROOF STEP]
by (rule subsetD [OF _ True], rule analz_mono, blast)
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (c * f))) \<in> analz (H \<union> A \<union> spies evsFR5)

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
hence "analz (insert (Crypt (sesK (c * f)) (Number 0)) ?B) =
      insert (Crypt (sesK (c * f)) (Number 0)) (insert (Number 0) (analz ?B))"
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (c * f))) \<in> analz (H \<union> A \<union> spies evsFR5)

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = insert (Crypt (sesK (c * f)) (Number 0)) (insert (Number 0) (analz (H \<union> A \<union> spies evsFR5)))
[PROOF STEP]
by (simp add: analz_crypt_in analz_simp_insert_2)
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = insert (Crypt (sesK (c * f)) (Number 0)) (insert (Number 0) (analz (H \<union> A \<union> spies evsFR5)))

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = insert (Crypt (sesK (c * f)) (Number 0)) (insert (Number 0) (analz (H \<union> A \<union> spies evsFR5)))

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
have "H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) ?C) =
      insert (Crypt (sesK (c * f)) (Number 0)) (insert (Number 0) (H \<union> analz ?C))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5)) = insert (Crypt (sesK (c * f)) (Number 0)) (insert (Number 0) (H \<union> analz (A \<union> spies evsFR5)))
[PROOF STEP]
using True
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR5)

goal (1 subgoal):
 1. H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5)) = insert (Crypt (sesK (c * f)) (Number 0)) (insert (Number 0) (H \<union> analz (A \<union> spies evsFR5)))
[PROOF STEP]
by (simp add: analz_crypt_in analz_simp_insert_2)
[PROOF STATE]
proof (state)
this:
H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5)) = insert (Crypt (sesK (c * f)) (Number 0)) (insert (Number 0) (H \<union> analz (A \<union> spies evsFR5)))

goal (2 subgoals):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<in> analz (A \<union> spies evsFR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
 2. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = insert (Crypt (sesK (c * f)) (Number 0)) (insert (Number 0) (analz (H \<union> A \<union> spies evsFR5)))
H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5)) = insert (Crypt (sesK (c * f)) (Number 0)) (insert (Number 0) (H \<union> analz (A \<union> spies evsFR5)))
[PROOF STEP]
show ?T
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = insert (Crypt (sesK (c * f)) (Number 0)) (insert (Number 0) (analz (H \<union> A \<union> spies evsFR5)))
H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5)) = insert (Crypt (sesK (c * f)) (Number 0)) (insert (Number 0) (H \<union> analz (A \<union> spies evsFR5)))

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
using E
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = insert (Crypt (sesK (c * f)) (Number 0)) (insert (Number 0) (analz (H \<union> A \<union> spies evsFR5)))
H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5)) = insert (Crypt (sesK (c * f)) (Number 0)) (insert (Number 0) (H \<union> analz (A \<union> spies evsFR5)))
analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5)

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
case False
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR5)

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR5)

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
assume E: "H \<subseteq> range Key \<union> range Pri_AgrK - U"
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
with A
[PROOF STATE]
proof (chain)
picking this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsFR5) = ?H \<union> analz (A \<union> spies evsFR5)
H \<subseteq> range Key \<union> range Pri_AgrK - U
[PROOF STEP]
have F: "analz ?B = H \<union> analz ?C"
[PROOF STATE]
proof (prove)
using this:
?H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (?H \<union> A \<union> spies evsFR5) = ?H \<union> analz (A \<union> spies evsFR5)
H \<subseteq> range Key \<union> range Pri_AgrK - U

goal (1 subgoal):
 1. analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5)
[PROOF STEP]
..
[PROOF STATE]
proof (state)
this:
analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5)

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR5)
analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5)
[PROOF STEP]
have "Key (invK (sesK (c * f))) \<notin> analz ?B"
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR5)
analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5)

goal (1 subgoal):
 1. Key (invK (sesK (c * f))) \<notin> analz (H \<union> A \<union> spies evsFR5)
[PROOF STEP]
proof (simp add: invK_sesK, insert pr_sesk_user_1 [OF B C D,
     THEN pr_sesk_user_2 [OF B]])
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<lbrakk>Key (sesK (c * f)) \<notin> analz (A \<union> spies evsFR5); analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5); Key (sesK (c * f)) \<in> U\<rbrakk> \<Longrightarrow> Key (sesK (c * f)) \<notin> H
[PROOF STEP]
qed (rule notI, drule subsetD [OF E], simp)
[PROOF STATE]
proof (state)
this:
Key (invK (sesK (c * f))) \<notin> analz (H \<union> A \<union> spies evsFR5)

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
hence "analz (insert (Crypt (sesK (c * f)) (Number 0)) ?B) =
      insert (Crypt (sesK (c * f)) (Number 0)) (analz ?B)"
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (c * f))) \<notin> analz (H \<union> A \<union> spies evsFR5)

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = insert (Crypt (sesK (c * f)) (Number 0)) (analz (H \<union> A \<union> spies evsFR5))
[PROOF STEP]
by (simp add: analz_crypt_out)
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = insert (Crypt (sesK (c * f)) (Number 0)) (analz (H \<union> A \<union> spies evsFR5))

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = insert (Crypt (sesK (c * f)) (Number 0)) (analz (H \<union> A \<union> spies evsFR5))

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
have "H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) ?C) =
      insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> analz ?C)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5)) = insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> analz (A \<union> spies evsFR5))
[PROOF STEP]
using False
[PROOF STATE]
proof (prove)
using this:
Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR5)

goal (1 subgoal):
 1. H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5)) = insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> analz (A \<union> spies evsFR5))
[PROOF STEP]
by (simp add: analz_crypt_out)
[PROOF STATE]
proof (state)
this:
H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5)) = insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> analz (A \<union> spies evsFR5))

goal (1 subgoal):
 1. \<lbrakk>H \<subseteq> range Key \<union> range Pri_AgrK - U; Key (invK (sesK (c * f))) \<notin> analz (A \<union> spies evsFR5)\<rbrakk> \<Longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = insert (Crypt (sesK (c * f)) (Number 0)) (analz (H \<union> A \<union> spies evsFR5))
H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5)) = insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> analz (A \<union> spies evsFR5))
[PROOF STEP]
show ?T
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = insert (Crypt (sesK (c * f)) (Number 0)) (analz (H \<union> A \<union> spies evsFR5))
H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5)) = insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> analz (A \<union> spies evsFR5))

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
using F
[PROOF STATE]
proof (prove)
using this:
analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = insert (Crypt (sesK (c * f)) (Number 0)) (analz (H \<union> A \<union> spies evsFR5))
H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5)) = insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> analz (A \<union> spies evsFR5))
analz (H \<union> A \<union> spies evsFR5) = H \<union> analz (A \<union> spies evsFR5)

goal (1 subgoal):
 1. analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
H \<subseteq> range Key \<union> range Pri_AgrK - U \<longrightarrow> analz (insert (Crypt (sesK (c * f)) (Number 0)) (H \<union> A \<union> spies evsFR5)) = H \<union> analz (insert (Crypt (sesK (c * f)) (Number 0)) (A \<union> spies evsFR5))

goal:
No subgoals!
[PROOF STEP]
qed