[STATEMENT]
lemma "fs (Pd ((a, b), (c, d))) = (a, b)"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. fs (Pd ((a, b), c, d)) = (a, b)
[PROOF STEP]
nitpick [expect = none]
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. fs (Pd ((a, b), c, d)) = (a, b)
[PROOF STEP]
sorry


[STATEMENT]
lemma "sn (Pd p) = snd p"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. sn (Pd p) = snd p
[PROOF STEP]
nitpick [card = 12, expect = none]
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. sn (Pd p) = snd p
[PROOF STEP]
sorry


[STATEMENT]
lemma (in PolynRg) P_mod_diffxxx4:"\<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>
  (Hen\<^bsub>R S X t R' Y f \<^esub> m gh) \<in> carrier R \<times> carrier R  \<and> (deg R S X
     (fst (Hen\<^bsub>R S X t R' Y f \<^esub> m 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 (Hen\<^bsub>R S X t R' Y f \<^esub> m gh)))) \<and>
  P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S m\<^esup>)) ((fst gh) \<plusminus> -\<^sub>a (fst (Hen\<^bsub>R S X t R' Y f \<^esub> m gh))) \<and>
  (deg R S X (snd (Hen\<^bsub>R S X t R' Y f \<^esub> m 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 (Hen\<^bsub>R S X t R' Y f \<^esub> m gh))) \<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 (Hen\<^bsub>R S X t R' Y f \<^esub> m gh))) \<and>
    P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S (Suc m)\<^esup>)) (f \<plusminus> (-\<^sub>a ((fst (Hen\<^bsub>R S X t R' Y f \<^esub> m gh)) \<cdot>\<^sub>r
             (snd (Hen\<^bsub>R S X t R' Y f \<^esub> m gh)))))"
[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> Hen\<^bsub> R S X t R' Y f\<^esub> m gh \<in> carrier R \<times> carrier R \<and> deg R S X (fst (Hen\<^bsub> R S X t R' Y f\<^esub> m 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 (Hen\<^bsub> R S X t R' Y f\<^esub> m gh))) \<and> P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S m\<^esup>)) (fst gh \<plusminus> -\<^sub>a fst (Hen\<^bsub> R S X t R' Y f\<^esub> m gh)) \<and> deg R S X (snd (Hen\<^bsub> R S X t R' Y f\<^esub> m 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 (Hen\<^bsub> R S X t R' Y f\<^esub> m gh))) \<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 (Hen\<^bsub> R S X t R' Y f\<^esub> m gh)) \<and> P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S Suc m\<^esup>)) (f \<plusminus> -\<^sub>a fst (Hen\<^bsub> R S X t R' Y f\<^esub> m gh) \<cdot>\<^sub>r snd (Hen\<^bsub> R S X t R' Y f\<^esub> m gh))
[PROOF STEP]
apply (unfold Hensel_next_def)
[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> (SOME 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)) \<in> carrier R \<times> carrier R \<and> deg R S X (fst (SOME 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))) \<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 (SOME 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)))) \<and> P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S m\<^esup>)) (fst gh \<plusminus> -\<^sub>a fst (SOME 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))) \<and> deg R S X (snd (SOME 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))) + 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 (SOME 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)))) \<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 (SOME 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))) \<and> P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S Suc m\<^esup>)) (f \<plusminus> -\<^sub>a fst (SOME 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)) \<cdot>\<^sub>r snd (SOME 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 (rule someI2_ex)
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 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>a. a \<in> carrier R \<times> carrier R \<and> deg R S X (fst 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)) (fst a)) \<and> P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S m\<^esup>)) (fst gh \<plusminus> -\<^sub>a fst a) \<and> deg R S X (snd a) + 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 a)) \<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 a) \<and> P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S Suc m\<^esup>)) (f \<plusminus> -\<^sub>a fst a \<cdot>\<^sub>r snd a)
 2. \<And>x. \<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; x \<in> carrier R \<times> carrier R \<and> deg R S X (fst x) \<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 x)) \<and> P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S m\<^esup>)) (fst gh \<plusminus> -\<^sub>a fst x) \<and> deg R S X (snd x) + 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 x)) \<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 x) \<and> P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S Suc m\<^esup>)) (f \<plusminus> -\<^sub>a fst x \<cdot>\<^sub>r snd x)\<rbrakk> \<Longrightarrow> x \<in> carrier R \<times> carrier R \<and> deg R S X (fst x) \<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 x)) \<and> P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S m\<^esup>)) (fst gh \<plusminus> -\<^sub>a fst x) \<and> deg R S X (snd x) + 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 x)) \<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 x) \<and> P_mod R S X (S \<diamondsuit>\<^sub>p (t^\<^bsup>S Suc m\<^esup>)) (f \<plusminus> -\<^sub>a fst x \<cdot>\<^sub>r snd x)
[PROOF STEP]
apply (rule P_mod_diffxxx3, assumption+)
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done


[STATEMENT]
lemma l_get_parent_get_host_wf_is_get_parent_get_host_wf [instances]:
  "l_get_parent_get_host_wf heap_is_wellformed get_parent get_shadow_root get_host get_child_nodes"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. l_get_parent_get_host_wf Shadow_DOM.heap_is_wellformed Shadow_DOM.get_parent get_shadow_root get_host Shadow_DOM.get_child_nodes
[PROOF STEP]
apply(auto simp add: l_get_parent_get_host_wf_def instances)[1]
[PROOF STATE]
proof (prove)
goal (2 subgoals):
 1. \<And>h P x. \<lbrakk>Shadow_DOM.heap_is_wellformed h; \<forall>parent. (\<forall>children. h \<turnstile> Shadow_DOM.get_child_nodes parent \<rightarrow>\<^sub>r children \<longrightarrow> (\<forall>child. child \<in> set children \<longrightarrow> P (cast\<^sub>n\<^sub>o\<^sub>d\<^sub>e\<^sub>_\<^sub>p\<^sub>t\<^sub>r\<^sub>2\<^sub>o\<^sub>b\<^sub>j\<^sub>e\<^sub>c\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r child))) \<longrightarrow> (\<forall>shadow_root host. parent = cast\<^sub>e\<^sub>l\<^sub>e\<^sub>m\<^sub>e\<^sub>n\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r\<^sub>2\<^sub>o\<^sub>b\<^sub>j\<^sub>e\<^sub>c\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r host \<longrightarrow> h \<turnstile> get_shadow_root host \<rightarrow>\<^sub>r Some shadow_root \<longrightarrow> P (cast\<^sub>s\<^sub>h\<^sub>a\<^sub>d\<^sub>o\<^sub>w\<^sub>_\<^sub>r\<^sub>o\<^sub>o\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r\<^sub>2\<^sub>o\<^sub>b\<^sub>j\<^sub>e\<^sub>c\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r shadow_root)) \<longrightarrow> P parent\<rbrakk> \<Longrightarrow> P x
 2. \<And>h P x. \<lbrakk>Shadow_DOM.heap_is_wellformed h; \<forall>child. (\<forall>parent child_node. child = cast\<^sub>n\<^sub>o\<^sub>d\<^sub>e\<^sub>_\<^sub>p\<^sub>t\<^sub>r\<^sub>2\<^sub>o\<^sub>b\<^sub>j\<^sub>e\<^sub>c\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r child_node \<longrightarrow> h \<turnstile> Shadow_DOM.get_parent child_node \<rightarrow>\<^sub>r Some parent \<longrightarrow> P parent) \<longrightarrow> (\<forall>host shadow_root. child = cast\<^sub>s\<^sub>h\<^sub>a\<^sub>d\<^sub>o\<^sub>w\<^sub>_\<^sub>r\<^sub>o\<^sub>o\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r\<^sub>2\<^sub>o\<^sub>b\<^sub>j\<^sub>e\<^sub>c\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r shadow_root \<longrightarrow> h \<turnstile> get_host shadow_root \<rightarrow>\<^sub>r host \<longrightarrow> P (cast\<^sub>e\<^sub>l\<^sub>e\<^sub>m\<^sub>e\<^sub>n\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r\<^sub>2\<^sub>o\<^sub>b\<^sub>j\<^sub>e\<^sub>c\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r host)) \<longrightarrow> P child\<rbrakk> \<Longrightarrow> P x
[PROOF STEP]
using heap_wellformed_induct_si
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>Shadow_DOM.heap_is_wellformed ?h; \<And>parent. \<lbrakk>\<And>children child. \<lbrakk>?h \<turnstile> Shadow_DOM.get_child_nodes parent \<rightarrow>\<^sub>r children; child \<in> set children\<rbrakk> \<Longrightarrow> ?P (cast\<^sub>n\<^sub>o\<^sub>d\<^sub>e\<^sub>_\<^sub>p\<^sub>t\<^sub>r\<^sub>2\<^sub>o\<^sub>b\<^sub>j\<^sub>e\<^sub>c\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r child); \<And>shadow_root host. \<lbrakk>parent = cast\<^sub>e\<^sub>l\<^sub>e\<^sub>m\<^sub>e\<^sub>n\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r\<^sub>2\<^sub>o\<^sub>b\<^sub>j\<^sub>e\<^sub>c\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r host; ?h \<turnstile> get_shadow_root host \<rightarrow>\<^sub>r Some shadow_root\<rbrakk> \<Longrightarrow> ?P (cast\<^sub>s\<^sub>h\<^sub>a\<^sub>d\<^sub>o\<^sub>w\<^sub>_\<^sub>r\<^sub>o\<^sub>o\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r\<^sub>2\<^sub>o\<^sub>b\<^sub>j\<^sub>e\<^sub>c\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r shadow_root)\<rbrakk> \<Longrightarrow> ?P parent\<rbrakk> \<Longrightarrow> ?P ?ptr

goal (2 subgoals):
 1. \<And>h P x. \<lbrakk>Shadow_DOM.heap_is_wellformed h; \<forall>parent. (\<forall>children. h \<turnstile> Shadow_DOM.get_child_nodes parent \<rightarrow>\<^sub>r children \<longrightarrow> (\<forall>child. child \<in> set children \<longrightarrow> P (cast\<^sub>n\<^sub>o\<^sub>d\<^sub>e\<^sub>_\<^sub>p\<^sub>t\<^sub>r\<^sub>2\<^sub>o\<^sub>b\<^sub>j\<^sub>e\<^sub>c\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r child))) \<longrightarrow> (\<forall>shadow_root host. parent = cast\<^sub>e\<^sub>l\<^sub>e\<^sub>m\<^sub>e\<^sub>n\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r\<^sub>2\<^sub>o\<^sub>b\<^sub>j\<^sub>e\<^sub>c\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r host \<longrightarrow> h \<turnstile> get_shadow_root host \<rightarrow>\<^sub>r Some shadow_root \<longrightarrow> P (cast\<^sub>s\<^sub>h\<^sub>a\<^sub>d\<^sub>o\<^sub>w\<^sub>_\<^sub>r\<^sub>o\<^sub>o\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r\<^sub>2\<^sub>o\<^sub>b\<^sub>j\<^sub>e\<^sub>c\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r shadow_root)) \<longrightarrow> P parent\<rbrakk> \<Longrightarrow> P x
 2. \<And>h P x. \<lbrakk>Shadow_DOM.heap_is_wellformed h; \<forall>child. (\<forall>parent child_node. child = cast\<^sub>n\<^sub>o\<^sub>d\<^sub>e\<^sub>_\<^sub>p\<^sub>t\<^sub>r\<^sub>2\<^sub>o\<^sub>b\<^sub>j\<^sub>e\<^sub>c\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r child_node \<longrightarrow> h \<turnstile> Shadow_DOM.get_parent child_node \<rightarrow>\<^sub>r Some parent \<longrightarrow> P parent) \<longrightarrow> (\<forall>host shadow_root. child = cast\<^sub>s\<^sub>h\<^sub>a\<^sub>d\<^sub>o\<^sub>w\<^sub>_\<^sub>r\<^sub>o\<^sub>o\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r\<^sub>2\<^sub>o\<^sub>b\<^sub>j\<^sub>e\<^sub>c\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r shadow_root \<longrightarrow> h \<turnstile> get_host shadow_root \<rightarrow>\<^sub>r host \<longrightarrow> P (cast\<^sub>e\<^sub>l\<^sub>e\<^sub>m\<^sub>e\<^sub>n\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r\<^sub>2\<^sub>o\<^sub>b\<^sub>j\<^sub>e\<^sub>c\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r host)) \<longrightarrow> P child\<rbrakk> \<Longrightarrow> P x
[PROOF STEP]
apply metis
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<And>h P x. \<lbrakk>Shadow_DOM.heap_is_wellformed h; \<forall>child. (\<forall>parent child_node. child = cast\<^sub>n\<^sub>o\<^sub>d\<^sub>e\<^sub>_\<^sub>p\<^sub>t\<^sub>r\<^sub>2\<^sub>o\<^sub>b\<^sub>j\<^sub>e\<^sub>c\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r child_node \<longrightarrow> h \<turnstile> Shadow_DOM.get_parent child_node \<rightarrow>\<^sub>r Some parent \<longrightarrow> P parent) \<longrightarrow> (\<forall>host shadow_root. child = cast\<^sub>s\<^sub>h\<^sub>a\<^sub>d\<^sub>o\<^sub>w\<^sub>_\<^sub>r\<^sub>o\<^sub>o\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r\<^sub>2\<^sub>o\<^sub>b\<^sub>j\<^sub>e\<^sub>c\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r shadow_root \<longrightarrow> h \<turnstile> get_host shadow_root \<rightarrow>\<^sub>r host \<longrightarrow> P (cast\<^sub>e\<^sub>l\<^sub>e\<^sub>m\<^sub>e\<^sub>n\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r\<^sub>2\<^sub>o\<^sub>b\<^sub>j\<^sub>e\<^sub>c\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r host)) \<longrightarrow> P child\<rbrakk> \<Longrightarrow> P x
[PROOF STEP]
using heap_wellformed_induct_rev_si
[PROOF STATE]
proof (prove)
using this:
\<lbrakk>Shadow_DOM.heap_is_wellformed ?h; \<And>child. \<lbrakk>\<And>parent child_node. \<lbrakk>child = cast\<^sub>n\<^sub>o\<^sub>d\<^sub>e\<^sub>_\<^sub>p\<^sub>t\<^sub>r\<^sub>2\<^sub>o\<^sub>b\<^sub>j\<^sub>e\<^sub>c\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r child_node; ?h \<turnstile> Shadow_DOM.get_parent child_node \<rightarrow>\<^sub>r Some parent\<rbrakk> \<Longrightarrow> ?P parent; \<And>host shadow_root. \<lbrakk>child = cast\<^sub>s\<^sub>h\<^sub>a\<^sub>d\<^sub>o\<^sub>w\<^sub>_\<^sub>r\<^sub>o\<^sub>o\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r\<^sub>2\<^sub>o\<^sub>b\<^sub>j\<^sub>e\<^sub>c\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r shadow_root; ?h \<turnstile> get_host shadow_root \<rightarrow>\<^sub>r host\<rbrakk> \<Longrightarrow> ?P (cast\<^sub>e\<^sub>l\<^sub>e\<^sub>m\<^sub>e\<^sub>n\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r\<^sub>2\<^sub>o\<^sub>b\<^sub>j\<^sub>e\<^sub>c\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r host)\<rbrakk> \<Longrightarrow> ?P child\<rbrakk> \<Longrightarrow> ?P ?ptr

goal (1 subgoal):
 1. \<And>h P x. \<lbrakk>Shadow_DOM.heap_is_wellformed h; \<forall>child. (\<forall>parent child_node. child = cast\<^sub>n\<^sub>o\<^sub>d\<^sub>e\<^sub>_\<^sub>p\<^sub>t\<^sub>r\<^sub>2\<^sub>o\<^sub>b\<^sub>j\<^sub>e\<^sub>c\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r child_node \<longrightarrow> h \<turnstile> Shadow_DOM.get_parent child_node \<rightarrow>\<^sub>r Some parent \<longrightarrow> P parent) \<longrightarrow> (\<forall>host shadow_root. child = cast\<^sub>s\<^sub>h\<^sub>a\<^sub>d\<^sub>o\<^sub>w\<^sub>_\<^sub>r\<^sub>o\<^sub>o\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r\<^sub>2\<^sub>o\<^sub>b\<^sub>j\<^sub>e\<^sub>c\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r shadow_root \<longrightarrow> h \<turnstile> get_host shadow_root \<rightarrow>\<^sub>r host \<longrightarrow> P (cast\<^sub>e\<^sub>l\<^sub>e\<^sub>m\<^sub>e\<^sub>n\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r\<^sub>2\<^sub>o\<^sub>b\<^sub>j\<^sub>e\<^sub>c\<^sub>t\<^sub>_\<^sub>p\<^sub>t\<^sub>r host)) \<longrightarrow> P child\<rbrakk> \<Longrightarrow> P x
[PROOF STEP]
apply blast
[PROOF STATE]
proof (prove)
goal:
No subgoals!
[PROOF STEP]
done


[STATEMENT]
lemma Id_secure_refinement:
  "secure_refinement R Id P_true"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. secure_refinement R Id P_true
[PROOF STEP]
unfolding secure_refinement_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. closed_others Id \<and> preserves_modes_mem Id \<and> abs.closed_glob_consistent P_true \<and> (\<forall>c\<^sub>1\<^sub>A mds mem\<^sub>1 c\<^sub>1\<^sub>C. (\<langle>c\<^sub>1\<^sub>A, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C) \<in> Id \<longrightarrow> (\<forall>c\<^sub>1\<^sub>C' mds' mem\<^sub>1'. gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C \<longrightarrow> (\<exists>n c\<^sub>1\<^sub>A'. abs.neval \<langle>c\<^sub>1\<^sub>A, mds, mem\<^sub>1\<rangle>\<^sub>C n \<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C) \<in> Id \<and> (\<forall>c\<^sub>2\<^sub>A mem\<^sub>2 c\<^sub>2\<^sub>C c\<^sub>2\<^sub>A' mem\<^sub>2'. (\<langle>c\<^sub>1\<^sub>A, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> R \<and> (\<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> P_true \<and> abs.neval \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C n \<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C \<longrightarrow> (\<exists>c\<^sub>2\<^sub>C'. gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> P_true)))))
[PROOF STEP]
proof(safe)
[PROOF STATE]
proof (state)
goal (4 subgoals):
 1. closed_others Id
 2. preserves_modes_mem Id
 3. abs.closed_glob_consistent P_true
 4. \<And>c\<^sub>1\<^sub>A mds mem\<^sub>1 c\<^sub>1\<^sub>C c\<^sub>1\<^sub>C' mds' mem\<^sub>1'. gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C \<Longrightarrow> \<exists>n c\<^sub>1\<^sub>A'. abs.neval \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C n \<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C) \<in> Id \<and> (\<forall>c\<^sub>2\<^sub>A mem\<^sub>2 c\<^sub>2\<^sub>C c\<^sub>2\<^sub>A' mem\<^sub>2'. (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> R \<and> (\<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> P_true \<and> abs.neval \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C n \<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C \<longrightarrow> (\<exists>c\<^sub>2\<^sub>C'. gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> P_true))
[PROOF STEP]
show "closed_others Id"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. closed_others Id
[PROOF STEP]
unfolding closed_others_def Id_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<forall>c\<^sub>A mds mem c\<^sub>C mem'. (\<langle>c\<^sub>A, mds, mem\<rangle>\<^sub>C, \<langle>c\<^sub>C, mds, mem\<rangle>\<^sub>C) \<in> {p. \<exists>x. p = (x, x)} \<longrightarrow> (\<forall>x. mem x \<noteq> mem' x \<longrightarrow> \<not> var_asm_not_written mds x) \<longrightarrow> (\<forall>x. dma mem x \<noteq> dma mem' x \<longrightarrow> \<not> var_asm_not_written mds x) \<longrightarrow> (\<langle>c\<^sub>A, mds, mem'\<rangle>\<^sub>C, \<langle>c\<^sub>C, mds, mem'\<rangle>\<^sub>C) \<in> {p. \<exists>x. p = (x, x)}
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
closed_others Id

goal (3 subgoals):
 1. preserves_modes_mem Id
 2. abs.closed_glob_consistent P_true
 3. \<And>c\<^sub>1\<^sub>A mds mem\<^sub>1 c\<^sub>1\<^sub>C c\<^sub>1\<^sub>C' mds' mem\<^sub>1'. gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C \<Longrightarrow> \<exists>n c\<^sub>1\<^sub>A'. abs.neval \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C n \<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C) \<in> Id \<and> (\<forall>c\<^sub>2\<^sub>A mem\<^sub>2 c\<^sub>2\<^sub>C c\<^sub>2\<^sub>A' mem\<^sub>2'. (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> R \<and> (\<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> P_true \<and> abs.neval \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C n \<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C \<longrightarrow> (\<exists>c\<^sub>2\<^sub>C'. gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> P_true))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (3 subgoals):
 1. preserves_modes_mem Id
 2. abs.closed_glob_consistent P_true
 3. \<And>c\<^sub>1\<^sub>A mds mem\<^sub>1 c\<^sub>1\<^sub>C c\<^sub>1\<^sub>C' mds' mem\<^sub>1'. gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C \<Longrightarrow> \<exists>n c\<^sub>1\<^sub>A'. abs.neval \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C n \<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C) \<in> Id \<and> (\<forall>c\<^sub>2\<^sub>A mem\<^sub>2 c\<^sub>2\<^sub>C c\<^sub>2\<^sub>A' mem\<^sub>2'. (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> R \<and> (\<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> P_true \<and> abs.neval \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C n \<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C \<longrightarrow> (\<exists>c\<^sub>2\<^sub>C'. gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> P_true))
[PROOF STEP]
show "preserves_modes_mem Id"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. preserves_modes_mem Id
[PROOF STEP]
unfolding preserves_modes_mem_def Id_def
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<forall>c\<^sub>A mds\<^sub>A mem\<^sub>A c\<^sub>C mds\<^sub>C mem\<^sub>C. (\<langle>c\<^sub>A, mds\<^sub>A, mem\<^sub>A\<rangle>\<^sub>C, \<langle>c\<^sub>C, mds\<^sub>C, mem\<^sub>C\<rangle>\<^sub>C) \<in> {p. \<exists>x. p = (x, x)} \<longrightarrow> mem\<^sub>A = mem\<^sub>C \<and> mds\<^sub>A = mds\<^sub>C
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
preserves_modes_mem Id

goal (2 subgoals):
 1. abs.closed_glob_consistent P_true
 2. \<And>c\<^sub>1\<^sub>A mds mem\<^sub>1 c\<^sub>1\<^sub>C c\<^sub>1\<^sub>C' mds' mem\<^sub>1'. gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C \<Longrightarrow> \<exists>n c\<^sub>1\<^sub>A'. abs.neval \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C n \<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C) \<in> Id \<and> (\<forall>c\<^sub>2\<^sub>A mem\<^sub>2 c\<^sub>2\<^sub>C c\<^sub>2\<^sub>A' mem\<^sub>2'. (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> R \<and> (\<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> P_true \<and> abs.neval \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C n \<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C \<longrightarrow> (\<exists>c\<^sub>2\<^sub>C'. gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> P_true))
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. abs.closed_glob_consistent P_true
 2. \<And>c\<^sub>1\<^sub>A mds mem\<^sub>1 c\<^sub>1\<^sub>C c\<^sub>1\<^sub>C' mds' mem\<^sub>1'. gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C \<Longrightarrow> \<exists>n c\<^sub>1\<^sub>A'. abs.neval \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C n \<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C) \<in> Id \<and> (\<forall>c\<^sub>2\<^sub>A mem\<^sub>2 c\<^sub>2\<^sub>C c\<^sub>2\<^sub>A' mem\<^sub>2'. (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> R \<and> (\<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> P_true \<and> abs.neval \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C n \<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C \<longrightarrow> (\<exists>c\<^sub>2\<^sub>C'. gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> P_true))
[PROOF STEP]
fix c\<^sub>1\<^sub>A mds mem\<^sub>1 c\<^sub>1\<^sub>C c\<^sub>1\<^sub>C' mds' mem\<^sub>1'
[PROOF STATE]
proof (state)
goal (2 subgoals):
 1. abs.closed_glob_consistent P_true
 2. \<And>c\<^sub>1\<^sub>A mds mem\<^sub>1 c\<^sub>1\<^sub>C c\<^sub>1\<^sub>C' mds' mem\<^sub>1'. gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C \<Longrightarrow> \<exists>n c\<^sub>1\<^sub>A'. abs.neval \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C n \<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C) \<in> Id \<and> (\<forall>c\<^sub>2\<^sub>A mem\<^sub>2 c\<^sub>2\<^sub>C c\<^sub>2\<^sub>A' mem\<^sub>2'. (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> R \<and> (\<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> P_true \<and> abs.neval \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C n \<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C \<longrightarrow> (\<exists>c\<^sub>2\<^sub>C'. gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> P_true))
[PROOF STEP]
assume step: "(\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C) \<in> eval\<^sub>w"
[PROOF STATE]
proof (state)
this:
gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C

goal (2 subgoals):
 1. abs.closed_glob_consistent P_true
 2. \<And>c\<^sub>1\<^sub>A mds mem\<^sub>1 c\<^sub>1\<^sub>C c\<^sub>1\<^sub>C' mds' mem\<^sub>1'. gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C \<Longrightarrow> \<exists>n c\<^sub>1\<^sub>A'. abs.neval \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C n \<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C) \<in> Id \<and> (\<forall>c\<^sub>2\<^sub>A mem\<^sub>2 c\<^sub>2\<^sub>C c\<^sub>2\<^sub>A' mem\<^sub>2'. (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> R \<and> (\<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> P_true \<and> abs.neval \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C n \<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C \<longrightarrow> (\<exists>c\<^sub>2\<^sub>C'. gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> P_true))
[PROOF STEP]
show
      "\<exists>n c\<^sub>1\<^sub>A'.
          neval \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C n \<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C \<and>
          (\<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C) \<in> Id \<and>
          (\<forall>c\<^sub>2\<^sub>A mem\<^sub>2 c\<^sub>2\<^sub>C c\<^sub>2\<^sub>A' mem\<^sub>2'.
              (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> R \<and>
              (\<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> Id \<and>
              (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> P_true \<and>
              neval \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C n \<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C \<longrightarrow>
              (\<exists>c\<^sub>2\<^sub>C'.
                  (\<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C)
                  \<in> eval\<^sub>w \<and>
                  (\<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> Id \<and>
                  (\<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> P_true))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<exists>n c\<^sub>1\<^sub>A'. abs.neval \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C n \<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C) \<in> Id \<and> (\<forall>c\<^sub>2\<^sub>A mem\<^sub>2 c\<^sub>2\<^sub>C c\<^sub>2\<^sub>A' mem\<^sub>2'. (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> R \<and> (\<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> P_true \<and> abs.neval \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C n \<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C \<longrightarrow> (\<exists>c\<^sub>2\<^sub>C'. gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> P_true))
[PROOF STEP]
proof -
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<exists>n c\<^sub>1\<^sub>A'. abs.neval \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C n \<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C) \<in> Id \<and> (\<forall>c\<^sub>2\<^sub>A mem\<^sub>2 c\<^sub>2\<^sub>C c\<^sub>2\<^sub>A' mem\<^sub>2'. (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> R \<and> (\<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> P_true \<and> abs.neval \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C n \<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C \<longrightarrow> (\<exists>c\<^sub>2\<^sub>C'. gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> P_true))
[PROOF STEP]
let ?n = "Suc 0"
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<exists>n c\<^sub>1\<^sub>A'. abs.neval \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C n \<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C) \<in> Id \<and> (\<forall>c\<^sub>2\<^sub>A mem\<^sub>2 c\<^sub>2\<^sub>C c\<^sub>2\<^sub>A' mem\<^sub>2'. (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> R \<and> (\<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> P_true \<and> abs.neval \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C n \<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C \<longrightarrow> (\<exists>c\<^sub>2\<^sub>C'. gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> P_true))
[PROOF STEP]
let ?c\<^sub>1\<^sub>A' = c\<^sub>1\<^sub>C'
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. \<exists>n c\<^sub>1\<^sub>A'. abs.neval \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C n \<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C) \<in> Id \<and> (\<forall>c\<^sub>2\<^sub>A mem\<^sub>2 c\<^sub>2\<^sub>C c\<^sub>2\<^sub>A' mem\<^sub>2'. (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> R \<and> (\<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> P_true \<and> abs.neval \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C n \<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C \<longrightarrow> (\<exists>c\<^sub>2\<^sub>C'. gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> P_true))
[PROOF STEP]
from step
[PROOF STATE]
proof (chain)
picking this:
gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C
[PROOF STEP]
have "neval \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C ?n \<langle>?c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C"
[PROOF STATE]
proof (prove)
using this:
gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C

goal (1 subgoal):
 1. abs.neval \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C (Suc 0) \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
abs.neval \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C (Suc 0) \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C

goal (1 subgoal):
 1. \<exists>n c\<^sub>1\<^sub>A'. abs.neval \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C n \<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C) \<in> Id \<and> (\<forall>c\<^sub>2\<^sub>A mem\<^sub>2 c\<^sub>2\<^sub>C c\<^sub>2\<^sub>A' mem\<^sub>2'. (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> R \<and> (\<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> P_true \<and> abs.neval \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C n \<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C \<longrightarrow> (\<exists>c\<^sub>2\<^sub>C'. gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> P_true))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
abs.neval \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C (Suc 0) \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C

goal (1 subgoal):
 1. \<exists>n c\<^sub>1\<^sub>A'. abs.neval \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C n \<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C) \<in> Id \<and> (\<forall>c\<^sub>2\<^sub>A mem\<^sub>2 c\<^sub>2\<^sub>C c\<^sub>2\<^sub>A' mem\<^sub>2'. (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> R \<and> (\<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> P_true \<and> abs.neval \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C n \<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C \<longrightarrow> (\<exists>c\<^sub>2\<^sub>C'. gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> P_true))
[PROOF STEP]
have "(\<langle>?c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C) \<in> Id"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. (\<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C) \<in> Id
[PROOF STEP]
by simp
[PROOF STATE]
proof (state)
this:
(\<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C) \<in> Id

goal (1 subgoal):
 1. \<exists>n c\<^sub>1\<^sub>A'. abs.neval \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C n \<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C) \<in> Id \<and> (\<forall>c\<^sub>2\<^sub>A mem\<^sub>2 c\<^sub>2\<^sub>C c\<^sub>2\<^sub>A' mem\<^sub>2'. (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> R \<and> (\<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> P_true \<and> abs.neval \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C n \<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C \<longrightarrow> (\<exists>c\<^sub>2\<^sub>C'. gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> P_true))
[PROOF STEP]
moreover
[PROOF STATE]
proof (state)
this:
(\<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C) \<in> Id

goal (1 subgoal):
 1. \<exists>n c\<^sub>1\<^sub>A'. abs.neval \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C n \<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C) \<in> Id \<and> (\<forall>c\<^sub>2\<^sub>A mem\<^sub>2 c\<^sub>2\<^sub>C c\<^sub>2\<^sub>A' mem\<^sub>2'. (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> R \<and> (\<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> P_true \<and> abs.neval \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C n \<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C \<longrightarrow> (\<exists>c\<^sub>2\<^sub>C'. gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> P_true))
[PROOF STEP]
have "(\<forall>c\<^sub>2\<^sub>A mem\<^sub>2 c\<^sub>2\<^sub>C c\<^sub>2\<^sub>A' mem\<^sub>2'.
              (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> R \<and>
              (\<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> Id \<and>
              (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> P_true \<and>
              neval \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C ?n \<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C \<longrightarrow>
              (\<exists>c\<^sub>2\<^sub>C'.
                  (\<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C)
                  \<in> eval\<^sub>w \<and>
                  (\<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> Id \<and>
                  (\<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> P_true))"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. \<forall>c\<^sub>2\<^sub>A mem\<^sub>2 c\<^sub>2\<^sub>C c\<^sub>2\<^sub>A' mem\<^sub>2'. (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> R \<and> (\<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> P_true \<and> abs.neval \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C (Suc 0) \<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C \<longrightarrow> (\<exists>c\<^sub>2\<^sub>C'. gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> P_true)
[PROOF STEP]
using step
[PROOF STATE]
proof (prove)
using this:
gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C

goal (1 subgoal):
 1. \<forall>c\<^sub>2\<^sub>A mem\<^sub>2 c\<^sub>2\<^sub>C c\<^sub>2\<^sub>A' mem\<^sub>2'. (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> R \<and> (\<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> P_true \<and> abs.neval \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C (Suc 0) \<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C \<longrightarrow> (\<exists>c\<^sub>2\<^sub>C'. gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> P_true)
[PROOF STEP]
unfolding P_true_def
[PROOF STATE]
proof (prove)
using this:
gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C

goal (1 subgoal):
 1. \<forall>c\<^sub>2\<^sub>A mem\<^sub>2 c\<^sub>2\<^sub>C c\<^sub>2\<^sub>A' mem\<^sub>2'. (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> R \<and> (\<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> UNIV \<and> abs.neval \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C (Suc 0) \<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C \<longrightarrow> (\<exists>c\<^sub>2\<^sub>C'. gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> UNIV)
[PROOF STEP]
by clarsimp
[PROOF STATE]
proof (state)
this:
\<forall>c\<^sub>2\<^sub>A mem\<^sub>2 c\<^sub>2\<^sub>C c\<^sub>2\<^sub>A' mem\<^sub>2'. (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> R \<and> (\<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> P_true \<and> abs.neval \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C (Suc 0) \<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C \<longrightarrow> (\<exists>c\<^sub>2\<^sub>C'. gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> P_true)

goal (1 subgoal):
 1. \<exists>n c\<^sub>1\<^sub>A'. abs.neval \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C n \<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C) \<in> Id \<and> (\<forall>c\<^sub>2\<^sub>A mem\<^sub>2 c\<^sub>2\<^sub>C c\<^sub>2\<^sub>A' mem\<^sub>2'. (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> R \<and> (\<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> P_true \<and> abs.neval \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C n \<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C \<longrightarrow> (\<exists>c\<^sub>2\<^sub>C'. gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> P_true))
[PROOF STEP]
ultimately
[PROOF STATE]
proof (chain)
picking this:
abs.neval \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C (Suc 0) \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C
(\<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C) \<in> Id
\<forall>c\<^sub>2\<^sub>A mem\<^sub>2 c\<^sub>2\<^sub>C c\<^sub>2\<^sub>A' mem\<^sub>2'. (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> R \<and> (\<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> P_true \<and> abs.neval \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C (Suc 0) \<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C \<longrightarrow> (\<exists>c\<^sub>2\<^sub>C'. gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> P_true)
[PROOF STEP]
show ?thesis
[PROOF STATE]
proof (prove)
using this:
abs.neval \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C (Suc 0) \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C
(\<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C) \<in> Id
\<forall>c\<^sub>2\<^sub>A mem\<^sub>2 c\<^sub>2\<^sub>C c\<^sub>2\<^sub>A' mem\<^sub>2'. (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> R \<and> (\<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> P_true \<and> abs.neval \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C (Suc 0) \<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C \<longrightarrow> (\<exists>c\<^sub>2\<^sub>C'. gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> P_true)

goal (1 subgoal):
 1. \<exists>n c\<^sub>1\<^sub>A'. abs.neval \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C n \<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C) \<in> Id \<and> (\<forall>c\<^sub>2\<^sub>A mem\<^sub>2 c\<^sub>2\<^sub>C c\<^sub>2\<^sub>A' mem\<^sub>2'. (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> R \<and> (\<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> P_true \<and> abs.neval \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C n \<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C \<longrightarrow> (\<exists>c\<^sub>2\<^sub>C'. gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> P_true))
[PROOF STEP]
by blast
[PROOF STATE]
proof (state)
this:
\<exists>n c\<^sub>1\<^sub>A'. abs.neval \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C n \<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C) \<in> Id \<and> (\<forall>c\<^sub>2\<^sub>A mem\<^sub>2 c\<^sub>2\<^sub>C c\<^sub>2\<^sub>A' mem\<^sub>2'. (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> R \<and> (\<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> P_true \<and> abs.neval \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C n \<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C \<longrightarrow> (\<exists>c\<^sub>2\<^sub>C'. gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> P_true))

goal:
No subgoals!
[PROOF STEP]
qed
[PROOF STATE]
proof (state)
this:
\<exists>n c\<^sub>1\<^sub>A'. abs.neval \<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C n \<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>1\<^sub>A', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C) \<in> Id \<and> (\<forall>c\<^sub>2\<^sub>A mem\<^sub>2 c\<^sub>2\<^sub>C c\<^sub>2\<^sub>A' mem\<^sub>2'. (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> R \<and> (\<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C, mds, mem\<^sub>1\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C) \<in> P_true \<and> abs.neval \<langle>c\<^sub>2\<^sub>A, mds, mem\<^sub>2\<rangle>\<^sub>C n \<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C \<longrightarrow> (\<exists>c\<^sub>2\<^sub>C'. gen_refine.eval_abv\<^sub>C \<langle>c\<^sub>2\<^sub>C, mds, mem\<^sub>2\<rangle>\<^sub>C \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C \<and> (\<langle>c\<^sub>2\<^sub>A', mds', mem\<^sub>2'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> Id \<and> (\<langle>c\<^sub>1\<^sub>C', mds', mem\<^sub>1'\<rangle>\<^sub>C, \<langle>c\<^sub>2\<^sub>C', mds', mem\<^sub>2'\<rangle>\<^sub>C) \<in> P_true))

goal (1 subgoal):
 1. abs.closed_glob_consistent P_true
[PROOF STEP]
next
[PROOF STATE]
proof (state)
goal (1 subgoal):
 1. abs.closed_glob_consistent P_true
[PROOF STEP]
show "closed_glob_consistent P_true"
[PROOF STATE]
proof (prove)
goal (1 subgoal):
 1. abs.closed_glob_consistent P_true
[PROOF STEP]
by(auto simp: closed_glob_consistent_def P_true_def)
[PROOF STATE]
proof (state)
this:
abs.closed_glob_consistent P_true

goal:
No subgoals!
[PROOF STEP]
qed