[STATEMENT]
lemma pr_sesk_card_user [rule_format]:
 "(evs, S, A, U) \<in> protocol \<Longrightarrow>
    User m \<noteq> Spy \<longrightarrow>
    NonceS (S (User m, n, run)) = Some s \<longrightarrow>
    IntMapK (S (User m, n, run)) = Some a \<longrightarrow>
    ExtMapK (S (User m, n, run)) = Some b \<longrightarrow>
    IntAgrK (S (User m, n, run)) = Some c \<longrightarrow>
    NonceS (S (Card n, n, run)) = Some s' \<longrightarrow>
    IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow>
    ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow>
    IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow>
    ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow>
    s' + a' * b' = s + a * b \<longrightarrow>
  Key (sesK (c * d * (s + a * b))) \<notin> A"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (evs, S, A, U) \<in> protocol \<Longrightarrow> User m \<noteq> Spy \<longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
[PROOF STEP]
apply (erule protocol.induct, rule_tac [!] impI, simp_all add: pr_pri_agrk_analz)
[PROOF STATE]
proof (prove)
goal (6 subgoals):
 1. \<And>evsR1 S A U sa na runa. \<lbrakk>(evsR1, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK sa \<notin> U; sa \<noteq> 0; NonceS (S (Card na, na, runa)) = None; 0 < m\<rbrakk> \<Longrightarrow> n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> sa = s' \<longrightarrow> IntMapK (S (Card na, na, runa)) = Some b' \<longrightarrow> ExtMapK (S (Card na, na, runa)) = Some a' \<longrightarrow> IntAgrK (S (Card na, na, runa)) = Some d \<longrightarrow> ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC2 S A U aa ma na runa X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK aa \<notin> U; NonceS (S (User ma, na, runa)) = None; Says na runa (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = (if symK n' = symK ma then sa else 0); 0 < m\<rbrakk> \<Longrightarrow> 0 < ma \<longrightarrow> (symK n' = symK ma \<longrightarrow> m = ma \<and> n = na \<and> run = runa \<longrightarrow> sa = s \<longrightarrow> aa = a \<longrightarrow> ExtMapK (S (User ma, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User ma, na, runa)) = Some c \<longrightarrow> NonceS (S (Card na, na, runa)) = Some s' \<longrightarrow> IntMapK (S (Card na, na, runa)) = Some b' \<longrightarrow> ExtMapK (S (Card na, na, runa)) = Some a' \<longrightarrow> IntAgrK (S (Card na, na, runa)) = Some d \<longrightarrow> ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A) \<and> (symK n' \<noteq> symK ma \<longrightarrow> m = ma \<and> n = na \<and> run = runa \<longrightarrow> s = 0 \<longrightarrow> aa = a \<longrightarrow> ExtMapK (S (User ma, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User ma, na, runa)) = Some c \<longrightarrow> NonceS (S (Card na, na, runa)) = Some s' \<longrightarrow> IntMapK (S (Card na, na, runa)) = Some b' \<longrightarrow> ExtMapK (S (Card na, na, runa)) = Some a' \<longrightarrow> IntAgrK (S (Card na, na, runa)) = Some d \<longrightarrow> ExtAgrK (S (Card na, na, runa)) = Some (c * (a * b)) \<longrightarrow> s' + a' * b' = a * b \<longrightarrow> Key (sesK (c * d * (a * b))) \<notin> A)
 3. \<And>evsR2 S A U ba na runa X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ba \<notin> U; \<exists>y. NonceS (S (Card na, na, runa)) = Some y; IntMapK (S (Card na, na, runa)) = None; Says na runa 2 X (Card na) (pubAK aa) \<in> set evsR2; 0 < m\<rbrakk> \<Longrightarrow> n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> NonceS (S (Card na, na, runa)) = Some s' \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> IntAgrK (S (Card na, na, runa)) = Some d \<longrightarrow> ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsC3 S A U ca ma na runa sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ca \<notin> U; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = None; Says na runa 2 X (User ma) (pubAK ba) \<in> set evsC3; ca \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m\<rbrakk> \<Longrightarrow> 0 < ma \<longrightarrow> m = ma \<and> n = na \<and> run = runa \<longrightarrow> sa = s \<longrightarrow> aa = a \<longrightarrow> ba = b \<longrightarrow> ca = c \<longrightarrow> NonceS (S (Card na, na, runa)) = Some s' \<longrightarrow> IntMapK (S (Card na, na, runa)) = Some b' \<longrightarrow> ExtMapK (S (Card na, na, runa)) = Some a' \<longrightarrow> IntAgrK (S (Card na, na, runa)) = Some d \<longrightarrow> ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m\<rbrakk> \<Longrightarrow> (s'a = s' \<and> Pri_AgrK ca \<in> A \<longrightarrow> s' = sa \<longrightarrow> (n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (sa + a' * b') = c * (s + a * b) \<longrightarrow> sa + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b)) \<and> Key (sesK (c * d * (s + a * b))) \<notin> A) \<and> ((n = na \<longrightarrow> run \<noteq> runa) \<longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some sa \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> sa + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba)))) \<and> ((s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A) \<longrightarrow> (s'a = sa \<and> Pri_AgrK ca \<in> A \<longrightarrow> (n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> sa = s' \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (s' + a' * b') = c * (s + a * b) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b)) \<and> Key (sesK (c * d * (s + a * b))) \<notin> A) \<and> ((n = na \<longrightarrow> run \<noteq> runa) \<longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba)))) \<and> ((s'a = sa \<longrightarrow> Pri_AgrK ca \<notin> A) \<longrightarrow> n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> sa = s' \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (s'a + a' * b') = c * (s + a * b) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A))
 6. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 0 < m\<rbrakk> \<Longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba))
[PROOF STEP]
apply (rule impI)+
[PROOF STATE]
proof (prove)
goal (6 subgoals):
 1. \<And>evsR1 S A U sa na runa. \<lbrakk>(evsR1, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK sa \<notin> U; sa \<noteq> 0; NonceS (S (Card na, na, runa)) = None; 0 < m; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; sa = s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC2 S A U aa ma na runa X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK aa \<notin> U; NonceS (S (User ma, na, runa)) = None; Says na runa (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = (if symK n' = symK ma then sa else 0); 0 < m\<rbrakk> \<Longrightarrow> 0 < ma \<longrightarrow> (symK n' = symK ma \<longrightarrow> m = ma \<and> n = na \<and> run = runa \<longrightarrow> sa = s \<longrightarrow> aa = a \<longrightarrow> ExtMapK (S (User ma, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User ma, na, runa)) = Some c \<longrightarrow> NonceS (S (Card na, na, runa)) = Some s' \<longrightarrow> IntMapK (S (Card na, na, runa)) = Some b' \<longrightarrow> ExtMapK (S (Card na, na, runa)) = Some a' \<longrightarrow> IntAgrK (S (Card na, na, runa)) = Some d \<longrightarrow> ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A) \<and> (symK n' \<noteq> symK ma \<longrightarrow> m = ma \<and> n = na \<and> run = runa \<longrightarrow> s = 0 \<longrightarrow> aa = a \<longrightarrow> ExtMapK (S (User ma, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User ma, na, runa)) = Some c \<longrightarrow> NonceS (S (Card na, na, runa)) = Some s' \<longrightarrow> IntMapK (S (Card na, na, runa)) = Some b' \<longrightarrow> ExtMapK (S (Card na, na, runa)) = Some a' \<longrightarrow> IntAgrK (S (Card na, na, runa)) = Some d \<longrightarrow> ExtAgrK (S (Card na, na, runa)) = Some (c * (a * b)) \<longrightarrow> s' + a' * b' = a * b \<longrightarrow> Key (sesK (c * d * (a * b))) \<notin> A)
 3. \<And>evsR2 S A U ba na runa X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ba \<notin> U; \<exists>y. NonceS (S (Card na, na, runa)) = Some y; IntMapK (S (Card na, na, runa)) = None; Says na runa 2 X (Card na) (pubAK aa) \<in> set evsR2; 0 < m\<rbrakk> \<Longrightarrow> n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> NonceS (S (Card na, na, runa)) = Some s' \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> IntAgrK (S (Card na, na, runa)) = Some d \<longrightarrow> ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsC3 S A U ca ma na runa sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ca \<notin> U; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = None; Says na runa 2 X (User ma) (pubAK ba) \<in> set evsC3; ca \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m\<rbrakk> \<Longrightarrow> 0 < ma \<longrightarrow> m = ma \<and> n = na \<and> run = runa \<longrightarrow> sa = s \<longrightarrow> aa = a \<longrightarrow> ba = b \<longrightarrow> ca = c \<longrightarrow> NonceS (S (Card na, na, runa)) = Some s' \<longrightarrow> IntMapK (S (Card na, na, runa)) = Some b' \<longrightarrow> ExtMapK (S (Card na, na, runa)) = Some a' \<longrightarrow> IntAgrK (S (Card na, na, runa)) = Some d \<longrightarrow> ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m\<rbrakk> \<Longrightarrow> (s'a = s' \<and> Pri_AgrK ca \<in> A \<longrightarrow> s' = sa \<longrightarrow> (n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (sa + a' * b') = c * (s + a * b) \<longrightarrow> sa + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b)) \<and> Key (sesK (c * d * (s + a * b))) \<notin> A) \<and> ((n = na \<longrightarrow> run \<noteq> runa) \<longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some sa \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> sa + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba)))) \<and> ((s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A) \<longrightarrow> (s'a = sa \<and> Pri_AgrK ca \<in> A \<longrightarrow> (n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> sa = s' \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (s' + a' * b') = c * (s + a * b) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b)) \<and> Key (sesK (c * d * (s + a * b))) \<notin> A) \<and> ((n = na \<longrightarrow> run \<noteq> runa) \<longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba)))) \<and> ((s'a = sa \<longrightarrow> Pri_AgrK ca \<notin> A) \<longrightarrow> n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> sa = s' \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (s'a + a' * b') = c * (s + a * b) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A))
 6. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 0 < m\<rbrakk> \<Longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba))
[PROOF STEP]
apply (rule_tac [2] impI)
[PROOF STATE]
proof (prove)
goal (6 subgoals):
 1. \<And>evsR1 S A U sa na runa. \<lbrakk>(evsR1, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK sa \<notin> U; sa \<noteq> 0; NonceS (S (Card na, na, runa)) = None; 0 < m; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; sa = s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC2 S A U aa ma na runa X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK aa \<notin> U; NonceS (S (User ma, na, runa)) = None; Says na runa (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = (if symK n' = symK ma then sa else 0); 0 < m; 0 < ma\<rbrakk> \<Longrightarrow> (symK n' = symK ma \<longrightarrow> m = ma \<and> n = na \<and> run = runa \<longrightarrow> sa = s \<longrightarrow> aa = a \<longrightarrow> ExtMapK (S (User ma, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User ma, na, runa)) = Some c \<longrightarrow> NonceS (S (Card na, na, runa)) = Some s' \<longrightarrow> IntMapK (S (Card na, na, runa)) = Some b' \<longrightarrow> ExtMapK (S (Card na, na, runa)) = Some a' \<longrightarrow> IntAgrK (S (Card na, na, runa)) = Some d \<longrightarrow> ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A) \<and> (symK n' \<noteq> symK ma \<longrightarrow> m = ma \<and> n = na \<and> run = runa \<longrightarrow> s = 0 \<longrightarrow> aa = a \<longrightarrow> ExtMapK (S (User ma, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User ma, na, runa)) = Some c \<longrightarrow> NonceS (S (Card na, na, runa)) = Some s' \<longrightarrow> IntMapK (S (Card na, na, runa)) = Some b' \<longrightarrow> ExtMapK (S (Card na, na, runa)) = Some a' \<longrightarrow> IntAgrK (S (Card na, na, runa)) = Some d \<longrightarrow> ExtAgrK (S (Card na, na, runa)) = Some (c * (a * b)) \<longrightarrow> s' + a' * b' = a * b \<longrightarrow> Key (sesK (c * d * (a * b))) \<notin> A)
 3. \<And>evsR2 S A U ba na runa X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ba \<notin> U; \<exists>y. NonceS (S (Card na, na, runa)) = Some y; IntMapK (S (Card na, na, runa)) = None; Says na runa 2 X (Card na) (pubAK aa) \<in> set evsR2; 0 < m\<rbrakk> \<Longrightarrow> n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> NonceS (S (Card na, na, runa)) = Some s' \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> IntAgrK (S (Card na, na, runa)) = Some d \<longrightarrow> ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsC3 S A U ca ma na runa sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ca \<notin> U; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = None; Says na runa 2 X (User ma) (pubAK ba) \<in> set evsC3; ca \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m\<rbrakk> \<Longrightarrow> 0 < ma \<longrightarrow> m = ma \<and> n = na \<and> run = runa \<longrightarrow> sa = s \<longrightarrow> aa = a \<longrightarrow> ba = b \<longrightarrow> ca = c \<longrightarrow> NonceS (S (Card na, na, runa)) = Some s' \<longrightarrow> IntMapK (S (Card na, na, runa)) = Some b' \<longrightarrow> ExtMapK (S (Card na, na, runa)) = Some a' \<longrightarrow> IntAgrK (S (Card na, na, runa)) = Some d \<longrightarrow> ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m\<rbrakk> \<Longrightarrow> (s'a = s' \<and> Pri_AgrK ca \<in> A \<longrightarrow> s' = sa \<longrightarrow> (n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (sa + a' * b') = c * (s + a * b) \<longrightarrow> sa + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b)) \<and> Key (sesK (c * d * (s + a * b))) \<notin> A) \<and> ((n = na \<longrightarrow> run \<noteq> runa) \<longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some sa \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> sa + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba)))) \<and> ((s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A) \<longrightarrow> (s'a = sa \<and> Pri_AgrK ca \<in> A \<longrightarrow> (n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> sa = s' \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (s' + a' * b') = c * (s + a * b) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b)) \<and> Key (sesK (c * d * (s + a * b))) \<notin> A) \<and> ((n = na \<longrightarrow> run \<noteq> runa) \<longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba)))) \<and> ((s'a = sa \<longrightarrow> Pri_AgrK ca \<notin> A) \<longrightarrow> n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> sa = s' \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (s'a + a' * b') = c * (s + a * b) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A))
 6. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 0 < m\<rbrakk> \<Longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba))
[PROOF STEP]
apply (rule_tac [2] conjI)
[PROOF STATE]
proof (prove)
goal (7 subgoals):
 1. \<And>evsR1 S A U sa na runa. \<lbrakk>(evsR1, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK sa \<notin> U; sa \<noteq> 0; NonceS (S (Card na, na, runa)) = None; 0 < m; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; sa = s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC2 S A U aa ma na runa X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK aa \<notin> U; NonceS (S (User ma, na, runa)) = None; Says na runa (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = (if symK n' = symK ma then sa else 0); 0 < m; 0 < ma\<rbrakk> \<Longrightarrow> symK n' = symK ma \<longrightarrow> m = ma \<and> n = na \<and> run = runa \<longrightarrow> sa = s \<longrightarrow> aa = a \<longrightarrow> ExtMapK (S (User ma, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User ma, na, runa)) = Some c \<longrightarrow> NonceS (S (Card na, na, runa)) = Some s' \<longrightarrow> IntMapK (S (Card na, na, runa)) = Some b' \<longrightarrow> ExtMapK (S (Card na, na, runa)) = Some a' \<longrightarrow> IntAgrK (S (Card na, na, runa)) = Some d \<longrightarrow> ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsC2 S A U aa ma na runa X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK aa \<notin> U; NonceS (S (User ma, na, runa)) = None; Says na runa (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = (if symK n' = symK ma then sa else 0); 0 < m; 0 < ma\<rbrakk> \<Longrightarrow> symK n' \<noteq> symK ma \<longrightarrow> m = ma \<and> n = na \<and> run = runa \<longrightarrow> s = 0 \<longrightarrow> aa = a \<longrightarrow> ExtMapK (S (User ma, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User ma, na, runa)) = Some c \<longrightarrow> NonceS (S (Card na, na, runa)) = Some s' \<longrightarrow> IntMapK (S (Card na, na, runa)) = Some b' \<longrightarrow> ExtMapK (S (Card na, na, runa)) = Some a' \<longrightarrow> IntAgrK (S (Card na, na, runa)) = Some d \<longrightarrow> ExtAgrK (S (Card na, na, runa)) = Some (c * (a * b)) \<longrightarrow> s' + a' * b' = a * b \<longrightarrow> Key (sesK (c * d * (a * b))) \<notin> A
 4. \<And>evsR2 S A U ba na runa X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ba \<notin> U; \<exists>y. NonceS (S (Card na, na, runa)) = Some y; IntMapK (S (Card na, na, runa)) = None; Says na runa 2 X (Card na) (pubAK aa) \<in> set evsR2; 0 < m\<rbrakk> \<Longrightarrow> n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> NonceS (S (Card na, na, runa)) = Some s' \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> IntAgrK (S (Card na, na, runa)) = Some d \<longrightarrow> ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsC3 S A U ca ma na runa sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ca \<notin> U; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = None; Says na runa 2 X (User ma) (pubAK ba) \<in> set evsC3; ca \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m\<rbrakk> \<Longrightarrow> 0 < ma \<longrightarrow> m = ma \<and> n = na \<and> run = runa \<longrightarrow> sa = s \<longrightarrow> aa = a \<longrightarrow> ba = b \<longrightarrow> ca = c \<longrightarrow> NonceS (S (Card na, na, runa)) = Some s' \<longrightarrow> IntMapK (S (Card na, na, runa)) = Some b' \<longrightarrow> ExtMapK (S (Card na, na, runa)) = Some a' \<longrightarrow> IntAgrK (S (Card na, na, runa)) = Some d \<longrightarrow> ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m\<rbrakk> \<Longrightarrow> (s'a = s' \<and> Pri_AgrK ca \<in> A \<longrightarrow> s' = sa \<longrightarrow> (n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (sa + a' * b') = c * (s + a * b) \<longrightarrow> sa + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b)) \<and> Key (sesK (c * d * (s + a * b))) \<notin> A) \<and> ((n = na \<longrightarrow> run \<noteq> runa) \<longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some sa \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> sa + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba)))) \<and> ((s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A) \<longrightarrow> (s'a = sa \<and> Pri_AgrK ca \<in> A \<longrightarrow> (n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> sa = s' \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (s' + a' * b') = c * (s + a * b) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b)) \<and> Key (sesK (c * d * (s + a * b))) \<notin> A) \<and> ((n = na \<longrightarrow> run \<noteq> runa) \<longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba)))) \<and> ((s'a = sa \<longrightarrow> Pri_AgrK ca \<notin> A) \<longrightarrow> n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> sa = s' \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (s'a + a' * b') = c * (s + a * b) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A))
 7. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 0 < m\<rbrakk> \<Longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba))
[PROOF STEP]
apply (rule_tac [2-3] impI)+
[PROOF STATE]
proof (prove)
goal (7 subgoals):
 1. \<And>evsR1 S A U sa na runa. \<lbrakk>(evsR1, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK sa \<notin> U; sa \<noteq> 0; NonceS (S (Card na, na, runa)) = None; 0 < m; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; sa = s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC2 S A U aa ma na runa X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK aa \<notin> U; NonceS (S (User ma, na, runa)) = None; Says na runa (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = (if symK n' = symK ma then sa else 0); 0 < m; 0 < ma; symK n' = symK ma; m = ma \<and> n = na \<and> run = runa; sa = s; aa = a; ExtMapK (S (User ma, na, runa)) = Some b; IntAgrK (S (User ma, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsC2 S A U aa ma na runa X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK aa \<notin> U; NonceS (S (User ma, na, runa)) = None; Says na runa (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = (if symK n' = symK ma then sa else 0); 0 < m; 0 < ma; symK n' \<noteq> symK ma; m = ma \<and> n = na \<and> run = runa; s = 0; aa = a; ExtMapK (S (User ma, na, runa)) = Some b; IntAgrK (S (User ma, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (a * b)); s' + a' * b' = a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (a * b))) \<notin> A
 4. \<And>evsR2 S A U ba na runa X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ba \<notin> U; \<exists>y. NonceS (S (Card na, na, runa)) = Some y; IntMapK (S (Card na, na, runa)) = None; Says na runa 2 X (Card na) (pubAK aa) \<in> set evsR2; 0 < m\<rbrakk> \<Longrightarrow> n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> NonceS (S (Card na, na, runa)) = Some s' \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> IntAgrK (S (Card na, na, runa)) = Some d \<longrightarrow> ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsC3 S A U ca ma na runa sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ca \<notin> U; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = None; Says na runa 2 X (User ma) (pubAK ba) \<in> set evsC3; ca \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m\<rbrakk> \<Longrightarrow> 0 < ma \<longrightarrow> m = ma \<and> n = na \<and> run = runa \<longrightarrow> sa = s \<longrightarrow> aa = a \<longrightarrow> ba = b \<longrightarrow> ca = c \<longrightarrow> NonceS (S (Card na, na, runa)) = Some s' \<longrightarrow> IntMapK (S (Card na, na, runa)) = Some b' \<longrightarrow> ExtMapK (S (Card na, na, runa)) = Some a' \<longrightarrow> IntAgrK (S (Card na, na, runa)) = Some d \<longrightarrow> ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m\<rbrakk> \<Longrightarrow> (s'a = s' \<and> Pri_AgrK ca \<in> A \<longrightarrow> s' = sa \<longrightarrow> (n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (sa + a' * b') = c * (s + a * b) \<longrightarrow> sa + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b)) \<and> Key (sesK (c * d * (s + a * b))) \<notin> A) \<and> ((n = na \<longrightarrow> run \<noteq> runa) \<longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some sa \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> sa + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba)))) \<and> ((s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A) \<longrightarrow> (s'a = sa \<and> Pri_AgrK ca \<in> A \<longrightarrow> (n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> sa = s' \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (s' + a' * b') = c * (s + a * b) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b)) \<and> Key (sesK (c * d * (s + a * b))) \<notin> A) \<and> ((n = na \<longrightarrow> run \<noteq> runa) \<longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba)))) \<and> ((s'a = sa \<longrightarrow> Pri_AgrK ca \<notin> A) \<longrightarrow> n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> sa = s' \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (s'a + a' * b') = c * (s + a * b) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A))
 7. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 0 < m\<rbrakk> \<Longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba))
[PROOF STEP]
apply (rule_tac [4] impI)+
[PROOF STATE]
proof (prove)
goal (7 subgoals):
 1. \<And>evsR1 S A U sa na runa. \<lbrakk>(evsR1, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK sa \<notin> U; sa \<noteq> 0; NonceS (S (Card na, na, runa)) = None; 0 < m; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; sa = s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC2 S A U aa ma na runa X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK aa \<notin> U; NonceS (S (User ma, na, runa)) = None; Says na runa (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = (if symK n' = symK ma then sa else 0); 0 < m; 0 < ma; symK n' = symK ma; m = ma \<and> n = na \<and> run = runa; sa = s; aa = a; ExtMapK (S (User ma, na, runa)) = Some b; IntAgrK (S (User ma, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsC2 S A U aa ma na runa X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK aa \<notin> U; NonceS (S (User ma, na, runa)) = None; Says na runa (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = (if symK n' = symK ma then sa else 0); 0 < m; 0 < ma; symK n' \<noteq> symK ma; m = ma \<and> n = na \<and> run = runa; s = 0; aa = a; ExtMapK (S (User ma, na, runa)) = Some b; IntAgrK (S (User ma, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (a * b)); s' + a' * b' = a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (a * b))) \<notin> A
 4. \<And>evsR2 S A U ba na runa X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ba \<notin> U; \<exists>y. NonceS (S (Card na, na, runa)) = Some y; IntMapK (S (Card na, na, runa)) = None; Says na runa 2 X (Card na) (pubAK aa) \<in> set evsR2; 0 < m; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsC3 S A U ca ma na runa sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ca \<notin> U; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = None; Says na runa 2 X (User ma) (pubAK ba) \<in> set evsC3; ca \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m\<rbrakk> \<Longrightarrow> 0 < ma \<longrightarrow> m = ma \<and> n = na \<and> run = runa \<longrightarrow> sa = s \<longrightarrow> aa = a \<longrightarrow> ba = b \<longrightarrow> ca = c \<longrightarrow> NonceS (S (Card na, na, runa)) = Some s' \<longrightarrow> IntMapK (S (Card na, na, runa)) = Some b' \<longrightarrow> ExtMapK (S (Card na, na, runa)) = Some a' \<longrightarrow> IntAgrK (S (Card na, na, runa)) = Some d \<longrightarrow> ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m\<rbrakk> \<Longrightarrow> (s'a = s' \<and> Pri_AgrK ca \<in> A \<longrightarrow> s' = sa \<longrightarrow> (n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (sa + a' * b') = c * (s + a * b) \<longrightarrow> sa + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b)) \<and> Key (sesK (c * d * (s + a * b))) \<notin> A) \<and> ((n = na \<longrightarrow> run \<noteq> runa) \<longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some sa \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> sa + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba)))) \<and> ((s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A) \<longrightarrow> (s'a = sa \<and> Pri_AgrK ca \<in> A \<longrightarrow> (n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> sa = s' \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (s' + a' * b') = c * (s + a * b) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b)) \<and> Key (sesK (c * d * (s + a * b))) \<notin> A) \<and> ((n = na \<longrightarrow> run \<noteq> runa) \<longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba)))) \<and> ((s'a = sa \<longrightarrow> Pri_AgrK ca \<notin> A) \<longrightarrow> n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> sa = s' \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (s'a + a' * b') = c * (s + a * b) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A))
 7. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 0 < m\<rbrakk> \<Longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba))
[PROOF STEP]
apply (rule_tac [5] impI)+
[PROOF STATE]
proof (prove)
goal (7 subgoals):
 1. \<And>evsR1 S A U sa na runa. \<lbrakk>(evsR1, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK sa \<notin> U; sa \<noteq> 0; NonceS (S (Card na, na, runa)) = None; 0 < m; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; sa = s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC2 S A U aa ma na runa X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK aa \<notin> U; NonceS (S (User ma, na, runa)) = None; Says na runa (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = (if symK n' = symK ma then sa else 0); 0 < m; 0 < ma; symK n' = symK ma; m = ma \<and> n = na \<and> run = runa; sa = s; aa = a; ExtMapK (S (User ma, na, runa)) = Some b; IntAgrK (S (User ma, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsC2 S A U aa ma na runa X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK aa \<notin> U; NonceS (S (User ma, na, runa)) = None; Says na runa (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = (if symK n' = symK ma then sa else 0); 0 < m; 0 < ma; symK n' \<noteq> symK ma; m = ma \<and> n = na \<and> run = runa; s = 0; aa = a; ExtMapK (S (User ma, na, runa)) = Some b; IntAgrK (S (User ma, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (a * b)); s' + a' * b' = a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (a * b))) \<notin> A
 4. \<And>evsR2 S A U ba na runa X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ba \<notin> U; \<exists>y. NonceS (S (Card na, na, runa)) = Some y; IntMapK (S (Card na, na, runa)) = None; Says na runa 2 X (Card na) (pubAK aa) \<in> set evsR2; 0 < m; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsC3 S A U ca ma na runa sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ca \<notin> U; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = None; Says na runa 2 X (User ma) (pubAK ba) \<in> set evsC3; ca \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; 0 < ma; m = ma \<and> n = na \<and> run = runa; sa = s; aa = a; ba = b; ca = c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m\<rbrakk> \<Longrightarrow> (s'a = s' \<and> Pri_AgrK ca \<in> A \<longrightarrow> s' = sa \<longrightarrow> (n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (sa + a' * b') = c * (s + a * b) \<longrightarrow> sa + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b)) \<and> Key (sesK (c * d * (s + a * b))) \<notin> A) \<and> ((n = na \<longrightarrow> run \<noteq> runa) \<longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some sa \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> sa + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba)))) \<and> ((s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A) \<longrightarrow> (s'a = sa \<and> Pri_AgrK ca \<in> A \<longrightarrow> (n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> sa = s' \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (s' + a' * b') = c * (s + a * b) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b)) \<and> Key (sesK (c * d * (s + a * b))) \<notin> A) \<and> ((n = na \<longrightarrow> run \<noteq> runa) \<longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba)))) \<and> ((s'a = sa \<longrightarrow> Pri_AgrK ca \<notin> A) \<longrightarrow> n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> sa = s' \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (s'a + a' * b') = c * (s + a * b) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A))
 7. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 0 < m\<rbrakk> \<Longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba))
[PROOF STEP]
apply (rule_tac [6] conjI, (rule_tac [6] impI)+)+
[PROOF STATE]
proof (prove)
goal (9 subgoals):
 1. \<And>evsR1 S A U sa na runa. \<lbrakk>(evsR1, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK sa \<notin> U; sa \<noteq> 0; NonceS (S (Card na, na, runa)) = None; 0 < m; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; sa = s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC2 S A U aa ma na runa X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK aa \<notin> U; NonceS (S (User ma, na, runa)) = None; Says na runa (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = (if symK n' = symK ma then sa else 0); 0 < m; 0 < ma; symK n' = symK ma; m = ma \<and> n = na \<and> run = runa; sa = s; aa = a; ExtMapK (S (User ma, na, runa)) = Some b; IntAgrK (S (User ma, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsC2 S A U aa ma na runa X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK aa \<notin> U; NonceS (S (User ma, na, runa)) = None; Says na runa (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = (if symK n' = symK ma then sa else 0); 0 < m; 0 < ma; symK n' \<noteq> symK ma; m = ma \<and> n = na \<and> run = runa; s = 0; aa = a; ExtMapK (S (User ma, na, runa)) = Some b; IntAgrK (S (User ma, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (a * b)); s' + a' * b' = a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (a * b))) \<notin> A
 4. \<And>evsR2 S A U ba na runa X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ba \<notin> U; \<exists>y. NonceS (S (Card na, na, runa)) = Some y; IntMapK (S (Card na, na, runa)) = None; Says na runa 2 X (Card na) (pubAK aa) \<in> set evsR2; 0 < m; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsC3 S A U ca ma na runa sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ca \<notin> U; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = None; Says na runa 2 X (User ma) (pubAK ba) \<in> set evsC3; ca \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; 0 < ma; m = ma \<and> n = na \<and> run = runa; sa = s; aa = a; ba = b; ca = c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<and> Pri_AgrK ca \<in> A; s' = sa; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca * (sa + a' * b') = c * (s + a * b); sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b)) \<and> Key (sesK (c * d * (s + a * b))) \<notin> A
 7. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<and> Pri_AgrK ca \<in> A; s' = sa\<rbrakk> \<Longrightarrow> (n = na \<longrightarrow> run \<noteq> runa) \<longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some sa \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> sa + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba))
 8. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m\<rbrakk> \<Longrightarrow> (s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A) \<longrightarrow> (s'a = sa \<and> Pri_AgrK ca \<in> A \<longrightarrow> (n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> sa = s' \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (s' + a' * b') = c * (s + a * b) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b)) \<and> Key (sesK (c * d * (s + a * b))) \<notin> A) \<and> ((n = na \<longrightarrow> run \<noteq> runa) \<longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba)))) \<and> ((s'a = sa \<longrightarrow> Pri_AgrK ca \<notin> A) \<longrightarrow> n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> sa = s' \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (s'a + a' * b') = c * (s + a * b) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A)
 9. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 0 < m\<rbrakk> \<Longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba))
[PROOF STEP]
apply (rule_tac [6] conjI)
[PROOF STATE]
proof (prove)
goal (10 subgoals):
 1. \<And>evsR1 S A U sa na runa. \<lbrakk>(evsR1, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK sa \<notin> U; sa \<noteq> 0; NonceS (S (Card na, na, runa)) = None; 0 < m; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; sa = s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC2 S A U aa ma na runa X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK aa \<notin> U; NonceS (S (User ma, na, runa)) = None; Says na runa (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = (if symK n' = symK ma then sa else 0); 0 < m; 0 < ma; symK n' = symK ma; m = ma \<and> n = na \<and> run = runa; sa = s; aa = a; ExtMapK (S (User ma, na, runa)) = Some b; IntAgrK (S (User ma, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsC2 S A U aa ma na runa X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK aa \<notin> U; NonceS (S (User ma, na, runa)) = None; Says na runa (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = (if symK n' = symK ma then sa else 0); 0 < m; 0 < ma; symK n' \<noteq> symK ma; m = ma \<and> n = na \<and> run = runa; s = 0; aa = a; ExtMapK (S (User ma, na, runa)) = Some b; IntAgrK (S (User ma, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (a * b)); s' + a' * b' = a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (a * b))) \<notin> A
 4. \<And>evsR2 S A U ba na runa X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ba \<notin> U; \<exists>y. NonceS (S (Card na, na, runa)) = Some y; IntMapK (S (Card na, na, runa)) = None; Says na runa 2 X (Card na) (pubAK aa) \<in> set evsR2; 0 < m; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsC3 S A U ca ma na runa sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ca \<notin> U; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = None; Says na runa 2 X (User ma) (pubAK ba) \<in> set evsC3; ca \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; 0 < ma; m = ma \<and> n = na \<and> run = runa; sa = s; aa = a; ba = b; ca = c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<and> Pri_AgrK ca \<in> A; s' = sa; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca * (sa + a' * b') = c * (s + a * b); sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b))
 7. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<and> Pri_AgrK ca \<in> A; s' = sa; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca * (sa + a' * b') = c * (s + a * b); sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 8. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<and> Pri_AgrK ca \<in> A; s' = sa\<rbrakk> \<Longrightarrow> (n = na \<longrightarrow> run \<noteq> runa) \<longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some sa \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> sa + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba))
 9. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m\<rbrakk> \<Longrightarrow> (s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A) \<longrightarrow> (s'a = sa \<and> Pri_AgrK ca \<in> A \<longrightarrow> (n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> sa = s' \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (s' + a' * b') = c * (s + a * b) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b)) \<and> Key (sesK (c * d * (s + a * b))) \<notin> A) \<and> ((n = na \<longrightarrow> run \<noteq> runa) \<longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba)))) \<and> ((s'a = sa \<longrightarrow> Pri_AgrK ca \<notin> A) \<longrightarrow> n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> sa = s' \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (s'a + a' * b') = c * (s + a * b) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A)
 10. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 0 < m\<rbrakk> \<Longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba))
[PROOF STEP]
apply (erule_tac [6] conjE)+
[PROOF STATE]
proof (prove)
goal (10 subgoals):
 1. \<And>evsR1 S A U sa na runa. \<lbrakk>(evsR1, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK sa \<notin> U; sa \<noteq> 0; NonceS (S (Card na, na, runa)) = None; 0 < m; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; sa = s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC2 S A U aa ma na runa X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK aa \<notin> U; NonceS (S (User ma, na, runa)) = None; Says na runa (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = (if symK n' = symK ma then sa else 0); 0 < m; 0 < ma; symK n' = symK ma; m = ma \<and> n = na \<and> run = runa; sa = s; aa = a; ExtMapK (S (User ma, na, runa)) = Some b; IntAgrK (S (User ma, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsC2 S A U aa ma na runa X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK aa \<notin> U; NonceS (S (User ma, na, runa)) = None; Says na runa (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = (if symK n' = symK ma then sa else 0); 0 < m; 0 < ma; symK n' \<noteq> symK ma; m = ma \<and> n = na \<and> run = runa; s = 0; aa = a; ExtMapK (S (User ma, na, runa)) = Some b; IntAgrK (S (User ma, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (a * b)); s' + a' * b' = a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (a * b))) \<notin> A
 4. \<And>evsR2 S A U ba na runa X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ba \<notin> U; \<exists>y. NonceS (S (Card na, na, runa)) = Some y; IntMapK (S (Card na, na, runa)) = None; Says na runa 2 X (Card na) (pubAK aa) \<in> set evsR2; 0 < m; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsC3 S A U ca ma na runa sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ca \<notin> U; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = None; Says na runa 2 X (User ma) (pubAK ba) \<in> set evsC3; ca \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; 0 < ma; m = ma \<and> n = na \<and> run = runa; sa = s; aa = a; ba = b; ca = c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca * (sa + a' * b') = c * (s + a * b); sa + a' * b' = s + a * b; da \<noteq> 0; sa + aa * ba \<noteq> 0; s'a = s'; Pri_AgrK ca \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b))
 7. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<and> Pri_AgrK ca \<in> A; s' = sa; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca * (sa + a' * b') = c * (s + a * b); sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 8. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<and> Pri_AgrK ca \<in> A; s' = sa\<rbrakk> \<Longrightarrow> (n = na \<longrightarrow> run \<noteq> runa) \<longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some sa \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> sa + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba))
 9. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m\<rbrakk> \<Longrightarrow> (s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A) \<longrightarrow> (s'a = sa \<and> Pri_AgrK ca \<in> A \<longrightarrow> (n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> sa = s' \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (s' + a' * b') = c * (s + a * b) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b)) \<and> Key (sesK (c * d * (s + a * b))) \<notin> A) \<and> ((n = na \<longrightarrow> run \<noteq> runa) \<longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba)))) \<and> ((s'a = sa \<longrightarrow> Pri_AgrK ca \<notin> A) \<longrightarrow> n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> sa = s' \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (s'a + a' * b') = c * (s + a * b) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A)
 10. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 0 < m\<rbrakk> \<Longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba))
[PROOF STEP]
apply (rule_tac [8] impI)+
[PROOF STATE]
proof (prove)
goal (10 subgoals):
 1. \<And>evsR1 S A U sa na runa. \<lbrakk>(evsR1, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK sa \<notin> U; sa \<noteq> 0; NonceS (S (Card na, na, runa)) = None; 0 < m; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; sa = s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC2 S A U aa ma na runa X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK aa \<notin> U; NonceS (S (User ma, na, runa)) = None; Says na runa (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = (if symK n' = symK ma then sa else 0); 0 < m; 0 < ma; symK n' = symK ma; m = ma \<and> n = na \<and> run = runa; sa = s; aa = a; ExtMapK (S (User ma, na, runa)) = Some b; IntAgrK (S (User ma, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsC2 S A U aa ma na runa X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK aa \<notin> U; NonceS (S (User ma, na, runa)) = None; Says na runa (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = (if symK n' = symK ma then sa else 0); 0 < m; 0 < ma; symK n' \<noteq> symK ma; m = ma \<and> n = na \<and> run = runa; s = 0; aa = a; ExtMapK (S (User ma, na, runa)) = Some b; IntAgrK (S (User ma, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (a * b)); s' + a' * b' = a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (a * b))) \<notin> A
 4. \<And>evsR2 S A U ba na runa X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ba \<notin> U; \<exists>y. NonceS (S (Card na, na, runa)) = Some y; IntMapK (S (Card na, na, runa)) = None; Says na runa 2 X (Card na) (pubAK aa) \<in> set evsR2; 0 < m; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsC3 S A U ca ma na runa sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ca \<notin> U; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = None; Says na runa 2 X (User ma) (pubAK ba) \<in> set evsC3; ca \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; 0 < ma; m = ma \<and> n = na \<and> run = runa; sa = s; aa = a; ba = b; ca = c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca * (sa + a' * b') = c * (s + a * b); sa + a' * b' = s + a * b; da \<noteq> 0; sa + aa * ba \<noteq> 0; s'a = s'; Pri_AgrK ca \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b))
 7. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<and> Pri_AgrK ca \<in> A; s' = sa; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca * (sa + a' * b') = c * (s + a * b); sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 8. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<and> Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba))
 9. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m\<rbrakk> \<Longrightarrow> (s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A) \<longrightarrow> (s'a = sa \<and> Pri_AgrK ca \<in> A \<longrightarrow> (n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> sa = s' \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (s' + a' * b') = c * (s + a * b) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b)) \<and> Key (sesK (c * d * (s + a * b))) \<notin> A) \<and> ((n = na \<longrightarrow> run \<noteq> runa) \<longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba)))) \<and> ((s'a = sa \<longrightarrow> Pri_AgrK ca \<notin> A) \<longrightarrow> n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> sa = s' \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (s'a + a' * b') = c * (s + a * b) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A)
 10. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 0 < m\<rbrakk> \<Longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba))
[PROOF STEP]
apply (rule_tac [8] notI)
[PROOF STATE]
proof (prove)
goal (10 subgoals):
 1. \<And>evsR1 S A U sa na runa. \<lbrakk>(evsR1, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK sa \<notin> U; sa \<noteq> 0; NonceS (S (Card na, na, runa)) = None; 0 < m; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; sa = s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC2 S A U aa ma na runa X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK aa \<notin> U; NonceS (S (User ma, na, runa)) = None; Says na runa (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = (if symK n' = symK ma then sa else 0); 0 < m; 0 < ma; symK n' = symK ma; m = ma \<and> n = na \<and> run = runa; sa = s; aa = a; ExtMapK (S (User ma, na, runa)) = Some b; IntAgrK (S (User ma, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsC2 S A U aa ma na runa X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK aa \<notin> U; NonceS (S (User ma, na, runa)) = None; Says na runa (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = (if symK n' = symK ma then sa else 0); 0 < m; 0 < ma; symK n' \<noteq> symK ma; m = ma \<and> n = na \<and> run = runa; s = 0; aa = a; ExtMapK (S (User ma, na, runa)) = Some b; IntAgrK (S (User ma, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (a * b)); s' + a' * b' = a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (a * b))) \<notin> A
 4. \<And>evsR2 S A U ba na runa X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ba \<notin> U; \<exists>y. NonceS (S (Card na, na, runa)) = Some y; IntMapK (S (Card na, na, runa)) = None; Says na runa 2 X (Card na) (pubAK aa) \<in> set evsR2; 0 < m; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsC3 S A U ca ma na runa sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ca \<notin> U; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = None; Says na runa 2 X (User ma) (pubAK ba) \<in> set evsC3; ca \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; 0 < ma; m = ma \<and> n = na \<and> run = runa; sa = s; aa = a; ba = b; ca = c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca * (sa + a' * b') = c * (s + a * b); sa + a' * b' = s + a * b; da \<noteq> 0; sa + aa * ba \<noteq> 0; s'a = s'; Pri_AgrK ca \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b))
 7. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<and> Pri_AgrK ca \<in> A; s' = sa; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca * (sa + a' * b') = c * (s + a * b); sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 8. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<and> Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 9. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m\<rbrakk> \<Longrightarrow> (s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A) \<longrightarrow> (s'a = sa \<and> Pri_AgrK ca \<in> A \<longrightarrow> (n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> sa = s' \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (s' + a' * b') = c * (s + a * b) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b)) \<and> Key (sesK (c * d * (s + a * b))) \<notin> A) \<and> ((n = na \<longrightarrow> run \<noteq> runa) \<longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba)))) \<and> ((s'a = sa \<longrightarrow> Pri_AgrK ca \<notin> A) \<longrightarrow> n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> sa = s' \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (s'a + a' * b') = c * (s + a * b) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A)
 10. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 0 < m\<rbrakk> \<Longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba))
[PROOF STEP]
apply (rule_tac [9] impI, rule_tac [9] conjI)+
[PROOF STATE]
proof (prove)
goal (12 subgoals):
 1. \<And>evsR1 S A U sa na runa. \<lbrakk>(evsR1, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK sa \<notin> U; sa \<noteq> 0; NonceS (S (Card na, na, runa)) = None; 0 < m; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; sa = s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC2 S A U aa ma na runa X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK aa \<notin> U; NonceS (S (User ma, na, runa)) = None; Says na runa (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = (if symK n' = symK ma then sa else 0); 0 < m; 0 < ma; symK n' = symK ma; m = ma \<and> n = na \<and> run = runa; sa = s; aa = a; ExtMapK (S (User ma, na, runa)) = Some b; IntAgrK (S (User ma, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsC2 S A U aa ma na runa X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK aa \<notin> U; NonceS (S (User ma, na, runa)) = None; Says na runa (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = (if symK n' = symK ma then sa else 0); 0 < m; 0 < ma; symK n' \<noteq> symK ma; m = ma \<and> n = na \<and> run = runa; s = 0; aa = a; ExtMapK (S (User ma, na, runa)) = Some b; IntAgrK (S (User ma, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (a * b)); s' + a' * b' = a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (a * b))) \<notin> A
 4. \<And>evsR2 S A U ba na runa X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ba \<notin> U; \<exists>y. NonceS (S (Card na, na, runa)) = Some y; IntMapK (S (Card na, na, runa)) = None; Says na runa 2 X (Card na) (pubAK aa) \<in> set evsR2; 0 < m; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsC3 S A U ca ma na runa sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ca \<notin> U; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = None; Says na runa 2 X (User ma) (pubAK ba) \<in> set evsC3; ca \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; 0 < ma; m = ma \<and> n = na \<and> run = runa; sa = s; aa = a; ba = b; ca = c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca * (sa + a' * b') = c * (s + a * b); sa + a' * b' = s + a * b; da \<noteq> 0; sa + aa * ba \<noteq> 0; s'a = s'; Pri_AgrK ca \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b))
 7. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<and> Pri_AgrK ca \<in> A; s' = sa; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca * (sa + a' * b') = c * (s + a * b); sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 8. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<and> Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 9. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; s'a = sa \<and> Pri_AgrK ca \<in> A\<rbrakk> \<Longrightarrow> n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> sa = s' \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (s' + a' * b') = c * (s + a * b) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b)) \<and> Key (sesK (c * d * (s + a * b))) \<notin> A
 10. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; s'a = sa \<and> Pri_AgrK ca \<in> A\<rbrakk> \<Longrightarrow> (n = na \<longrightarrow> run \<noteq> runa) \<longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba))
 11. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A\<rbrakk> \<Longrightarrow> (s'a = sa \<longrightarrow> Pri_AgrK ca \<notin> A) \<longrightarrow> n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> sa = s' \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (s'a + a' * b') = c * (s + a * b) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 12. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 0 < m\<rbrakk> \<Longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba))
[PROOF STEP]
apply (rule_tac [9] impI)+
[PROOF STATE]
proof (prove)
goal (12 subgoals):
 1. \<And>evsR1 S A U sa na runa. \<lbrakk>(evsR1, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK sa \<notin> U; sa \<noteq> 0; NonceS (S (Card na, na, runa)) = None; 0 < m; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; sa = s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC2 S A U aa ma na runa X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK aa \<notin> U; NonceS (S (User ma, na, runa)) = None; Says na runa (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = (if symK n' = symK ma then sa else 0); 0 < m; 0 < ma; symK n' = symK ma; m = ma \<and> n = na \<and> run = runa; sa = s; aa = a; ExtMapK (S (User ma, na, runa)) = Some b; IntAgrK (S (User ma, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsC2 S A U aa ma na runa X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK aa \<notin> U; NonceS (S (User ma, na, runa)) = None; Says na runa (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = (if symK n' = symK ma then sa else 0); 0 < m; 0 < ma; symK n' \<noteq> symK ma; m = ma \<and> n = na \<and> run = runa; s = 0; aa = a; ExtMapK (S (User ma, na, runa)) = Some b; IntAgrK (S (User ma, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (a * b)); s' + a' * b' = a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (a * b))) \<notin> A
 4. \<And>evsR2 S A U ba na runa X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ba \<notin> U; \<exists>y. NonceS (S (Card na, na, runa)) = Some y; IntMapK (S (Card na, na, runa)) = None; Says na runa 2 X (Card na) (pubAK aa) \<in> set evsR2; 0 < m; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsC3 S A U ca ma na runa sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ca \<notin> U; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = None; Says na runa 2 X (User ma) (pubAK ba) \<in> set evsC3; ca \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; 0 < ma; m = ma \<and> n = na \<and> run = runa; sa = s; aa = a; ba = b; ca = c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca * (sa + a' * b') = c * (s + a * b); sa + a' * b' = s + a * b; da \<noteq> 0; sa + aa * ba \<noteq> 0; s'a = s'; Pri_AgrK ca \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b))
 7. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<and> Pri_AgrK ca \<in> A; s' = sa; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca * (sa + a' * b') = c * (s + a * b); sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 8. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<and> Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 9. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; s'a = sa \<and> Pri_AgrK ca \<in> A; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s' + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b)) \<and> Key (sesK (c * d * (s + a * b))) \<notin> A
 10. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; s'a = sa \<and> Pri_AgrK ca \<in> A\<rbrakk> \<Longrightarrow> (n = na \<longrightarrow> run \<noteq> runa) \<longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba))
 11. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A\<rbrakk> \<Longrightarrow> (s'a = sa \<longrightarrow> Pri_AgrK ca \<notin> A) \<longrightarrow> n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> sa = s' \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (s'a + a' * b') = c * (s + a * b) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 12. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 0 < m\<rbrakk> \<Longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba))
[PROOF STEP]
apply (rule_tac [10] impI)+
[PROOF STATE]
proof (prove)
goal (12 subgoals):
 1. \<And>evsR1 S A U sa na runa. \<lbrakk>(evsR1, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK sa \<notin> U; sa \<noteq> 0; NonceS (S (Card na, na, runa)) = None; 0 < m; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; sa = s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC2 S A U aa ma na runa X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK aa \<notin> U; NonceS (S (User ma, na, runa)) = None; Says na runa (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = (if symK n' = symK ma then sa else 0); 0 < m; 0 < ma; symK n' = symK ma; m = ma \<and> n = na \<and> run = runa; sa = s; aa = a; ExtMapK (S (User ma, na, runa)) = Some b; IntAgrK (S (User ma, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsC2 S A U aa ma na runa X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK aa \<notin> U; NonceS (S (User ma, na, runa)) = None; Says na runa (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = (if symK n' = symK ma then sa else 0); 0 < m; 0 < ma; symK n' \<noteq> symK ma; m = ma \<and> n = na \<and> run = runa; s = 0; aa = a; ExtMapK (S (User ma, na, runa)) = Some b; IntAgrK (S (User ma, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (a * b)); s' + a' * b' = a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (a * b))) \<notin> A
 4. \<And>evsR2 S A U ba na runa X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ba \<notin> U; \<exists>y. NonceS (S (Card na, na, runa)) = Some y; IntMapK (S (Card na, na, runa)) = None; Says na runa 2 X (Card na) (pubAK aa) \<in> set evsR2; 0 < m; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsC3 S A U ca ma na runa sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ca \<notin> U; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = None; Says na runa 2 X (User ma) (pubAK ba) \<in> set evsC3; ca \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; 0 < ma; m = ma \<and> n = na \<and> run = runa; sa = s; aa = a; ba = b; ca = c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca * (sa + a' * b') = c * (s + a * b); sa + a' * b' = s + a * b; da \<noteq> 0; sa + aa * ba \<noteq> 0; s'a = s'; Pri_AgrK ca \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b))
 7. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<and> Pri_AgrK ca \<in> A; s' = sa; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca * (sa + a' * b') = c * (s + a * b); sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 8. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<and> Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 9. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; s'a = sa \<and> Pri_AgrK ca \<in> A; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s' + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b)) \<and> Key (sesK (c * d * (s + a * b))) \<notin> A
 10. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; s'a = sa \<and> Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba))
 11. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A\<rbrakk> \<Longrightarrow> (s'a = sa \<longrightarrow> Pri_AgrK ca \<notin> A) \<longrightarrow> n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> sa = s' \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (s'a + a' * b') = c * (s + a * b) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 12. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 0 < m\<rbrakk> \<Longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba))
[PROOF STEP]
apply (rule_tac [10] notI)
[PROOF STATE]
proof (prove)
goal (12 subgoals):
 1. \<And>evsR1 S A U sa na runa. \<lbrakk>(evsR1, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK sa \<notin> U; sa \<noteq> 0; NonceS (S (Card na, na, runa)) = None; 0 < m; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; sa = s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC2 S A U aa ma na runa X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK aa \<notin> U; NonceS (S (User ma, na, runa)) = None; Says na runa (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = (if symK n' = symK ma then sa else 0); 0 < m; 0 < ma; symK n' = symK ma; m = ma \<and> n = na \<and> run = runa; sa = s; aa = a; ExtMapK (S (User ma, na, runa)) = Some b; IntAgrK (S (User ma, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsC2 S A U aa ma na runa X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK aa \<notin> U; NonceS (S (User ma, na, runa)) = None; Says na runa (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = (if symK n' = symK ma then sa else 0); 0 < m; 0 < ma; symK n' \<noteq> symK ma; m = ma \<and> n = na \<and> run = runa; s = 0; aa = a; ExtMapK (S (User ma, na, runa)) = Some b; IntAgrK (S (User ma, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (a * b)); s' + a' * b' = a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (a * b))) \<notin> A
 4. \<And>evsR2 S A U ba na runa X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ba \<notin> U; \<exists>y. NonceS (S (Card na, na, runa)) = Some y; IntMapK (S (Card na, na, runa)) = None; Says na runa 2 X (Card na) (pubAK aa) \<in> set evsR2; 0 < m; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsC3 S A U ca ma na runa sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ca \<notin> U; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = None; Says na runa 2 X (User ma) (pubAK ba) \<in> set evsC3; ca \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; 0 < ma; m = ma \<and> n = na \<and> run = runa; sa = s; aa = a; ba = b; ca = c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca * (sa + a' * b') = c * (s + a * b); sa + a' * b' = s + a * b; da \<noteq> 0; sa + aa * ba \<noteq> 0; s'a = s'; Pri_AgrK ca \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b))
 7. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<and> Pri_AgrK ca \<in> A; s' = sa; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca * (sa + a' * b') = c * (s + a * b); sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 8. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<and> Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 9. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; s'a = sa \<and> Pri_AgrK ca \<in> A; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s' + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b)) \<and> Key (sesK (c * d * (s + a * b))) \<notin> A
 10. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; s'a = sa \<and> Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 11. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A\<rbrakk> \<Longrightarrow> (s'a = sa \<longrightarrow> Pri_AgrK ca \<notin> A) \<longrightarrow> n = na \<and> run = runa \<longrightarrow> NonceS (S (User m, na, runa)) = Some s \<longrightarrow> IntMapK (S (User m, na, runa)) = Some a \<longrightarrow> ExtMapK (S (User m, na, runa)) = Some b \<longrightarrow> IntAgrK (S (User m, na, runa)) = Some c \<longrightarrow> sa = s' \<longrightarrow> ba = b' \<longrightarrow> aa = a' \<longrightarrow> da = d \<longrightarrow> ca * (s'a + a' * b') = c * (s + a * b) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 12. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 0 < m\<rbrakk> \<Longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba))
[PROOF STEP]
apply (rule_tac [11] impI)+
[PROOF STATE]
proof (prove)
goal (12 subgoals):
 1. \<And>evsR1 S A U sa na runa. \<lbrakk>(evsR1, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK sa \<notin> U; sa \<noteq> 0; NonceS (S (Card na, na, runa)) = None; 0 < m; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; sa = s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC2 S A U aa ma na runa X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK aa \<notin> U; NonceS (S (User ma, na, runa)) = None; Says na runa (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = (if symK n' = symK ma then sa else 0); 0 < m; 0 < ma; symK n' = symK ma; m = ma \<and> n = na \<and> run = runa; sa = s; aa = a; ExtMapK (S (User ma, na, runa)) = Some b; IntAgrK (S (User ma, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsC2 S A U aa ma na runa X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK aa \<notin> U; NonceS (S (User ma, na, runa)) = None; Says na runa (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = (if symK n' = symK ma then sa else 0); 0 < m; 0 < ma; symK n' \<noteq> symK ma; m = ma \<and> n = na \<and> run = runa; s = 0; aa = a; ExtMapK (S (User ma, na, runa)) = Some b; IntAgrK (S (User ma, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (a * b)); s' + a' * b' = a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (a * b))) \<notin> A
 4. \<And>evsR2 S A U ba na runa X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ba \<notin> U; \<exists>y. NonceS (S (Card na, na, runa)) = Some y; IntMapK (S (Card na, na, runa)) = None; Says na runa 2 X (Card na) (pubAK aa) \<in> set evsR2; 0 < m; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsC3 S A U ca ma na runa sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ca \<notin> U; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = None; Says na runa 2 X (User ma) (pubAK ba) \<in> set evsC3; ca \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; 0 < ma; m = ma \<and> n = na \<and> run = runa; sa = s; aa = a; ba = b; ca = c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca * (sa + a' * b') = c * (s + a * b); sa + a' * b' = s + a * b; da \<noteq> 0; sa + aa * ba \<noteq> 0; s'a = s'; Pri_AgrK ca \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b))
 7. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<and> Pri_AgrK ca \<in> A; s' = sa; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca * (sa + a' * b') = c * (s + a * b); sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 8. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<and> Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 9. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; s'a = sa \<and> Pri_AgrK ca \<in> A; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s' + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b)) \<and> Key (sesK (c * d * (s + a * b))) \<notin> A
 10. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; s'a = sa \<and> Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 11. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; s'a = sa \<longrightarrow> Pri_AgrK ca \<notin> A; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 12. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 0 < m\<rbrakk> \<Longrightarrow> NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba))
[PROOF STEP]
apply (rule_tac [12] impI)+
[PROOF STATE]
proof (prove)
goal (12 subgoals):
 1. \<And>evsR1 S A U sa na runa. \<lbrakk>(evsR1, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK sa \<notin> U; sa \<noteq> 0; NonceS (S (Card na, na, runa)) = None; 0 < m; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; sa = s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC2 S A U aa ma na runa X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK aa \<notin> U; NonceS (S (User ma, na, runa)) = None; Says na runa (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = (if symK n' = symK ma then sa else 0); 0 < m; 0 < ma; symK n' = symK ma; m = ma \<and> n = na \<and> run = runa; sa = s; aa = a; ExtMapK (S (User ma, na, runa)) = Some b; IntAgrK (S (User ma, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsC2 S A U aa ma na runa X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK aa \<notin> U; NonceS (S (User ma, na, runa)) = None; Says na runa (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = (if symK n' = symK ma then sa else 0); 0 < m; 0 < ma; symK n' \<noteq> symK ma; m = ma \<and> n = na \<and> run = runa; s = 0; aa = a; ExtMapK (S (User ma, na, runa)) = Some b; IntAgrK (S (User ma, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (a * b)); s' + a' * b' = a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (a * b))) \<notin> A
 4. \<And>evsR2 S A U ba na runa X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ba \<notin> U; \<exists>y. NonceS (S (Card na, na, runa)) = Some y; IntMapK (S (Card na, na, runa)) = None; Says na runa 2 X (Card na) (pubAK aa) \<in> set evsR2; 0 < m; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsC3 S A U ca ma na runa sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ca \<notin> U; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = None; Says na runa 2 X (User ma) (pubAK ba) \<in> set evsC3; ca \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; 0 < ma; m = ma \<and> n = na \<and> run = runa; sa = s; aa = a; ba = b; ca = c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca * (sa + a' * b') = c * (s + a * b); sa + a' * b' = s + a * b; da \<noteq> 0; sa + aa * ba \<noteq> 0; s'a = s'; Pri_AgrK ca \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b))
 7. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<and> Pri_AgrK ca \<in> A; s' = sa; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca * (sa + a' * b') = c * (s + a * b); sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 8. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<and> Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 9. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; s'a = sa \<and> Pri_AgrK ca \<in> A; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s' + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b)) \<and> Key (sesK (c * d * (s + a * b))) \<notin> A
 10. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; s'a = sa \<and> Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 11. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; s'a = sa \<longrightarrow> Pri_AgrK ca \<notin> A; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 12. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * da * (sa + aa * ba))
[PROOF STEP]
apply (rule_tac [12] notI)
[PROOF STATE]
proof (prove)
goal (12 subgoals):
 1. \<And>evsR1 S A U sa na runa. \<lbrakk>(evsR1, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK sa \<notin> U; sa \<noteq> 0; NonceS (S (Card na, na, runa)) = None; 0 < m; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; sa = s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC2 S A U aa ma na runa X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK aa \<notin> U; NonceS (S (User ma, na, runa)) = None; Says na runa (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = (if symK n' = symK ma then sa else 0); 0 < m; 0 < ma; symK n' = symK ma; m = ma \<and> n = na \<and> run = runa; sa = s; aa = a; ExtMapK (S (User ma, na, runa)) = Some b; IntAgrK (S (User ma, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsC2 S A U aa ma na runa X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK aa \<notin> U; NonceS (S (User ma, na, runa)) = None; Says na runa (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = (if symK n' = symK ma then sa else 0); 0 < m; 0 < ma; symK n' \<noteq> symK ma; m = ma \<and> n = na \<and> run = runa; s = 0; aa = a; ExtMapK (S (User ma, na, runa)) = Some b; IntAgrK (S (User ma, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (a * b)); s' + a' * b' = a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (a * b))) \<notin> A
 4. \<And>evsR2 S A U ba na runa X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ba \<notin> U; \<exists>y. NonceS (S (Card na, na, runa)) = Some y; IntMapK (S (Card na, na, runa)) = None; Says na runa 2 X (Card na) (pubAK aa) \<in> set evsR2; 0 < m; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; NonceS (S (Card na, na, runa)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsC3 S A U ca ma na runa sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK ca \<notin> U; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = None; Says na runa 2 X (User ma) (pubAK ba) \<in> set evsC3; ca \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; 0 < ma; m = ma \<and> n = na \<and> run = runa; sa = s; aa = a; ba = b; ca = c; NonceS (S (Card na, na, runa)) = Some s'; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = Some d; ExtAgrK (S (Card na, na, runa)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca * (sa + a' * b') = c * (s + a * b); sa + a' * b' = s + a * b; da \<noteq> 0; sa + aa * ba \<noteq> 0; s'a = s'; Pri_AgrK ca \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b))
 7. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<and> Pri_AgrK ca \<in> A; s' = sa; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca * (sa + a' * b') = c * (s + a * b); sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 8. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<and> Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 9. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; s'a = sa \<and> Pri_AgrK ca \<in> A; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s' + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> sesK (c * d * (s + a * b)) \<noteq> sesK (ca * d * (s + a * b)) \<and> Key (sesK (c * d * (s + a * b))) \<notin> A
 10. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; s'a = sa \<and> Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 11. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (s'a + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (s'a + aa * ba))) \<notin> U; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; s'a = sa \<longrightarrow> Pri_AgrK ca \<notin> A; n = na \<and> run = runa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 12. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; NonceS (S (User m, n, run)) = Some s \<longrightarrow> IntMapK (S (User m, n, run)) = Some a \<longrightarrow> ExtMapK (S (User m, n, run)) = Some b \<longrightarrow> IntAgrK (S (User m, n, run)) = Some c \<longrightarrow> NonceS (S (Card n, n, run)) = Some s' \<longrightarrow> IntMapK (S (Card n, n, run)) = Some b' \<longrightarrow> ExtMapK (S (Card n, n, run)) = Some a' \<longrightarrow> IntAgrK (S (Card n, n, run)) = Some d \<longrightarrow> ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b)) \<longrightarrow> s' + a' * b' = s + a * b \<longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
proof simp_all
[PROOF STATE]
proof (state)
goal (11 subgoals):
 1. \<And>evsR1 S A U sa na. \<lbrakk>(evsR1, S, A, U) \<in> protocol; Pri_AgrK s' \<notin> U; s' \<noteq> 0; NonceS (S (Card na, na, run)) = None; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK ma) (Pri_AgrK s)) \<in> set evsC2; s'a = s; 0 < ma; symK n' = symK ma; m = ma; sa = s; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = 0; 0 < ma; symK n' \<noteq> symK ma; m = ma; s = 0; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (a * b)); s' + a' * b' = a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (a * b))) \<notin> A
 4. \<And>evsR2 S A U ba na X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; Pri_AgrK b' \<notin> U; IntMapK (S (Card na, na, run)) = None; Says na run 2 X (Card na) (pubAK a') \<in> set evsR2; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; NonceS (S (Card na, na, run)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 7. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 8. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 9. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 10. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 11. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
fix evsR1 S A U n run
[PROOF STATE]
proof (state)
goal (11 subgoals):
 1. \<And>evsR1 S A U sa na. \<lbrakk>(evsR1, S, A, U) \<in> protocol; Pri_AgrK s' \<notin> U; s' \<noteq> 0; NonceS (S (Card na, na, run)) = None; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK ma) (Pri_AgrK s)) \<in> set evsC2; s'a = s; 0 < ma; symK n' = symK ma; m = ma; sa = s; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = 0; 0 < ma; symK n' \<noteq> symK ma; m = ma; s = 0; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (a * b)); s' + a' * b' = a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (a * b))) \<notin> A
 4. \<And>evsR2 S A U ba na X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; Pri_AgrK b' \<notin> U; IntMapK (S (Card na, na, run)) = None; Says na run 2 X (Card na) (pubAK a') \<in> set evsR2; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; NonceS (S (Card na, na, run)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 7. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 8. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 9. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 10. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 11. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
assume "(evsR1, S, A, U) \<in> protocol" and
   "NonceS (S (Card n, n, run)) = None"
[PROOF STATE]
proof (state)
this:
(evsR1, S, A, U) \<in> protocol
NonceS (S (Card n, n, run)) = None

goal (11 subgoals):
 1. \<And>evsR1 S A U sa na. \<lbrakk>(evsR1, S, A, U) \<in> protocol; Pri_AgrK s' \<notin> U; s' \<noteq> 0; NonceS (S (Card na, na, run)) = None; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK ma) (Pri_AgrK s)) \<in> set evsC2; s'a = s; 0 < ma; symK n' = symK ma; m = ma; sa = s; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = 0; 0 < ma; symK n' \<noteq> symK ma; m = ma; s = 0; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (a * b)); s' + a' * b' = a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (a * b))) \<notin> A
 4. \<And>evsR2 S A U ba na X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; Pri_AgrK b' \<notin> U; IntMapK (S (Card na, na, run)) = None; Says na run 2 X (Card na) (pubAK a') \<in> set evsR2; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; NonceS (S (Card na, na, run)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 7. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 8. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 9. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 10. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 11. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
hence "IntMapK (S (Card n, n, run)) = None"
[PROOF STATE]
proof (prove)
using this:
(evsR1, S, A, U) \<in> protocol
NonceS (S (Card n, n, run)) = None

goal (1 subgoal):
 1. IntMapK (S (Card n, n, run)) = None
[PROOF STEP]
by (rule pr_state_1)
[PROOF STATE]
proof (state)
this:
IntMapK (S (Card n, n, run)) = None

goal (11 subgoals):
 1. \<And>evsR1 S A U sa na. \<lbrakk>(evsR1, S, A, U) \<in> protocol; Pri_AgrK s' \<notin> U; s' \<noteq> 0; NonceS (S (Card na, na, run)) = None; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK ma) (Pri_AgrK s)) \<in> set evsC2; s'a = s; 0 < ma; symK n' = symK ma; m = ma; sa = s; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = 0; 0 < ma; symK n' \<noteq> symK ma; m = ma; s = 0; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (a * b)); s' + a' * b' = a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (a * b))) \<notin> A
 4. \<And>evsR2 S A U ba na X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; Pri_AgrK b' \<notin> U; IntMapK (S (Card na, na, run)) = None; Says na run 2 X (Card na) (pubAK a') \<in> set evsR2; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; NonceS (S (Card na, na, run)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 7. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 8. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 9. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 10. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 11. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
IntMapK (S (Card n, n, run)) = None

goal (11 subgoals):
 1. \<And>evsR1 S A U sa na. \<lbrakk>(evsR1, S, A, U) \<in> protocol; Pri_AgrK s' \<notin> U; s' \<noteq> 0; NonceS (S (Card na, na, run)) = None; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK ma) (Pri_AgrK s)) \<in> set evsC2; s'a = s; 0 < ma; symK n' = symK ma; m = ma; sa = s; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = 0; 0 < ma; symK n' \<noteq> symK ma; m = ma; s = 0; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (a * b)); s' + a' * b' = a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (a * b))) \<notin> A
 4. \<And>evsR2 S A U ba na X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; Pri_AgrK b' \<notin> U; IntMapK (S (Card na, na, run)) = None; Says na run 2 X (Card na) (pubAK a') \<in> set evsR2; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; NonceS (S (Card na, na, run)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 7. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 8. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 9. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 10. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 11. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
assume "IntMapK (S (Card n, n, run)) = Some b'"
[PROOF STATE]
proof (state)
this:
IntMapK (S (Card n, n, run)) = Some b'

goal (11 subgoals):
 1. \<And>evsR1 S A U sa na. \<lbrakk>(evsR1, S, A, U) \<in> protocol; Pri_AgrK s' \<notin> U; s' \<noteq> 0; NonceS (S (Card na, na, run)) = None; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK ma) (Pri_AgrK s)) \<in> set evsC2; s'a = s; 0 < ma; symK n' = symK ma; m = ma; sa = s; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = 0; 0 < ma; symK n' \<noteq> symK ma; m = ma; s = 0; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (a * b)); s' + a' * b' = a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (a * b))) \<notin> A
 4. \<And>evsR2 S A U ba na X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; Pri_AgrK b' \<notin> U; IntMapK (S (Card na, na, run)) = None; Says na run 2 X (Card na) (pubAK a') \<in> set evsR2; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; NonceS (S (Card na, na, run)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 7. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 8. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 9. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 10. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 11. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
IntMapK (S (Card n, n, run)) = None
IntMapK (S (Card n, n, run)) = Some b'
[PROOF STEP]
show "Key (sesK (c * d * (s + a * b))) \<notin> A"
[PROOF STATE]
proof (prove)
using this:
IntMapK (S (Card n, n, run)) = None
IntMapK (S (Card n, n, run)) = Some b'

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

goal (10 subgoals):
 1. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK ma) (Pri_AgrK s)) \<in> set evsC2; s'a = s; 0 < ma; symK n' = symK ma; m = ma; sa = s; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = 0; 0 < ma; symK n' \<noteq> symK ma; m = ma; s = 0; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (a * b)); s' + a' * b' = a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (a * b))) \<notin> A
 3. \<And>evsR2 S A U ba na X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; Pri_AgrK b' \<notin> U; IntMapK (S (Card na, na, run)) = None; Says na run 2 X (Card na) (pubAK a') \<in> set evsR2; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; NonceS (S (Card na, na, run)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 6. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 7. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 8. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 9. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 10. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (10 subgoals):
 1. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK ma) (Pri_AgrK s)) \<in> set evsC2; s'a = s; 0 < ma; symK n' = symK ma; m = ma; sa = s; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = 0; 0 < ma; symK n' \<noteq> symK ma; m = ma; s = 0; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (a * b)); s' + a' * b' = a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (a * b))) \<notin> A
 3. \<And>evsR2 S A U ba na X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; Pri_AgrK b' \<notin> U; IntMapK (S (Card na, na, run)) = None; Says na run 2 X (Card na) (pubAK a') \<in> set evsR2; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; NonceS (S (Card na, na, run)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 6. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 7. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 8. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 9. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 10. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
fix evsC2 S A U m n run
[PROOF STATE]
proof (state)
goal (10 subgoals):
 1. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK ma) (Pri_AgrK s)) \<in> set evsC2; s'a = s; 0 < ma; symK n' = symK ma; m = ma; sa = s; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = 0; 0 < ma; symK n' \<noteq> symK ma; m = ma; s = 0; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (a * b)); s' + a' * b' = a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (a * b))) \<notin> A
 3. \<And>evsR2 S A U ba na X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; Pri_AgrK b' \<notin> U; IntMapK (S (Card na, na, run)) = None; Says na run 2 X (Card na) (pubAK a') \<in> set evsR2; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; NonceS (S (Card na, na, run)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 6. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 7. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 8. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 9. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 10. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
assume A: "(evsC2, S, A, U) \<in> protocol"
[PROOF STATE]
proof (state)
this:
(evsC2, S, A, U) \<in> protocol

goal (10 subgoals):
 1. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK ma) (Pri_AgrK s)) \<in> set evsC2; s'a = s; 0 < ma; symK n' = symK ma; m = ma; sa = s; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = 0; 0 < ma; symK n' \<noteq> symK ma; m = ma; s = 0; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (a * b)); s' + a' * b' = a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (a * b))) \<notin> A
 3. \<And>evsR2 S A U ba na X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; Pri_AgrK b' \<notin> U; IntMapK (S (Card na, na, run)) = None; Says na run 2 X (Card na) (pubAK a') \<in> set evsR2; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; NonceS (S (Card na, na, run)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 6. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 7. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 8. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 9. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 10. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
(evsC2, S, A, U) \<in> protocol

goal (10 subgoals):
 1. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK ma) (Pri_AgrK s)) \<in> set evsC2; s'a = s; 0 < ma; symK n' = symK ma; m = ma; sa = s; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = 0; 0 < ma; symK n' \<noteq> symK ma; m = ma; s = 0; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (a * b)); s' + a' * b' = a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (a * b))) \<notin> A
 3. \<And>evsR2 S A U ba na X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; Pri_AgrK b' \<notin> U; IntMapK (S (Card na, na, run)) = None; Says na run 2 X (Card na) (pubAK a') \<in> set evsR2; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; NonceS (S (Card na, na, run)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 6. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 7. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 8. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 9. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 10. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
assume "NonceS (S (User m, n, run)) = None"
[PROOF STATE]
proof (state)
this:
NonceS (S (User m, n, run)) = None

goal (10 subgoals):
 1. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK ma) (Pri_AgrK s)) \<in> set evsC2; s'a = s; 0 < ma; symK n' = symK ma; m = ma; sa = s; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = 0; 0 < ma; symK n' \<noteq> symK ma; m = ma; s = 0; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (a * b)); s' + a' * b' = a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (a * b))) \<notin> A
 3. \<And>evsR2 S A U ba na X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; Pri_AgrK b' \<notin> U; IntMapK (S (Card na, na, run)) = None; Says na run 2 X (Card na) (pubAK a') \<in> set evsR2; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; NonceS (S (Card na, na, run)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 6. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 7. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 8. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 9. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 10. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
(evsC2, S, A, U) \<in> protocol
NonceS (S (User m, n, run)) = None
[PROOF STEP]
have "IntMapK (S (User m, n, run)) = None"
[PROOF STATE]
proof (prove)
using this:
(evsC2, S, A, U) \<in> protocol
NonceS (S (User m, n, run)) = None

goal (1 subgoal):
 1. IntMapK (S (User m, n, run)) = None
[PROOF STEP]
by (rule pr_state_1)
[PROOF STATE]
proof (state)
this:
IntMapK (S (User m, n, run)) = None

goal (10 subgoals):
 1. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK ma) (Pri_AgrK s)) \<in> set evsC2; s'a = s; 0 < ma; symK n' = symK ma; m = ma; sa = s; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = 0; 0 < ma; symK n' \<noteq> symK ma; m = ma; s = 0; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (a * b)); s' + a' * b' = a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (a * b))) \<notin> A
 3. \<And>evsR2 S A U ba na X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; Pri_AgrK b' \<notin> U; IntMapK (S (Card na, na, run)) = None; Says na run 2 X (Card na) (pubAK a') \<in> set evsR2; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; NonceS (S (Card na, na, run)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 6. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 7. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 8. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 9. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 10. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
with A
[PROOF STATE]
proof (chain)
picking this:
(evsC2, S, A, U) \<in> protocol
IntMapK (S (User m, n, run)) = None
[PROOF STEP]
have "ExtMapK (S (User m, n, run)) = None"
[PROOF STATE]
proof (prove)
using this:
(evsC2, S, A, U) \<in> protocol
IntMapK (S (User m, n, run)) = None

goal (1 subgoal):
 1. ExtMapK (S (User m, n, run)) = None
[PROOF STEP]
by (rule pr_state_2)
[PROOF STATE]
proof (state)
this:
ExtMapK (S (User m, n, run)) = None

goal (10 subgoals):
 1. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK ma) (Pri_AgrK s)) \<in> set evsC2; s'a = s; 0 < ma; symK n' = symK ma; m = ma; sa = s; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = 0; 0 < ma; symK n' \<noteq> symK ma; m = ma; s = 0; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (a * b)); s' + a' * b' = a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (a * b))) \<notin> A
 3. \<And>evsR2 S A U ba na X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; Pri_AgrK b' \<notin> U; IntMapK (S (Card na, na, run)) = None; Says na run 2 X (Card na) (pubAK a') \<in> set evsR2; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; NonceS (S (Card na, na, run)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 6. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 7. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 8. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 9. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 10. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
ExtMapK (S (User m, n, run)) = None

goal (10 subgoals):
 1. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK ma) (Pri_AgrK s)) \<in> set evsC2; s'a = s; 0 < ma; symK n' = symK ma; m = ma; sa = s; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = 0; 0 < ma; symK n' \<noteq> symK ma; m = ma; s = 0; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (a * b)); s' + a' * b' = a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (a * b))) \<notin> A
 3. \<And>evsR2 S A U ba na X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; Pri_AgrK b' \<notin> U; IntMapK (S (Card na, na, run)) = None; Says na run 2 X (Card na) (pubAK a') \<in> set evsR2; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; NonceS (S (Card na, na, run)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 6. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 7. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 8. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 9. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 10. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
assume "ExtMapK (S (User m, n, run)) = Some b"
[PROOF STATE]
proof (state)
this:
ExtMapK (S (User m, n, run)) = Some b

goal (10 subgoals):
 1. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK ma) (Pri_AgrK s)) \<in> set evsC2; s'a = s; 0 < ma; symK n' = symK ma; m = ma; sa = s; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK n') (Pri_AgrK sa)) \<in> set evsC2; s'a = 0; 0 < ma; symK n' \<noteq> symK ma; m = ma; s = 0; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (a * b)); s' + a' * b' = a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (a * b))) \<notin> A
 3. \<And>evsR2 S A U ba na X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; Pri_AgrK b' \<notin> U; IntMapK (S (Card na, na, run)) = None; Says na run 2 X (Card na) (pubAK a') \<in> set evsR2; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; NonceS (S (Card na, na, run)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 6. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 7. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 8. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 9. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 10. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
ExtMapK (S (User m, n, run)) = None
ExtMapK (S (User m, n, run)) = Some b
[PROOF STEP]
show "Key (sesK (c * d * (a * b))) \<notin> A"
[PROOF STATE]
proof (prove)
using this:
ExtMapK (S (User m, n, run)) = None
ExtMapK (S (User m, n, run)) = Some b

goal (1 subgoal):
 1. Key (sesK (c * d * (a * b))) \<notin> A
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Key (sesK (c * d * (a * b))) \<notin> A

goal (9 subgoals):
 1. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK ma) (Pri_AgrK s)) \<in> set evsC2; s'a = s; 0 < ma; symK n' = symK ma; m = ma; sa = s; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsR2 S A U ba na X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; Pri_AgrK b' \<notin> U; IntMapK (S (Card na, na, run)) = None; Says na run 2 X (Card na) (pubAK a') \<in> set evsR2; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; NonceS (S (Card na, na, run)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 5. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 7. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 8. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 9. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (9 subgoals):
 1. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK ma) (Pri_AgrK s)) \<in> set evsC2; s'a = s; 0 < ma; symK n' = symK ma; m = ma; sa = s; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsR2 S A U ba na X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; Pri_AgrK b' \<notin> U; IntMapK (S (Card na, na, run)) = None; Says na run 2 X (Card na) (pubAK a') \<in> set evsR2; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; NonceS (S (Card na, na, run)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 5. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 7. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 8. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 9. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
fix evsC2 S A U m n run
[PROOF STATE]
proof (state)
goal (9 subgoals):
 1. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK ma) (Pri_AgrK s)) \<in> set evsC2; s'a = s; 0 < ma; symK n' = symK ma; m = ma; sa = s; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsR2 S A U ba na X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; Pri_AgrK b' \<notin> U; IntMapK (S (Card na, na, run)) = None; Says na run 2 X (Card na) (pubAK a') \<in> set evsR2; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; NonceS (S (Card na, na, run)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 5. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 7. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 8. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 9. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
assume A: "(evsC2, S, A, U) \<in> protocol"
[PROOF STATE]
proof (state)
this:
(evsC2, S, A, U) \<in> protocol

goal (9 subgoals):
 1. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK ma) (Pri_AgrK s)) \<in> set evsC2; s'a = s; 0 < ma; symK n' = symK ma; m = ma; sa = s; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsR2 S A U ba na X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; Pri_AgrK b' \<notin> U; IntMapK (S (Card na, na, run)) = None; Says na run 2 X (Card na) (pubAK a') \<in> set evsR2; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; NonceS (S (Card na, na, run)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 5. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 7. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 8. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 9. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
(evsC2, S, A, U) \<in> protocol

goal (9 subgoals):
 1. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK ma) (Pri_AgrK s)) \<in> set evsC2; s'a = s; 0 < ma; symK n' = symK ma; m = ma; sa = s; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsR2 S A U ba na X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; Pri_AgrK b' \<notin> U; IntMapK (S (Card na, na, run)) = None; Says na run 2 X (Card na) (pubAK a') \<in> set evsR2; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; NonceS (S (Card na, na, run)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 5. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 7. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 8. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 9. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
assume "NonceS (S (User m, n, run)) = None"
[PROOF STATE]
proof (state)
this:
NonceS (S (User m, n, run)) = None

goal (9 subgoals):
 1. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK ma) (Pri_AgrK s)) \<in> set evsC2; s'a = s; 0 < ma; symK n' = symK ma; m = ma; sa = s; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsR2 S A U ba na X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; Pri_AgrK b' \<notin> U; IntMapK (S (Card na, na, run)) = None; Says na run 2 X (Card na) (pubAK a') \<in> set evsR2; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; NonceS (S (Card na, na, run)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 5. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 7. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 8. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 9. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
(evsC2, S, A, U) \<in> protocol
NonceS (S (User m, n, run)) = None
[PROOF STEP]
have "IntMapK (S (User m, n, run)) = None"
[PROOF STATE]
proof (prove)
using this:
(evsC2, S, A, U) \<in> protocol
NonceS (S (User m, n, run)) = None

goal (1 subgoal):
 1. IntMapK (S (User m, n, run)) = None
[PROOF STEP]
by (rule pr_state_1)
[PROOF STATE]
proof (state)
this:
IntMapK (S (User m, n, run)) = None

goal (9 subgoals):
 1. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK ma) (Pri_AgrK s)) \<in> set evsC2; s'a = s; 0 < ma; symK n' = symK ma; m = ma; sa = s; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsR2 S A U ba na X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; Pri_AgrK b' \<notin> U; IntMapK (S (Card na, na, run)) = None; Says na run 2 X (Card na) (pubAK a') \<in> set evsR2; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; NonceS (S (Card na, na, run)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 5. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 7. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 8. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 9. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
with A
[PROOF STATE]
proof (chain)
picking this:
(evsC2, S, A, U) \<in> protocol
IntMapK (S (User m, n, run)) = None
[PROOF STEP]
have "ExtMapK (S (User m, n, run)) = None"
[PROOF STATE]
proof (prove)
using this:
(evsC2, S, A, U) \<in> protocol
IntMapK (S (User m, n, run)) = None

goal (1 subgoal):
 1. ExtMapK (S (User m, n, run)) = None
[PROOF STEP]
by (rule pr_state_2)
[PROOF STATE]
proof (state)
this:
ExtMapK (S (User m, n, run)) = None

goal (9 subgoals):
 1. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK ma) (Pri_AgrK s)) \<in> set evsC2; s'a = s; 0 < ma; symK n' = symK ma; m = ma; sa = s; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsR2 S A U ba na X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; Pri_AgrK b' \<notin> U; IntMapK (S (Card na, na, run)) = None; Says na run 2 X (Card na) (pubAK a') \<in> set evsR2; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; NonceS (S (Card na, na, run)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 5. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 7. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 8. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 9. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
ExtMapK (S (User m, n, run)) = None

goal (9 subgoals):
 1. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK ma) (Pri_AgrK s)) \<in> set evsC2; s'a = s; 0 < ma; symK n' = symK ma; m = ma; sa = s; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsR2 S A U ba na X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; Pri_AgrK b' \<notin> U; IntMapK (S (Card na, na, run)) = None; Says na run 2 X (Card na) (pubAK a') \<in> set evsR2; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; NonceS (S (Card na, na, run)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 5. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 7. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 8. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 9. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
assume "ExtMapK (S (User m, n, run)) = Some b"
[PROOF STATE]
proof (state)
this:
ExtMapK (S (User m, n, run)) = Some b

goal (9 subgoals):
 1. \<And>evsC2 S A U aa ma X n' sa s'a. \<lbrakk>(evsC2, S, A, U) \<in> protocol; Pri_AgrK a \<notin> U; NonceS (S (User ma, n, run)) = None; Says n run (Suc 0) X (User ma) (Crypt (symK ma) (Pri_AgrK s)) \<in> set evsC2; s'a = s; 0 < ma; symK n' = symK ma; m = ma; sa = s; aa = a; ExtMapK (S (User ma, n, run)) = Some b; IntAgrK (S (User ma, n, run)) = Some c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsR2 S A U ba na X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; Pri_AgrK b' \<notin> U; IntMapK (S (Card na, na, run)) = None; Says na run 2 X (Card na) (pubAK a') \<in> set evsR2; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; NonceS (S (Card na, na, run)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 5. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 7. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 8. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 9. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
ExtMapK (S (User m, n, run)) = None
ExtMapK (S (User m, n, run)) = Some b
[PROOF STEP]
show "Key (sesK (c * d * (s + a * b))) \<notin> A"
[PROOF STATE]
proof (prove)
using this:
ExtMapK (S (User m, n, run)) = None
ExtMapK (S (User m, n, run)) = Some b

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

goal (8 subgoals):
 1. \<And>evsR2 S A U ba na X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; Pri_AgrK b' \<notin> U; IntMapK (S (Card na, na, run)) = None; Says na run 2 X (Card na) (pubAK a') \<in> set evsR2; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; NonceS (S (Card na, na, run)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 4. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 6. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 7. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 8. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (8 subgoals):
 1. \<And>evsR2 S A U ba na X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; Pri_AgrK b' \<notin> U; IntMapK (S (Card na, na, run)) = None; Says na run 2 X (Card na) (pubAK a') \<in> set evsR2; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; NonceS (S (Card na, na, run)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 4. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 6. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 7. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 8. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
fix evsR2 S A U n run
[PROOF STATE]
proof (state)
goal (8 subgoals):
 1. \<And>evsR2 S A U ba na X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; Pri_AgrK b' \<notin> U; IntMapK (S (Card na, na, run)) = None; Says na run 2 X (Card na) (pubAK a') \<in> set evsR2; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; NonceS (S (Card na, na, run)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 4. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 6. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 7. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 8. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
assume A: "(evsR2, S, A, U) \<in> protocol" and
   "IntMapK (S (Card n, n, run)) = None"
[PROOF STATE]
proof (state)
this:
(evsR2, S, A, U) \<in> protocol
IntMapK (S (Card n, n, run)) = None

goal (8 subgoals):
 1. \<And>evsR2 S A U ba na X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; Pri_AgrK b' \<notin> U; IntMapK (S (Card na, na, run)) = None; Says na run 2 X (Card na) (pubAK a') \<in> set evsR2; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; NonceS (S (Card na, na, run)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 4. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 6. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 7. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 8. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
hence "ExtMapK (S (Card n, n, run)) = None"
[PROOF STATE]
proof (prove)
using this:
(evsR2, S, A, U) \<in> protocol
IntMapK (S (Card n, n, run)) = None

goal (1 subgoal):
 1. ExtMapK (S (Card n, n, run)) = None
[PROOF STEP]
by (rule pr_state_2)
[PROOF STATE]
proof (state)
this:
ExtMapK (S (Card n, n, run)) = None

goal (8 subgoals):
 1. \<And>evsR2 S A U ba na X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; Pri_AgrK b' \<notin> U; IntMapK (S (Card na, na, run)) = None; Says na run 2 X (Card na) (pubAK a') \<in> set evsR2; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; NonceS (S (Card na, na, run)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 4. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 6. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 7. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 8. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
with A
[PROOF STATE]
proof (chain)
picking this:
(evsR2, S, A, U) \<in> protocol
ExtMapK (S (Card n, n, run)) = None
[PROOF STEP]
have "IntAgrK (S (Card n, n, run)) = None"
[PROOF STATE]
proof (prove)
using this:
(evsR2, S, A, U) \<in> protocol
ExtMapK (S (Card n, n, run)) = None

goal (1 subgoal):
 1. IntAgrK (S (Card n, n, run)) = None
[PROOF STEP]
by (rule pr_state_3)
[PROOF STATE]
proof (state)
this:
IntAgrK (S (Card n, n, run)) = None

goal (8 subgoals):
 1. \<And>evsR2 S A U ba na X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; Pri_AgrK b' \<notin> U; IntMapK (S (Card na, na, run)) = None; Says na run 2 X (Card na) (pubAK a') \<in> set evsR2; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; NonceS (S (Card na, na, run)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 4. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 6. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 7. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 8. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
IntAgrK (S (Card n, n, run)) = None

goal (8 subgoals):
 1. \<And>evsR2 S A U ba na X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; Pri_AgrK b' \<notin> U; IntMapK (S (Card na, na, run)) = None; Says na run 2 X (Card na) (pubAK a') \<in> set evsR2; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; NonceS (S (Card na, na, run)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 4. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 6. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 7. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 8. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
assume "IntAgrK (S (Card n, n, run)) = Some d"
[PROOF STATE]
proof (state)
this:
IntAgrK (S (Card n, n, run)) = Some d

goal (8 subgoals):
 1. \<And>evsR2 S A U ba na X aa. \<lbrakk>(evsR2, S, A, U) \<in> protocol; Pri_AgrK b' \<notin> U; IntMapK (S (Card na, na, run)) = None; Says na run 2 X (Card na) (pubAK a') \<in> set evsR2; 0 < m; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; NonceS (S (Card na, na, run)) = Some s'; ba = b'; aa = a'; IntAgrK (S (Card na, na, run)) = Some d; ExtAgrK (S (Card na, na, run)) = Some (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 4. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 6. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 7. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 8. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
IntAgrK (S (Card n, n, run)) = None
IntAgrK (S (Card n, n, run)) = Some d
[PROOF STEP]
show "Key (sesK (c * d * (s + a * b))) \<notin> A"
[PROOF STATE]
proof (prove)
using this:
IntAgrK (S (Card n, n, run)) = None
IntAgrK (S (Card n, n, run)) = Some d

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

goal (7 subgoals):
 1. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 3. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 5. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 6. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 7. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (7 subgoals):
 1. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 3. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 5. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 6. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 7. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
fix evsC3 S A U n run
[PROOF STATE]
proof (state)
goal (7 subgoals):
 1. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 3. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 5. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 6. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 7. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
assume A: "(evsC3, S, A, U) \<in> protocol" and
   "NonceS (S (Card n, n, run)) = Some s'" and
   "IntMapK (S (Card n, n, run)) = Some b'" and
   "ExtMapK (S (Card n, n, run)) = Some a'" and
   "IntAgrK (S (Card n, n, run)) = Some d"
[PROOF STATE]
proof (state)
this:
(evsC3, S, A, U) \<in> protocol
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

goal (7 subgoals):
 1. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 3. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 5. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 6. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 7. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
(evsC3, S, A, U) \<in> protocol
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

goal (7 subgoals):
 1. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 3. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 5. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 6. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 7. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
assume B: "s' + a' * b' = s + a * b" and
   "ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b))"
[PROOF STATE]
proof (state)
this:
s' + a' * b' = s + a * b
ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b))

goal (7 subgoals):
 1. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 3. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 5. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 6. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 7. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
hence "ExtAgrK (S (Card n, n, run)) = Some (c * (s' + a' * b'))"
[PROOF STATE]
proof (prove)
using this:
s' + a' * b' = s + a * b
ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b))

goal (1 subgoal):
 1. ExtAgrK (S (Card n, n, run)) = Some (c * (s' + a' * b'))
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
ExtAgrK (S (Card n, n, run)) = Some (c * (s' + a' * b'))

goal (7 subgoals):
 1. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 3. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 5. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 6. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 7. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
ExtAgrK (S (Card n, n, run)) = Some (c * (s' + a' * b'))

goal (7 subgoals):
 1. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 3. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 5. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 6. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 7. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
assume C: "Pri_AgrK c \<notin> U"
[PROOF STATE]
proof (state)
this:
Pri_AgrK c \<notin> U

goal (7 subgoals):
 1. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 3. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 5. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 6. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 7. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
have "A \<subseteq> U"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. A \<subseteq> U
[PROOF STEP]
using A
[PROOF STATE]
proof (prove)
using this:
(evsC3, S, A, U) \<in> protocol

goal (1 subgoal):
 1. A \<subseteq> U
[PROOF STEP]
by (rule pr_analz_used)
[PROOF STATE]
proof (state)
this:
A \<subseteq> U

goal (7 subgoals):
 1. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 3. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 5. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 6. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 7. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
hence "Pri_AgrK c \<notin> A"
[PROOF STATE]
proof (prove)
using this:
A \<subseteq> U

goal (1 subgoal):
 1. Pri_AgrK c \<notin> A
[PROOF STEP]
using C
[PROOF STATE]
proof (prove)
using this:
A \<subseteq> U
Pri_AgrK c \<notin> U

goal (1 subgoal):
 1. Pri_AgrK c \<notin> A
[PROOF STEP]
by (rule contra_subsetD)
[PROOF STATE]
proof (state)
this:
Pri_AgrK c \<notin> A

goal (7 subgoals):
 1. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 3. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 5. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 6. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 7. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
(evsC3, S, A, U) \<in> protocol
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 (c * (s' + a' * b'))
Pri_AgrK c \<notin> A
[PROOF STEP]
have "Key (sesK (c * d * (s' + a' * b'))) \<notin> A"
[PROOF STATE]
proof (prove)
using this:
(evsC3, S, A, U) \<in> protocol
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 (c * (s' + a' * b'))
Pri_AgrK c \<notin> A

goal (1 subgoal):
 1. Key (sesK (c * d * (s' + a' * b'))) \<notin> A
[PROOF STEP]
by (rule pr_ext_agrk_card)
[PROOF STATE]
proof (state)
this:
Key (sesK (c * d * (s' + a' * b'))) \<notin> A

goal (7 subgoals):
 1. \<And>evsC3 S A U ca ma sa aa X ba. \<lbrakk>(evsC3, S, A, U) \<in> protocol; Pri_AgrK c \<notin> U; NonceS (S (User ma, n, run)) = Some s; IntMapK (S (User ma, n, run)) = Some a; ExtMapK (S (User ma, n, run)) = None; Says n run 2 X (User ma) (pubAK b) \<in> set evsC3; c \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < ma; m = ma; sa = s; aa = a; ba = b; ca = c; 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 (c * (s + a * b)); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 3. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 5. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 6. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 7. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
thus "Key (sesK (c * d * (s + a * b))) \<notin> A"
[PROOF STATE]
proof (prove)
using this:
Key (sesK (c * d * (s' + a' * b'))) \<notin> A

goal (1 subgoal):
 1. Key (sesK (c * d * (s + a * b))) \<notin> A
[PROOF STEP]
using B
[PROOF STATE]
proof (prove)
using this:
Key (sesK (c * d * (s' + a' * b'))) \<notin> A
s' + a' * b' = s + a * b

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

goal (6 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 4. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 5. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (6 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 4. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 5. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
fix evsR3 S A U n run
[PROOF STATE]
proof (state)
goal (6 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 4. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 5. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
assume "(evsR3, S, A, U) \<in> protocol"
[PROOF STATE]
proof (state)
this:
(evsR3, S, A, U) \<in> protocol

goal (6 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 4. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 5. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
(evsR3, S, A, U) \<in> protocol

goal (6 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 4. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 5. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
assume "0 < m"
[PROOF STATE]
proof (state)
this:
0 < m

goal (6 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 4. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 5. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
hence "User m \<noteq> Spy"
[PROOF STATE]
proof (prove)
using this:
0 < m

goal (1 subgoal):
 1. User m \<noteq> Spy
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
User m \<noteq> Spy

goal (6 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 4. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 5. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
User m \<noteq> Spy

goal (6 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 4. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 5. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
assume "IntAgrK (S (User m, n, run)) = Some c"
[PROOF STATE]
proof (state)
this:
IntAgrK (S (User m, n, run)) = Some c

goal (6 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 4. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 5. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
(evsR3, S, A, U) \<in> protocol
User m \<noteq> Spy
IntAgrK (S (User m, n, run)) = Some c
[PROOF STEP]
have "Pri_AgrK c \<notin> A"
[PROOF STATE]
proof (prove)
using this:
(evsR3, S, A, U) \<in> protocol
User m \<noteq> Spy
IntAgrK (S (User m, n, run)) = Some c

goal (1 subgoal):
 1. Pri_AgrK c \<notin> A
[PROOF STEP]
by (rule pr_int_agrk_user_2)
[PROOF STATE]
proof (state)
this:
Pri_AgrK c \<notin> A

goal (6 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 4. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 5. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Pri_AgrK c \<notin> A

goal (6 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 4. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 5. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
assume "Pri_AgrK c \<in> A"
[PROOF STATE]
proof (state)
this:
Pri_AgrK c \<in> A

goal (6 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some b'; ExtMapK (S (Card na, na, runa)) = Some a'; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; 0 < m; s' = sa; NonceS (S (User m, na, runa)) = Some s; IntMapK (S (User m, na, runa)) = Some a; ExtMapK (S (User m, na, runa)) = Some b; IntAgrK (S (User m, na, runa)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b; d \<noteq> 0; s + a * b \<noteq> 0; s'a = sa; Pri_AgrK c \<in> A; n = na; run = runa\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 4. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 5. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 6. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
Pri_AgrK c \<notin> A
Pri_AgrK c \<in> A
[PROOF STEP]
show False
[PROOF STATE]
proof (prove)
using this:
Pri_AgrK c \<notin> A
Pri_AgrK c \<in> A

goal (1 subgoal):
 1. False
[PROOF STEP]
by contradiction
[PROOF STATE]
proof (state)
this:
False

goal (5 subgoals):
 1. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 3. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 4. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (5 subgoals):
 1. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 3. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 4. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
fix evsR3 S A U
[PROOF STATE]
proof (state)
goal (5 subgoals):
 1. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 3. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 4. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
assume "(evsR3, S, A, U) \<in> protocol"
[PROOF STATE]
proof (state)
this:
(evsR3, S, A, U) \<in> protocol

goal (5 subgoals):
 1. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 3. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 4. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
hence "A \<subseteq> U"
[PROOF STATE]
proof (prove)
using this:
(evsR3, S, A, U) \<in> protocol

goal (1 subgoal):
 1. A \<subseteq> U
[PROOF STEP]
by (rule pr_analz_used)
[PROOF STATE]
proof (state)
this:
A \<subseteq> U

goal (5 subgoals):
 1. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 3. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 4. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
A \<subseteq> U

goal (5 subgoals):
 1. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 3. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 4. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
assume "Key (sesK (c * d * (s + a * b))) \<notin> U"
[PROOF STATE]
proof (state)
this:
Key (sesK (c * d * (s + a * b))) \<notin> U

goal (5 subgoals):
 1. \<And>evsR3 S A U da na sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some sa; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (c * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; Pri_AgrK c \<in> A; s' = sa; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; ba = b'; aa = a'; da = d; ca = c; sa + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 3. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 4. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 5. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
A \<subseteq> U
Key (sesK (c * d * (s + a * b))) \<notin> U
[PROOF STEP]
show "Key (sesK (c * d * (s + a * b))) \<notin> A"
[PROOF STATE]
proof (prove)
using this:
A \<subseteq> U
Key (sesK (c * d * (s + a * b))) \<notin> U

goal (1 subgoal):
 1. Key (sesK (c * d * (s + a * b))) \<notin> A
[PROOF STEP]
by (rule contra_subsetD)
[PROOF STATE]
proof (state)
this:
Key (sesK (c * d * (s + a * b))) \<notin> A

goal (4 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 3. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 3. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
fix evsR3 S A U s' a' b' c' d'
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 3. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
assume
   "(evsR3, S, A, U) \<in> protocol" and
   "IntAgrK (S (Card n, n, run)) = Some d" and
   "ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b))"
[PROOF STATE]
proof (state)
this:
(evsR3, S, A, U) \<in> protocol
IntAgrK (S (Card n, n, run)) = Some d
ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b))

goal (4 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 3. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
hence "Key (sesK (d * (c * (s + a * b)))) \<in> U"
[PROOF STATE]
proof (prove)
using this:
(evsR3, S, A, U) \<in> protocol
IntAgrK (S (Card n, n, run)) = Some d
ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b))

goal (1 subgoal):
 1. Key (sesK (d * (c * (s + a * b)))) \<in> U
[PROOF STEP]
by (rule pr_sesk_card)
[PROOF STATE]
proof (state)
this:
Key (sesK (d * (c * (s + a * b)))) \<in> U

goal (4 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 3. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Key (sesK (d * (c * (s + a * b)))) \<in> U

goal (4 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 3. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
have "d * (c * (s + a * b)) = c * d * (s + a * b)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. d * (c * (s + a * b)) = c * d * (s + a * b)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
d * (c * (s + a * b)) = c * d * (s + a * b)

goal (4 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 3. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
Key (sesK (d * (c * (s + a * b)))) \<in> U
d * (c * (s + a * b)) = c * d * (s + a * b)
[PROOF STEP]
have "Key (sesK (c * d * (s + a * b))) \<in> U"
[PROOF STATE]
proof (prove)
using this:
Key (sesK (d * (c * (s + a * b)))) \<in> U
d * (c * (s + a * b)) = c * d * (s + a * b)

goal (1 subgoal):
 1. Key (sesK (c * d * (s + a * b))) \<in> U
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Key (sesK (c * d * (s + a * b))) \<in> U

goal (4 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 3. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Key (sesK (c * d * (s + a * b))) \<in> U

goal (4 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 3. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
assume "sesK (c * d * (s + a * b)) = sesK (c' * d' * (s' + a' * b'))"
[PROOF STATE]
proof (state)
this:
sesK (c * d * (s + a * b)) = sesK (c' * d' * (s' + a' * b'))

goal (4 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 3. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
Key (sesK (c * d * (s + a * b))) \<in> U
sesK (c * d * (s + a * b)) = sesK (c' * d' * (s' + a' * b'))
[PROOF STEP]
have "Key (sesK (c' * d' * (s' + a' * b'))) \<in> U"
[PROOF STATE]
proof (prove)
using this:
Key (sesK (c * d * (s + a * b))) \<in> U
sesK (c * d * (s + a * b)) = sesK (c' * d' * (s' + a' * b'))

goal (1 subgoal):
 1. Key (sesK (c' * d' * (s' + a' * b'))) \<in> U
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Key (sesK (c' * d' * (s' + a' * b'))) \<in> U

goal (4 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 3. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Key (sesK (c' * d' * (s' + a' * b'))) \<in> U

goal (4 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 3. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
assume "Key (sesK (c' * d' * (s' + a' * b'))) \<notin> U"
[PROOF STATE]
proof (state)
this:
Key (sesK (c' * d' * (s' + a' * b'))) \<notin> U

goal (4 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; Pri_AgrK ca \<in> A; s' = sa; n = na \<longrightarrow> run \<noteq> runa; 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; NonceS (S (Card n, n, run)) = Some sa; 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 (c * (s + a * b)); sa + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 3. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 4. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
Key (sesK (c' * d' * (s' + a' * b'))) \<in> U
Key (sesK (c' * d' * (s' + a' * b'))) \<notin> U
[PROOF STEP]
show False
[PROOF STATE]
proof (prove)
using this:
Key (sesK (c' * d' * (s' + a' * b'))) \<in> U
Key (sesK (c' * d' * (s' + a' * b'))) \<notin> U

goal (1 subgoal):
 1. False
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
False

goal (3 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
fix evsR3 S A U s' a' b' c' d'
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
assume
   "(evsR3, S, A, U) \<in> protocol" and
   "IntAgrK (S (Card n, n, run)) = Some d" and
   "ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b))"
[PROOF STATE]
proof (state)
this:
(evsR3, S, A, U) \<in> protocol
IntAgrK (S (Card n, n, run)) = Some d
ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b))

goal (3 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
hence "Key (sesK (d * (c * (s + a * b)))) \<in> U"
[PROOF STATE]
proof (prove)
using this:
(evsR3, S, A, U) \<in> protocol
IntAgrK (S (Card n, n, run)) = Some d
ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b))

goal (1 subgoal):
 1. Key (sesK (d * (c * (s + a * b)))) \<in> U
[PROOF STEP]
by (rule pr_sesk_card)
[PROOF STATE]
proof (state)
this:
Key (sesK (d * (c * (s + a * b)))) \<in> U

goal (3 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Key (sesK (d * (c * (s + a * b)))) \<in> U

goal (3 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
have "d * (c * (s + a * b)) = c * d * (s + a * b)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. d * (c * (s + a * b)) = c * d * (s + a * b)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
d * (c * (s + a * b)) = c * d * (s + a * b)

goal (3 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
Key (sesK (d * (c * (s + a * b)))) \<in> U
d * (c * (s + a * b)) = c * d * (s + a * b)
[PROOF STEP]
have "Key (sesK (c * d * (s + a * b))) \<in> U"
[PROOF STATE]
proof (prove)
using this:
Key (sesK (d * (c * (s + a * b)))) \<in> U
d * (c * (s + a * b)) = c * d * (s + a * b)

goal (1 subgoal):
 1. Key (sesK (c * d * (s + a * b))) \<in> U
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Key (sesK (c * d * (s + a * b))) \<in> U

goal (3 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Key (sesK (c * d * (s + a * b))) \<in> U

goal (3 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
assume "sesK (c * d * (s + a * b)) = sesK (c' * d' * (s' + a' * b'))"
[PROOF STATE]
proof (state)
this:
sesK (c * d * (s + a * b)) = sesK (c' * d' * (s' + a' * b'))

goal (3 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
Key (sesK (c * d * (s + a * b))) \<in> U
sesK (c * d * (s + a * b)) = sesK (c' * d' * (s' + a' * b'))
[PROOF STEP]
have "Key (sesK (c' * d' * (s' + a' * b'))) \<in> U"
[PROOF STATE]
proof (prove)
using this:
Key (sesK (c * d * (s + a * b))) \<in> U
sesK (c * d * (s + a * b)) = sesK (c' * d' * (s' + a' * b'))

goal (1 subgoal):
 1. Key (sesK (c' * d' * (s' + a' * b'))) \<in> U
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Key (sesK (c' * d' * (s' + a' * b'))) \<in> U

goal (3 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Key (sesK (c' * d' * (s' + a' * b'))) \<in> U

goal (3 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
assume "Key (sesK (c' * d' * (s' + a' * b'))) \<notin> U"
[PROOF STATE]
proof (state)
this:
Key (sesK (c' * d' * (s' + a' * b'))) \<notin> U

goal (3 subgoals):
 1. \<And>evsR3 S A U da na runa sa ba aa X ca. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; Pri_AgrK da \<notin> U; NonceS (S (Card na, na, runa)) = Some sa; IntMapK (S (Card na, na, runa)) = Some ba; ExtMapK (S (Card na, na, runa)) = Some aa; IntAgrK (S (Card na, na, runa)) = None; Says na runa 3 X (Card na) (pubAK (ca * (sa + aa * ba))) \<in> set evsR3; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; da \<noteq> 0 \<and> sa + aa * ba \<noteq> 0; 0 < m; sa \<noteq> s'; Pri_AgrK ca \<in> A; n = na \<longrightarrow> run \<noteq> runa; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
 2. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 3. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
Key (sesK (c' * d' * (s' + a' * b'))) \<in> U
Key (sesK (c' * d' * (s' + a' * b'))) \<notin> U
[PROOF STEP]
show False
[PROOF STATE]
proof (prove)
using this:
Key (sesK (c' * d' * (s' + a' * b'))) \<in> U
Key (sesK (c' * d' * (s' + a' * b'))) \<notin> U

goal (1 subgoal):
 1. False
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
False

goal (2 subgoals):
 1. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
fix evsR3 S A U s' c'
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
assume "(evsR3, S, A, U) \<in> protocol"
[PROOF STATE]
proof (state)
this:
(evsR3, S, A, U) \<in> protocol

goal (2 subgoals):
 1. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
hence "A \<subseteq> U"
[PROOF STATE]
proof (prove)
using this:
(evsR3, S, A, U) \<in> protocol

goal (1 subgoal):
 1. A \<subseteq> U
[PROOF STEP]
by (rule pr_analz_used)
[PROOF STATE]
proof (state)
this:
A \<subseteq> U

goal (2 subgoals):
 1. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
A \<subseteq> U

goal (2 subgoals):
 1. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
assume "Key (sesK (c' * d * (s' + a' * b'))) \<notin> U"
[PROOF STATE]
proof (state)
this:
Key (sesK (c' * d * (s' + a' * b'))) \<notin> U

goal (2 subgoals):
 1. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
A \<subseteq> U
Key (sesK (c' * d * (s' + a' * b'))) \<notin> U
[PROOF STEP]
have "Key (sesK (c' * d * (s' + a' * b'))) \<notin> A"
[PROOF STATE]
proof (prove)
using this:
A \<subseteq> U
Key (sesK (c' * d * (s' + a' * b'))) \<notin> U

goal (1 subgoal):
 1. Key (sesK (c' * d * (s' + a' * b'))) \<notin> A
[PROOF STEP]
by (rule contra_subsetD)
[PROOF STATE]
proof (state)
this:
Key (sesK (c' * d * (s' + a' * b'))) \<notin> A

goal (2 subgoals):
 1. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Key (sesK (c' * d * (s' + a' * b'))) \<notin> A

goal (2 subgoals):
 1. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
assume "c' * (s' + a' * b') = c * (s + a * b)"
[PROOF STATE]
proof (state)
this:
c' * (s' + a' * b') = c * (s + a * b)

goal (2 subgoals):
 1. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
hence "c' * d * (s' + a' * b') = c * d * (s + a * b)"
[PROOF STATE]
proof (prove)
using this:
c' * (s' + a' * b') = c * (s + a * b)

goal (1 subgoal):
 1. c' * d * (s' + a' * b') = c * d * (s + a * b)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
c' * d * (s' + a' * b') = c * d * (s + a * b)

goal (2 subgoals):
 1. \<And>evsR3 S A U da na sa ba aa X ca s'a. \<lbrakk>(evsR3, S, A, U) \<in> protocol; Pri_AgrK d \<notin> U; NonceS (S (Card na, na, run)) = Some s'; IntMapK (S (Card na, na, run)) = Some b'; ExtMapK (S (Card na, na, run)) = Some a'; IntAgrK (S (Card na, na, run)) = None; Says na run 3 X (Card na) (pubAK (c * (s + a * b))) \<in> set evsR3; Key (sesK (ca * d * (s'a + a' * b'))) \<notin> U; Key (sesK (ca * d * (s + a * b))) \<notin> U; d \<noteq> 0 \<and> s + a * b \<noteq> 0; 0 < m; s'a = s' \<longrightarrow> Pri_AgrK ca \<notin> A; n = na; NonceS (S (User m, na, run)) = Some s; IntMapK (S (User m, na, run)) = Some a; ExtMapK (S (User m, na, run)) = Some b; IntAgrK (S (User m, na, run)) = Some c; sa = s'; ba = b'; aa = a'; da = d; ca * (s'a + a' * b') = c * (s + a * b); s' + a' * b' = s + a * b\<rbrakk> \<Longrightarrow> Key (sesK (c * d * (s + a * b))) \<notin> A
 2. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
Key (sesK (c' * d * (s' + a' * b'))) \<notin> A
c' * d * (s' + a' * b') = c * d * (s + a * b)
[PROOF STEP]
show "Key (sesK (c * d * (s + a * b))) \<notin> A"
[PROOF STATE]
proof (prove)
using this:
Key (sesK (c' * d * (s' + a' * b'))) \<notin> A
c' * d * (s' + a' * b') = c * d * (s + a * b)

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

goal (1 subgoal):
 1. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
fix evsFR3 S A U s' a' b' c' d'
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
assume
   "(evsFR3, S, A, U) \<in> protocol" and
   "IntAgrK (S (Card n, n, run)) = Some d" and
   "ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b))"
[PROOF STATE]
proof (state)
this:
(evsFR3, S, A, U) \<in> protocol
IntAgrK (S (Card n, n, run)) = Some d
ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b))

goal (1 subgoal):
 1. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
hence "Key (sesK (d * (c * (s + a * b)))) \<in> U"
[PROOF STATE]
proof (prove)
using this:
(evsFR3, S, A, U) \<in> protocol
IntAgrK (S (Card n, n, run)) = Some d
ExtAgrK (S (Card n, n, run)) = Some (c * (s + a * b))

goal (1 subgoal):
 1. Key (sesK (d * (c * (s + a * b)))) \<in> U
[PROOF STEP]
by (rule pr_sesk_card)
[PROOF STATE]
proof (state)
this:
Key (sesK (d * (c * (s + a * b)))) \<in> U

goal (1 subgoal):
 1. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Key (sesK (d * (c * (s + a * b)))) \<in> U

goal (1 subgoal):
 1. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
have "d * (c * (s + a * b)) = c * d * (s + a * b)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. d * (c * (s + a * b)) = c * d * (s + a * b)
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
d * (c * (s + a * b)) = c * d * (s + a * b)

goal (1 subgoal):
 1. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
Key (sesK (d * (c * (s + a * b)))) \<in> U
d * (c * (s + a * b)) = c * d * (s + a * b)
[PROOF STEP]
have "Key (sesK (c * d * (s + a * b))) \<in> U"
[PROOF STATE]
proof (prove)
using this:
Key (sesK (d * (c * (s + a * b)))) \<in> U
d * (c * (s + a * b)) = c * d * (s + a * b)

goal (1 subgoal):
 1. Key (sesK (c * d * (s + a * b))) \<in> U
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Key (sesK (c * d * (s + a * b))) \<in> U

goal (1 subgoal):
 1. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Key (sesK (c * d * (s + a * b))) \<in> U

goal (1 subgoal):
 1. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
assume "sesK (c * d * (s + a * b)) = sesK (c' * d' * (s' + a' * b'))"
[PROOF STATE]
proof (state)
this:
sesK (c * d * (s + a * b)) = sesK (c' * d' * (s' + a' * b'))

goal (1 subgoal):
 1. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
Key (sesK (c * d * (s + a * b))) \<in> U
sesK (c * d * (s + a * b)) = sesK (c' * d' * (s' + a' * b'))
[PROOF STEP]
have "Key (sesK (c' * d' * (s' + a' * b'))) \<in> U"
[PROOF STATE]
proof (prove)
using this:
Key (sesK (c * d * (s + a * b))) \<in> U
sesK (c * d * (s + a * b)) = sesK (c' * d' * (s' + a' * b'))

goal (1 subgoal):
 1. Key (sesK (c' * d' * (s' + a' * b'))) \<in> U
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
Key (sesK (c' * d' * (s' + a' * b'))) \<in> U

goal (1 subgoal):
 1. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
Key (sesK (c' * d' * (s' + a' * b'))) \<in> U

goal (1 subgoal):
 1. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
assume "Key (sesK (c' * d' * (s' + a' * b'))) \<notin> U"
[PROOF STATE]
proof (state)
this:
Key (sesK (c' * d' * (s' + a' * b'))) \<notin> U

goal (1 subgoal):
 1. \<And>evsFR3 S A U ma na runa sa aa ba ca da. \<lbrakk>(evsFR3, S, A, U) \<in> protocol; Key (sesK (ca * da * (sa + aa * ba))) \<notin> A; 0 < ma; NonceS (S (User ma, na, runa)) = Some sa; IntMapK (S (User ma, na, runa)) = Some aa; ExtMapK (S (User ma, na, runa)) = Some ba; IntAgrK (S (User ma, na, runa)) = Some ca; Pri_AgrK sa \<in> A \<and> Pri_AgrK ba \<in> A \<and> Pri_AgrK da \<in> A; Key (sesK (ca * da * (sa + aa * ba))) \<notin> U; 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; 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 (c * (s + a * b)); s' + a' * b' = s + a * b; sesK (c * d * (s + a * b)) = sesK (ca * da * (sa + aa * ba))\<rbrakk> \<Longrightarrow> False
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
Key (sesK (c' * d' * (s' + a' * b'))) \<in> U
Key (sesK (c' * d' * (s' + a' * b'))) \<notin> U
[PROOF STEP]
show False
[PROOF STATE]
proof (prove)
using this:
Key (sesK (c' * d' * (s' + a' * b'))) \<in> U
Key (sesK (c' * d' * (s' + a' * b'))) \<notin> U

goal (1 subgoal):
 1. False
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
False

goal:
No subgoals!
[PROOF STEP]
qed