[STATEMENT]
lemma (in PolynRg) P_mod_diffxxx3:"\<lbrakk>Idomain S; t \<in> carrier S; t \<noteq> \<zero>\<^bsub>S\<^esub>;
   maximal_ideal S (S \<diamondsuit>\<^sub>p t); PolynRg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y;
   f \<in> carrier R; gh \<in> carrier R \<times> carrier R;
   deg R S X (fst gh) \<le> deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R'
                            (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) (fst gh));
   deg R S X (snd gh) + deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R'
         (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) (fst gh)) \<le> deg R S X f;
  0 < deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y
                                           (pj S (S \<diamondsuit>\<^sub>p t)) (fst gh));
  0 < deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y
       (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) (snd gh));
  rel_prime_pols R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y
    (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) (fst gh))
    (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) (snd gh));
  P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S m\<^esup>)) (f \<plusminus> -\<^sub>a ((fst gh) \<cdot>\<^sub>r (snd gh))); 0 < m\<rbrakk> \<Longrightarrow>
  \<exists>gh1. gh1 \<in>carrier R \<times> carrier R \<and>
       (deg R S X (fst gh1) \<le> deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y
           (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) (fst gh1))) \<and>
   P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S m\<^esup>)) ((fst gh) \<plusminus> -\<^sub>a (fst gh1)) \<and>
       (deg R S X (snd gh1) + deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y
           (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) (fst gh1)) \<le>
                                                              deg R S X f) \<and>
        P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S m\<^esup>)) ((snd gh) \<plusminus> -\<^sub>a (snd gh1)) \<and>
        P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S (Suc m)\<^esup>)) (f \<plusminus> (-\<^sub>a ((fst gh1) \<cdot>\<^sub>r (snd gh1))))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>Idomain S; t \<in> carrier S; t \<noteq> \<zero>\<^bsub>S\<^esub>; maximal_ideal S (S \<diamondsuit>\<^sub>p t); PolynRg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y; f \<in> carrier R; gh \<in> carrier R \<times> carrier R; deg R S X (fst gh) \<le> deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) (fst gh)); deg R S X (snd gh) + deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) (fst gh)) \<le> deg R S X f; 0 < deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) (fst gh)); 0 < deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) (snd gh)); rel_prime_pols R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) (fst gh)) (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) (snd gh)); P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S m\<^esup>)) (f \<plusminus> -\<^sub>a fst gh \<cdot>\<^sub>r snd gh); 0 < m\<rbrakk> \<Longrightarrow> \<exists>gh1. gh1 \<in> carrier R \<times> carrier R \<and> deg R S X (fst gh1) \<le> deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) (fst gh1)) \<and> P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S m\<^esup>)) (fst gh \<plusminus> -\<^sub>a fst gh1) \<and> deg R S X (snd gh1) + deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) (fst gh1)) \<le> deg R S X f \<and> P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S m\<^esup>)) (snd gh \<plusminus> -\<^sub>a snd gh1) \<and> P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S Suc m\<^esup>)) (f \<plusminus> -\<^sub>a fst gh1 \<cdot>\<^sub>r snd gh1)
[PROOF STEP]
apply (cases gh)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>a b. \<lbrakk>Idomain S; t \<in> carrier S; t \<noteq> \<zero>\<^bsub>S\<^esub>; maximal_ideal S (S \<diamondsuit>\<^sub>p t); PolynRg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y; f \<in> carrier R; gh \<in> carrier R \<times> carrier R; deg R S X (fst gh) \<le> deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) (fst gh)); deg R S X (snd gh) + deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) (fst gh)) \<le> deg R S X f; 0 < deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) (fst gh)); 0 < deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) (snd gh)); rel_prime_pols R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) (fst gh)) (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) (snd gh)); P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S m\<^esup>)) (f \<plusminus> -\<^sub>a fst gh \<cdot>\<^sub>r snd gh); 0 < m; gh = (a, b)\<rbrakk> \<Longrightarrow> \<exists>gh1. gh1 \<in> carrier R \<times> carrier R \<and> deg R S X (fst gh1) \<le> deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) (fst gh1)) \<and> P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S m\<^esup>)) (fst gh \<plusminus> -\<^sub>a fst gh1) \<and> deg R S X (snd gh1) + deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) (fst gh1)) \<le> deg R S X f \<and> P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S m\<^esup>)) (snd gh \<plusminus> -\<^sub>a snd gh1) \<and> P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S Suc m\<^esup>)) (f \<plusminus> -\<^sub>a fst gh1 \<cdot>\<^sub>r snd gh1)
[PROOF STEP]
apply (simp del: npow_suc)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>a b. \<lbrakk>Idomain S; t \<in> carrier S; t \<noteq> \<zero>\<^bsub>S\<^esub>; maximal_ideal S (S \<diamondsuit>\<^sub>p t); PolynRg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y; f \<in> carrier R; a \<in> carrier R \<and> b \<in> carrier R; deg R S X a \<le> deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) a); deg R S X b + deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) a) \<le> deg R S X f; 0 < deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) a); 0 < deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) b); rel_prime_pols R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) a) (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) b); P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S m\<^esup>)) (f \<plusminus> -\<^sub>a a \<cdot>\<^sub>r b); 0 < m; gh = (a, b)\<rbrakk> \<Longrightarrow> \<exists>aa. aa \<in> carrier R \<and> (\<exists>ba. ba \<in> carrier R \<and> deg R S X aa \<le> deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) aa) \<and> P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S m\<^esup>)) (a \<plusminus> -\<^sub>a aa) \<and> deg R S X ba + deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) aa) \<le> deg R S X f \<and> P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S m\<^esup>)) (b \<plusminus> -\<^sub>a ba) \<and> P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S Suc m\<^esup>)) (f \<plusminus> -\<^sub>a aa \<cdot>\<^sub>r ba))
[PROOF STEP]
apply (rename_tac g h)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>g h. \<lbrakk>Idomain S; t \<in> carrier S; t \<noteq> \<zero>\<^bsub>S\<^esub>; maximal_ideal S (S \<diamondsuit>\<^sub>p t); PolynRg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y; f \<in> carrier R; g \<in> carrier R \<and> h \<in> carrier R; deg R S X g \<le> deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) g); deg R S X h + deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) g) \<le> deg R S X f; 0 < deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) g); 0 < deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) h); rel_prime_pols R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) g) (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) h); P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S m\<^esup>)) (f \<plusminus> -\<^sub>a g \<cdot>\<^sub>r h); 0 < m; gh = (g, h)\<rbrakk> \<Longrightarrow> \<exists>a. a \<in> carrier R \<and> (\<exists>b. b \<in> carrier R \<and> deg R S X a \<le> deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) a) \<and> P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S m\<^esup>)) (g \<plusminus> -\<^sub>a a) \<and> deg R S X b + deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) a) \<le> deg R S X f \<and> P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S m\<^esup>)) (h \<plusminus> -\<^sub>a b) \<and> P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S Suc m\<^esup>)) (f \<plusminus> -\<^sub>a a \<cdot>\<^sub>r b))
[PROOF STEP]
apply (erule conjE,
        frule_tac g = g and h = h and f = f in P_mod_diffxxx2[of t R' Y],
        assumption+)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>g h. \<lbrakk>Idomain S; t \<in> carrier S; t \<noteq> \<zero>\<^bsub>S\<^esub>; maximal_ideal S (S \<diamondsuit>\<^sub>p t); PolynRg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y; f \<in> carrier R; deg R S X g \<le> deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) g); deg R S X h + deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) g) \<le> deg R S X f; 0 < deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) g); 0 < deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) h); rel_prime_pols R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) g) (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) h); P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S m\<^esup>)) (f \<plusminus> -\<^sub>a g \<cdot>\<^sub>r h); 0 < m; gh = (g, h); g \<in> carrier R; h \<in> carrier R; \<exists>g1 h1. g1 \<in> carrier R \<and> h1 \<in> carrier R \<and> deg R S X g1 \<le> deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) g1) \<and> P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S m\<^esup>)) (g \<plusminus> -\<^sub>a g1) \<and> deg R S X h1 + deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) g1) \<le> deg R S X f \<and> P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S m\<^esup>)) (h \<plusminus> -\<^sub>a h1) \<and> P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S Suc m\<^esup>)) (f \<plusminus> -\<^sub>a g1 \<cdot>\<^sub>r h1)\<rbrakk> \<Longrightarrow> \<exists>a. a \<in> carrier R \<and> (\<exists>b. b \<in> carrier R \<and> deg R S X a \<le> deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) a) \<and> P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S m\<^esup>)) (g \<plusminus> -\<^sub>a a) \<and> deg R S X b + deg R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (erH R S X R' (S /\<^sub>r (S \<diamondsuit>\<^sub>p t)) Y (pj S (S \<diamondsuit>\<^sub>p t)) a) \<le> deg R S X f \<and> P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S m\<^esup>)) (h \<plusminus> -\<^sub>a b) \<and> P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S Suc m\<^esup>)) (f \<plusminus> -\<^sub>a a \<cdot>\<^sub>r b))
[PROOF STEP]
apply blast
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done


[STATEMENT]
lemma par_int_ndet_distrib: "((P \<sqinter> Q) \<lbrakk> A \<rbrakk> M) = ((P \<lbrakk> A \<rbrakk> M) \<sqinter> (Q \<lbrakk> A \<rbrakk> M))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (P |-| Q \<lbrakk>A\<rbrakk> M) = ((P \<lbrakk>A\<rbrakk> M) |-| (Q \<lbrakk>A\<rbrakk> M))
[PROOF STEP]
apply(auto simp:Process_eq_spec, simp_all add: D_sync F_sync D_ndet F_ndet T_ndet)
[PROOF STATE]
proof (prove)
goal (4 subgoals):
 1. \<And>a b. (\<exists>t u X. ((t, X) \<in> F P \<or> (t, X) \<in> F Q) \<and> (\<exists>Y. (u, Y) \<in> F M \<and> a setinterleaves ((t, u), insert tick (ev ` A)) \<and> b = (X \<union> Y) \<inter> insert tick (ev ` A) \<union> X \<inter> Y)) \<or> (\<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> a = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((t \<in> D P \<or> t \<in> D Q) \<and> u \<in> T M \<or> t \<in> D M \<and> (u \<in> T P \<or> u \<in> T Q))) \<Longrightarrow> (\<exists>t u X. (t, X) \<in> F P \<and> (\<exists>Y. (u, Y) \<in> F M \<and> a setinterleaves ((t, u), insert tick (ev ` A)) \<and> b = (X \<union> Y) \<inter> insert tick (ev ` A) \<union> X \<inter> Y)) \<or> (\<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> a = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D P \<and> u \<in> T M \<or> t \<in> D M \<and> u \<in> T P)) \<or> (\<exists>t u X. (t, X) \<in> F Q \<and> (\<exists>Y. (u, Y) \<in> F M \<and> a setinterleaves ((t, u), insert tick (ev ` A)) \<and> b = (X \<union> Y) \<inter> insert tick (ev ` A) \<union> X \<inter> Y)) \<or> (\<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> a = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D Q \<and> u \<in> T M \<or> t \<in> D M \<and> u \<in> T Q))
 2. \<And>a b. (\<exists>t u X. (t, X) \<in> F P \<and> (\<exists>Y. (u, Y) \<in> F M \<and> a setinterleaves ((t, u), insert tick (ev ` A)) \<and> b = (X \<union> Y) \<inter> insert tick (ev ` A) \<union> X \<inter> Y)) \<or> (\<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> a = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D P \<and> u \<in> T M \<or> t \<in> D M \<and> u \<in> T P)) \<or> (\<exists>t u X. (t, X) \<in> F Q \<and> (\<exists>Y. (u, Y) \<in> F M \<and> a setinterleaves ((t, u), insert tick (ev ` A)) \<and> b = (X \<union> Y) \<inter> insert tick (ev ` A) \<union> X \<inter> Y)) \<or> (\<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> a = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D Q \<and> u \<in> T M \<or> t \<in> D M \<and> u \<in> T Q)) \<Longrightarrow> (\<exists>t u X. ((t, X) \<in> F P \<or> (t, X) \<in> F Q) \<and> (\<exists>Y. (u, Y) \<in> F M \<and> a setinterleaves ((t, u), insert tick (ev ` A)) \<and> b = (X \<union> Y) \<inter> insert tick (ev ` A) \<union> X \<inter> Y)) \<or> (\<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> a = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((t \<in> D P \<or> t \<in> D Q) \<and> u \<in> T M \<or> t \<in> D M \<and> (u \<in> T P \<or> u \<in> T Q)))
 3. \<And>x. \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((t \<in> D P \<or> t \<in> D Q) \<and> u \<in> T M \<or> t \<in> D M \<and> (u \<in> T P \<or> u \<in> T Q)) \<Longrightarrow> (\<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D P \<and> u \<in> T M \<or> t \<in> D M \<and> u \<in> T P)) \<or> (\<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D Q \<and> u \<in> T M \<or> t \<in> D M \<and> u \<in> T Q))
 4. \<And>x. (\<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D P \<and> u \<in> T M \<or> t \<in> D M \<and> u \<in> T P)) \<or> (\<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> (t \<in> D Q \<and> u \<in> T M \<or> t \<in> D M \<and> u \<in> T Q)) \<Longrightarrow> \<exists>t u r v. front_tickFree v \<and> (tickFree r \<or> v = []) \<and> x = r @ v \<and> r setinterleaves ((t, u), insert tick (ev ` A)) \<and> ((t \<in> D P \<or> t \<in> D Q) \<and> u \<in> T M \<or> t \<in> D M \<and> (u \<in> T P \<or> u \<in> T Q))
[PROOF STEP]
by blast+


[STATEMENT]
lemma rreq_rrep_sn_any_step_invariant:
  "paodv i \<TTurnstile>\<^sub>A (recvmsg rreq_rrep_sn \<rightarrow>) onll \<Gamma>\<^sub>A\<^sub>O\<^sub>D\<^sub>V (\<lambda>(_, a, _). anycast rreq_rrep_sn a)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. paodv i \<TTurnstile>\<^sub>A (recvmsg rreq_rrep_sn \<rightarrow>) onll \<Gamma>\<^sub>A\<^sub>O\<^sub>D\<^sub>V (\<lambda>(uu_, a, uu_). anycast rreq_rrep_sn a)
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. paodv i \<TTurnstile>\<^sub>A (recvmsg rreq_rrep_sn \<rightarrow>) onll \<Gamma>\<^sub>A\<^sub>O\<^sub>D\<^sub>V (\<lambda>(uu_, a, uu_). anycast rreq_rrep_sn a)
[PROOF STEP]
(* due to lack of addpreRT_welldefined, sqnf_know needed some small adaption [adding dip \<xi> \<in> kD (rt \<xi>)] *)
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. paodv i \<TTurnstile>\<^sub>A (recvmsg rreq_rrep_sn \<rightarrow>) onll \<Gamma>\<^sub>A\<^sub>O\<^sub>D\<^sub>V (\<lambda>(uu_, a, uu_). anycast rreq_rrep_sn a)
[PROOF STEP]
have sqnf_kno: "paodv i \<TTurnstile> onl \<Gamma>\<^sub>A\<^sub>O\<^sub>D\<^sub>V (\<lambda>(\<xi>, l).
                                      (l \<in> {PRreq-:14} \<longrightarrow> dip \<xi> \<in> kD (rt \<xi>) \<and> sqnf (rt \<xi>) (dip \<xi>) = kno))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. paodv i \<TTurnstile> onl \<Gamma>\<^sub>A\<^sub>O\<^sub>D\<^sub>V (\<lambda>(\<xi>, l). l \<in> {PRreq-:14} \<longrightarrow> dip \<xi> \<in> kD (rt \<xi>) \<and> sqnf (rt \<xi>) (dip \<xi>) = kno)
[PROOF STEP]
by (inv_cterms)
[PROOF STATE]
proof (state)
this:
paodv i \<TTurnstile> onl \<Gamma>\<^sub>A\<^sub>O\<^sub>D\<^sub>V (\<lambda>(\<xi>, l). l \<in> {PRreq-:14} \<longrightarrow> dip \<xi> \<in> kD (rt \<xi>) \<and> sqnf (rt \<xi>) (dip \<xi>) = kno)

goal (1 subgoal):
 1. paodv i \<TTurnstile>\<^sub>A (recvmsg rreq_rrep_sn \<rightarrow>) onll \<Gamma>\<^sub>A\<^sub>O\<^sub>D\<^sub>V (\<lambda>(uu_, a, uu_). anycast rreq_rrep_sn a)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. paodv i \<TTurnstile>\<^sub>A (recvmsg rreq_rrep_sn \<rightarrow>) onll \<Gamma>\<^sub>A\<^sub>O\<^sub>D\<^sub>V (\<lambda>(uu_, a, uu_). anycast rreq_rrep_sn a)
[PROOF STEP]
by (inv_cterms inv add: onl_invariant_sterms [OF aodv_wf sequence_number_one_or_bigger
                                                               [THEN invariant_restrict_inD]]
                              onl_invariant_sterms [OF aodv_wf kD_unk_or_atleast_one]
                              onl_invariant_sterms_TT [OF aodv_wf sqnf_kno]
                              onl_invariant_sterms [OF aodv_wf osn_rreq]
                              onl_invariant_sterms [OF aodv_wf dsn_rrep])
         (auto simp: proj2_eq_sqn)
[PROOF STATE]
proof (state)
this:
paodv i \<TTurnstile>\<^sub>A (recvmsg rreq_rrep_sn \<rightarrow>) onll \<Gamma>\<^sub>A\<^sub>O\<^sub>D\<^sub>V (\<lambda>(uu_, a, uu_). anycast rreq_rrep_sn a)

goal:
No subgoals!
[PROOF STEP]
qed


[STATEMENT]
lemma \<open>filterlim (\<lambda>x::real. exp (a * x)) at_top at_top\<close>
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. LIM x at_top. exp (a * x) :> at_top
[PROOF STEP]
oops


[STATEMENT]
lemma map_project_code [code]:
  fixes dxs :: "'a :: ceq set_dlist"
  and rbt :: "'b :: ccompare set_rbt" shows
  "List.map_project f (Set_Monad xs) = Set_Monad (List.map_filter f xs)"
  "List.map_project g (DList_set dxs) =
   (case ID CEQ('a) of None \<Rightarrow> Code.abort (STR ''map_project DList_set: ceq = None'') (\<lambda>_. List.map_project g (DList_set dxs))
                   | Some _ \<Rightarrow> DList_Set.fold (\<lambda>x A. case g x of None \<Rightarrow> A | Some y \<Rightarrow> insert y A) dxs {})"
  (is ?dlist)
  "List.map_project h (RBT_set rbt) =
   (case ID CCOMPARE('b) of None \<Rightarrow> Code.abort (STR ''map_project RBT_set: ccompare = None'') (\<lambda>_. List.map_project h (RBT_set rbt))
                      | Some _ \<Rightarrow> RBT_Set2.fold (\<lambda>x A. case h x of None \<Rightarrow> A | Some y \<Rightarrow> insert y A) rbt {})"
  (is ?rbt)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. List.map_project f (Set_Monad xs) = Set_Monad (List.map_filter f xs) &&& List.map_project g (DList_set dxs) = (case ID CEQ('a) of None \<Rightarrow> Code.abort STR ''map_project DList_set: ceq = None'' (\<lambda>_. List.map_project g (DList_set dxs)) | Some x \<Rightarrow> DList_Set.fold (\<lambda>x A. case g x of None \<Rightarrow> A | Some y \<Rightarrow> insert y A) dxs {}) &&& List.map_project h (RBT_set rbt) = (case ID ccompare of None \<Rightarrow> Code.abort STR ''map_project RBT_set: ccompare = None'' (\<lambda>_. List.map_project h (RBT_set rbt)) | Some x \<Rightarrow> RBT_Set2.fold (\<lambda>x A. case h x of None \<Rightarrow> A | Some y \<Rightarrow> insert y A) rbt {})
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. List.map_project f (Set_Monad xs) = Set_Monad (List.map_filter f xs)
 2. List.map_project g (DList_set dxs) = (case ID CEQ('a) of None \<Rightarrow> Code.abort STR ''map_project DList_set: ceq = None'' (\<lambda>_. List.map_project g (DList_set dxs)) | Some x \<Rightarrow> DList_Set.fold (\<lambda>x A. case g x of None \<Rightarrow> A | Some y \<Rightarrow> insert y A) dxs {})
 3. List.map_project h (RBT_set rbt) = (case ID ccompare of None \<Rightarrow> Code.abort STR ''map_project RBT_set: ccompare = None'' (\<lambda>_. List.map_project h (RBT_set rbt)) | Some x \<Rightarrow> RBT_Set2.fold (\<lambda>x A. case h x of None \<Rightarrow> A | Some y \<Rightarrow> insert y A) rbt {})
[PROOF STEP]
show ?dlist ?rbt
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. List.map_project g (DList_set dxs) = (case ID CEQ('a) of None \<Rightarrow> Code.abort STR ''map_project DList_set: ceq = None'' (\<lambda>_. List.map_project g (DList_set dxs)) | Some x \<Rightarrow> DList_Set.fold (\<lambda>x A. case g x of None \<Rightarrow> A | Some y \<Rightarrow> insert y A) dxs {}) &&& List.map_project h (RBT_set rbt) = (case ID ccompare of None \<Rightarrow> Code.abort STR ''map_project RBT_set: ccompare = None'' (\<lambda>_. List.map_project h (RBT_set rbt)) | Some x \<Rightarrow> RBT_Set2.fold (\<lambda>x A. case h x of None \<Rightarrow> A | Some y \<Rightarrow> insert y A) rbt {})
[PROOF STEP]
by(auto split: option.split simp add: RBT_set_def DList_set_def DList_Set.fold.rep_eq Collect_member map_project_conv_fold RBT_Set2.fold_conv_fold_keys member_conv_keys del: equalityI)
[PROOF STATE]
proof (state)
this:
List.map_project g (DList_set dxs) = (case ID CEQ('a) of None \<Rightarrow> Code.abort STR ''map_project DList_set: ceq = None'' (\<lambda>_. List.map_project g (DList_set dxs)) | Some x \<Rightarrow> DList_Set.fold (\<lambda>x A. case g x of None \<Rightarrow> A | Some y \<Rightarrow> insert y A) dxs {})
List.map_project h (RBT_set rbt) = (case ID ccompare of None \<Rightarrow> Code.abort STR ''map_project RBT_set: ccompare = None'' (\<lambda>_. List.map_project h (RBT_set rbt)) | Some x \<Rightarrow> RBT_Set2.fold (\<lambda>x A. case h x of None \<Rightarrow> A | Some y \<Rightarrow> insert y A) rbt {})

goal (1 subgoal):
 1. List.map_project f (Set_Monad xs) = Set_Monad (List.map_filter f xs)
[PROOF STEP]
qed(auto simp add: List.map_project_def List.map_filter_def intro: rev_image_eqI)


[STATEMENT]
lemma Outpts_B_Card_unique_nonce:
     "\<lbrakk> Outpts (Card B) B \<lbrace>Nonce Nb, Agent A, Key SK, Cert1, Cert2\<rbrace> \<in> set evs;
      Outpts (Card B') B' \<lbrace>Nonce Nb, Agent A', Key SK', Cert1', Cert2'\<rbrace> \<in> set evs;
       evs \<in> srb \<rbrakk> \<Longrightarrow> B=B' \<and> A=A' \<and> SK=SK' \<and> Cert1=Cert1' \<and> Cert2=Cert2'"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<lbrakk>Outpts (Card B) B \<lbrace>Nonce Nb, Agent A, Key SK, Cert1, Cert2\<rbrace> \<in> set evs; Outpts (Card B') B' \<lbrace>Nonce Nb, Agent A', Key SK', Cert1', Cert2'\<rbrace> \<in> set evs; evs \<in> srb\<rbrakk> \<Longrightarrow> B = B' \<and> A = A' \<and> SK = SK' \<and> Cert1 = Cert1' \<and> Cert2 = Cert2'
[PROOF STEP]
apply (erule rev_mp, erule rev_mp, erule srb.induct, simp_all)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>evs7 Nba Ba K Aa Na. \<lbrakk>evs7 \<in> srb; Outpts (Card B') B' \<lbrace>Nonce Nb, Agent A', Key SK', Cert1', Cert2'\<rbrace> \<in> set evs7 \<longrightarrow> Outpts (Card B) B \<lbrace>Nonce Nb, Agent A, Key SK, Cert1, Cert2\<rbrace> \<in> set evs7 \<longrightarrow> B = B' \<and> A = A' \<and> SK = SK' \<and> Cert1 = Cert1' \<and> Cert2 = Cert2'; Nonce Nba \<notin> used evs7; Card Ba \<notin> stolen; Ba \<noteq> Server; K = sesK (Nba, pairK (Aa, Ba)); Key (sesK (Nba, pairK (Aa, Ba))) \<notin> used evs7; Inputs Ba (Card Ba) \<lbrace>Agent Aa, Nonce Na\<rbrace> \<in> set evs7\<rbrakk> \<Longrightarrow> (B' = Ba \<and> Nb = Nba \<and> A' = Aa \<and> SK' = sesK (Nba, pairK (Aa, Ba)) \<and> Cert1' = Crypt (pairK (Aa, Ba)) \<lbrace>Nonce Na, Nonce Nba\<rbrace> \<and> Cert2' = Crypt (pairK (Aa, Ba)) (Nonce Nba) \<longrightarrow> Outpts (Card B) B \<lbrace>Nonce Nba, Agent A, Key SK, Cert1, Cert2\<rbrace> \<in> set evs7 \<longrightarrow> B = Ba \<and> A = Aa \<and> SK = sesK (Nba, pairK (Aa, Ba)) \<and> Cert1 = Crypt (pairK (Aa, Ba)) \<lbrace>Nonce Na, Nonce Nba\<rbrace> \<and> Cert2 = Crypt (pairK (Aa, Ba)) (Nonce Nba)) \<and> (Outpts (Card B') B' \<lbrace>Nonce Nb, Agent A', Key SK', Cert1', Cert2'\<rbrace> \<in> set evs7 \<longrightarrow> B = Ba \<and> Nb = Nba \<and> A = Aa \<and> SK = sesK (Nba, pairK (Aa, Ba)) \<and> Cert1 = Crypt (pairK (Aa, Ba)) \<lbrace>Nonce Na, Nonce Nba\<rbrace> \<and> Cert2 = Crypt (pairK (Aa, Ba)) (Nonce Nba) \<longrightarrow> Ba = B' \<and> Aa = A' \<and> sesK (Nba, pairK (Aa, Ba)) = SK' \<and> Crypt (pairK (Aa, Ba)) \<lbrace>Nonce Na, Nonce Nba\<rbrace> = Cert1' \<and> Crypt (pairK (Aa, Ba)) (Nonce Nba) = Cert2')
 2. \<And>evs7F Nba Ba K Aa Na. \<lbrakk>evs7F \<in> srb; Outpts (Card B') B' \<lbrace>Nonce Nb, Agent A', Key SK', Cert1', Cert2'\<rbrace> \<in> set evs7F \<longrightarrow> Outpts (Card B) B \<lbrace>Nonce Nb, Agent A, Key SK, Cert1, Cert2\<rbrace> \<in> set evs7F \<longrightarrow> B = B' \<and> A = A' \<and> SK = SK' \<and> Cert1 = Cert1' \<and> Cert2 = Cert2'; Nonce Nba \<notin> used evs7F; Card Ba \<in> stolen \<and> Ba \<in> bad \<or> Card Ba \<in> cloned; K = sesK (Nba, pairK (Aa, Ba)); Key (sesK (Nba, pairK (Aa, Ba))) \<notin> used evs7F; Inputs Spy (Card Ba) \<lbrace>Agent Aa, Nonce Na\<rbrace> \<in> set evs7F\<rbrakk> \<Longrightarrow> (B' = Ba \<and> B' = Spy \<and> Nb = Nba \<and> A' = Aa \<and> SK' = sesK (Nba, pairK (Aa, Ba)) \<and> Cert1' = Crypt (pairK (Aa, Ba)) \<lbrace>Nonce Na, Nonce Nba\<rbrace> \<and> Cert2' = Crypt (pairK (Aa, Ba)) (Nonce Nba) \<longrightarrow> Outpts (Card B) B \<lbrace>Nonce Nba, Agent A, Key SK, Cert1, Cert2\<rbrace> \<in> set evs7F \<longrightarrow> B = Ba \<and> A = Aa \<and> SK = sesK (Nba, pairK (Aa, Ba)) \<and> Cert1 = Crypt (pairK (Aa, Ba)) \<lbrace>Nonce Na, Nonce Nba\<rbrace> \<and> Cert2 = Crypt (pairK (Aa, Ba)) (Nonce Nba)) \<and> (Outpts (Card B') B' \<lbrace>Nonce Nb, Agent A', Key SK', Cert1', Cert2'\<rbrace> \<in> set evs7F \<longrightarrow> B = Ba \<and> B = Spy \<and> Nb = Nba \<and> A = Aa \<and> SK = sesK (Nba, pairK (Aa, Ba)) \<and> Cert1 = Crypt (pairK (Aa, Ba)) \<lbrace>Nonce Na, Nonce Nba\<rbrace> \<and> Cert2 = Crypt (pairK (Aa, Ba)) (Nonce Nba) \<longrightarrow> Ba = B' \<and> Aa = A' \<and> sesK (Nba, pairK (Aa, Ba)) = SK' \<and> Crypt (pairK (Aa, Ba)) \<lbrace>Nonce Na, Nonce Nba\<rbrace> = Cert1' \<and> Crypt (pairK (Aa, Ba)) (Nonce Nba) = Cert2')
[PROOF STEP]
apply (fastforce dest: Outpts_parts_used)
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>evs7F Nba Ba K Aa Na. \<lbrakk>evs7F \<in> srb; Outpts (Card B') B' \<lbrace>Nonce Nb, Agent A', Key SK', Cert1', Cert2'\<rbrace> \<in> set evs7F \<longrightarrow> Outpts (Card B) B \<lbrace>Nonce Nb, Agent A, Key SK, Cert1, Cert2\<rbrace> \<in> set evs7F \<longrightarrow> B = B' \<and> A = A' \<and> SK = SK' \<and> Cert1 = Cert1' \<and> Cert2 = Cert2'; Nonce Nba \<notin> used evs7F; Card Ba \<in> stolen \<and> Ba \<in> bad \<or> Card Ba \<in> cloned; K = sesK (Nba, pairK (Aa, Ba)); Key (sesK (Nba, pairK (Aa, Ba))) \<notin> used evs7F; Inputs Spy (Card Ba) \<lbrace>Agent Aa, Nonce Na\<rbrace> \<in> set evs7F\<rbrakk> \<Longrightarrow> (B' = Ba \<and> B' = Spy \<and> Nb = Nba \<and> A' = Aa \<and> SK' = sesK (Nba, pairK (Aa, Ba)) \<and> Cert1' = Crypt (pairK (Aa, Ba)) \<lbrace>Nonce Na, Nonce Nba\<rbrace> \<and> Cert2' = Crypt (pairK (Aa, Ba)) (Nonce Nba) \<longrightarrow> Outpts (Card B) B \<lbrace>Nonce Nba, Agent A, Key SK, Cert1, Cert2\<rbrace> \<in> set evs7F \<longrightarrow> B = Ba \<and> A = Aa \<and> SK = sesK (Nba, pairK (Aa, Ba)) \<and> Cert1 = Crypt (pairK (Aa, Ba)) \<lbrace>Nonce Na, Nonce Nba\<rbrace> \<and> Cert2 = Crypt (pairK (Aa, Ba)) (Nonce Nba)) \<and> (Outpts (Card B') B' \<lbrace>Nonce Nb, Agent A', Key SK', Cert1', Cert2'\<rbrace> \<in> set evs7F \<longrightarrow> B = Ba \<and> B = Spy \<and> Nb = Nba \<and> A = Aa \<and> SK = sesK (Nba, pairK (Aa, Ba)) \<and> Cert1 = Crypt (pairK (Aa, Ba)) \<lbrace>Nonce Na, Nonce Nba\<rbrace> \<and> Cert2 = Crypt (pairK (Aa, Ba)) (Nonce Nba) \<longrightarrow> Ba = B' \<and> Aa = A' \<and> sesK (Nba, pairK (Aa, Ba)) = SK' \<and> Crypt (pairK (Aa, Ba)) \<lbrace>Nonce Na, Nonce Nba\<rbrace> = Cert1' \<and> Crypt (pairK (Aa, Ba)) (Nonce Nba) = Cert2')
[PROOF STEP]
apply blast
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done