cases: fixes a1 :: "(Eg1.var, aexp, bexp) Stmt"   and a2 :: "Mode \<Rightarrow> Eg1.var set"   and a3 :: "Eg1.var \<Rightarrow> nat"   and a4 :: "(var\<^sub>C, aexp\<^sub>C, bexp\<^sub>C) Stmt"   and a5 :: "Mode \<Rightarrow> var\<^sub>C set"   and a6 :: "var\<^sub>C \<Rightarrow> nat" assumes "(\<langle>a1, a2, a3\<rangle>\<^sub>A, \<langle>a4, a5, a6\<rangle>\<^sub>C) \<in> RelS_Eg1Eg2" obtains c\<^sub>A :: "(Eg1.var, aexp, bexp) Stmt" and x :: "Eg1.var" and SomeMode :: "Mode" and c\<^sub>A_tail :: "(Eg1.var, aexp, bexp) Stmt" and c\<^sub>C :: "(var\<^sub>C, aexp\<^sub>C, bexp\<^sub>C) Stmt" and c\<^sub>C_tail :: "(var\<^sub>C, aexp\<^sub>C, bexp\<^sub>C) Stmt" and mds\<^sub>A :: "Mode \<Rightarrow> Eg1.var set" and mds\<^sub>C :: "Mode \<Rightarrow> var\<^sub>C set" and mem\<^sub>A :: "Eg1.var \<Rightarrow> nat" and mem\<^sub>C :: "var\<^sub>C \<Rightarrow> nat" where "a1 = c\<^sub>A'__" and "a2 = mds\<^sub>A'__" and "a3 = mem\<^sub>A'__" and "a4 = c\<^sub>C'__" and "a5 = mds\<^sub>C'__" and "a6 = mem\<^sub>C'__" and "c\<^sub>A'__ = (Skip@[x__ +=\<^sub>m SomeMode__]) ;; c\<^sub>A_tail__" and "c\<^sub>C'__ = (Skip@[Eg2_var\<^sub>C_of_Eg1 x__ +=\<^sub>m SomeMode__]) ;; c\<^sub>C_tail__" and "mds\<^sub>A'__ = mds\<^sub>A_of mds\<^sub>C'__" and "mem\<^sub>A'__ = mem\<^sub>A_of mem\<^sub>C'__" and "\<forall>v\<^sub>C. v\<^sub>C \<notin> range Eg2_var\<^sub>C_of_Eg1 \<longrightarrow> v\<^sub>C \<in> mds\<^sub>C'__ AsmNoReadOrWrite" and "\<forall>mds\<^sub>A'' mem\<^sub>A' mem\<^sub>A'' mds\<^sub>C'' mem\<^sub>C' mem\<^sub>C''. mds\<^sub>A'' = mds\<^sub>A_of mds\<^sub>C'' \<and> mem\<^sub>A' = mem\<^sub>A_of mem\<^sub>C' \<and> mem\<^sub>A'' = mem\<^sub>A_of mem\<^sub>C'' \<and> eval_abv\<^sub>A \<langle>c\<^sub>A'__, mds\<^sub>A'__, mem\<^sub>A''\<rangle>\<^sub>A \<langle>Stop ;; c\<^sub>A_tail__, mds\<^sub>A'', mem\<^sub>A'\<rangle>\<^sub>A \<and> eval_abv\<^sub>C \<langle>c\<^sub>C'__, mds\<^sub>C'__, mem\<^sub>C''\<rangle>\<^sub>C \<langle>Stop ;; c\<^sub>C_tail__, mds\<^sub>C'', mem\<^sub>C'\<rangle>\<^sub>C \<longrightarrow> (\<langle>Stop ;; c\<^sub>A_tail__, mds\<^sub>A'', mem\<^sub>A'\<rangle>\<^sub>A, \<langle>Stop ;; c\<^sub>C_tail__, mds\<^sub>C'', mem\<^sub>C'\<rangle>\<^sub>C) \<in> RelS_Eg1Eg2"   | c\<^sub>A :: "(Eg1.var, aexp, bexp) Stmt" and x :: "Eg1.var" and SomeMode :: "Mode" and c\<^sub>C :: "(var\<^sub>C, aexp\<^sub>C, bexp\<^sub>C) Stmt" and mds\<^sub>A :: "Mode \<Rightarrow> Eg1.var set" and mds\<^sub>C :: "Mode \<Rightarrow> var\<^sub>C set" and mem\<^sub>A :: "Eg1.var \<Rightarrow> nat" and mem\<^sub>C :: "var\<^sub>C \<Rightarrow> nat" where "a1 = c\<^sub>A''__" and "a2 = mds\<^sub>A''__" and "a3 = mem\<^sub>A''__" and "a4 = c\<^sub>C''__" and "a5 = mds\<^sub>C''__" and "a6 = mem\<^sub>C''__" and "c\<^sub>A''__ = Skip@[xa__ -=\<^sub>m SomeMode]" and "c\<^sub>C''__ = Skip@[Eg2_var\<^sub>C_of_Eg1 xa__ -=\<^sub>m SomeMode]" and "mds\<^sub>A''__ = mds\<^sub>A_of mds\<^sub>C''__" and "mem\<^sub>A''__ = mem\<^sub>A_of mem\<^sub>C''__" and "\<forall>v\<^sub>C. v\<^sub>C \<notin> range Eg2_var\<^sub>C_of_Eg1 \<longrightarrow> v\<^sub>C \<in> mds\<^sub>C''__ AsmNoReadOrWrite" and "\<forall>mds\<^sub>A' mem\<^sub>A' mem\<^sub>A'' mds\<^sub>C' mem\<^sub>C' mem\<^sub>C''. mds\<^sub>A' = mds\<^sub>A_of mds\<^sub>C' \<and> mem\<^sub>A' = mem\<^sub>A_of mem\<^sub>C' \<and> mem\<^sub>A'' = mem\<^sub>A_of mem\<^sub>C'' \<and> eval_abv\<^sub>A \<langle>c\<^sub>A''__, mds\<^sub>A''__, mem\<^sub>A''\<rangle>\<^sub>A \<langle>Stop, mds\<^sub>A', mem\<^sub>A'\<rangle>\<^sub>A \<and> eval_abv\<^sub>C \<langle>c\<^sub>C''__, mds\<^sub>C''__, mem\<^sub>C''\<rangle>\<^sub>C \<langle>Stop, mds\<^sub>C', mem\<^sub>C'\<rangle>\<^sub>C \<longrightarrow> (\<langle>Stop, mds\<^sub>A', mem\<^sub>A'\<rangle>\<^sub>A, \<langle>Stop, mds\<^sub>C', mem\<^sub>C'\<rangle>\<^sub>C) \<in> RelS_Eg1Eg2"   | c\<^sub>A :: "(Eg1.var, aexp, bexp) Stmt" and x :: "Eg1.var" and y :: "Eg1.var" and c\<^sub>A_tail :: "(Eg1.var, aexp, bexp) Stmt" and c\<^sub>C :: "(var\<^sub>C, aexp\<^sub>C, bexp\<^sub>C) Stmt" and c\<^sub>C_tail :: "(var\<^sub>C, aexp\<^sub>C, bexp\<^sub>C) Stmt" and mds\<^sub>A :: "Mode \<Rightarrow> Eg1.var set" and mds\<^sub>C :: "Mode \<Rightarrow> var\<^sub>C set" and mem\<^sub>A :: "Eg1.var \<Rightarrow> nat" and mem\<^sub>C :: "var\<^sub>C \<Rightarrow> nat" where "a1 = c\<^sub>A'''__" and "a2 = mds\<^sub>A'''__" and "a3 = mem\<^sub>A'''__" and "a4 = c\<^sub>C'''__" and "a5 = mds\<^sub>C'''__" and "a6 = mem\<^sub>C'''__" and "c\<^sub>A'''__ = (xb__ \<leftarrow> aexp.Load y) ;; c\<^sub>A_taila__" and "c\<^sub>C'''__ = (Eg2_var\<^sub>C_of_Eg1 xb__ \<leftarrow> aexp\<^sub>C.Load (Eg2_var\<^sub>C_of_Eg1 y)) ;; c\<^sub>C_taila__" and "mds\<^sub>A'''__ = mds\<^sub>A_of mds\<^sub>C'''__" and "mem\<^sub>A'''__ = mem\<^sub>A_of mem\<^sub>C'''__" and "\<forall>v\<^sub>C. v\<^sub>C \<notin> range Eg2_var\<^sub>C_of_Eg1 \<longrightarrow> v\<^sub>C \<in> mds\<^sub>C'''__ AsmNoReadOrWrite" and "xb__ \<notin> mds\<^sub>A'''__ GuarNoReadOrWrite" and "xb__ \<notin> mds\<^sub>A'''__ GuarNoWrite" and "y \<notin> mds\<^sub>A'''__ GuarNoReadOrWrite" and "xb__ \<notin> \<C>" and "y \<notin> \<C>" and "\<forall>mds\<^sub>A' mem\<^sub>A' mem\<^sub>A'' mds\<^sub>C' mem\<^sub>C' mem\<^sub>C''. mds\<^sub>A' = mds\<^sub>A_of mds\<^sub>C' \<and> mem\<^sub>A' = mem\<^sub>A_of mem\<^sub>C' \<and> mem\<^sub>A'' = mem\<^sub>A_of mem\<^sub>C'' \<and> eval_abv\<^sub>A \<langle>c\<^sub>A'''__, mds\<^sub>A'''__, mem\<^sub>A''\<rangle>\<^sub>A \<langle>Stop ;; c\<^sub>A_taila__, mds\<^sub>A', mem\<^sub>A'\<rangle>\<^sub>A \<and> eval_abv\<^sub>C \<langle>c\<^sub>C'''__, mds\<^sub>C'''__, mem\<^sub>C''\<rangle>\<^sub>C \<langle>Stop ;; c\<^sub>C_taila__, mds\<^sub>C', mem\<^sub>C'\<rangle>\<^sub>C \<longrightarrow> (\<langle>Stop ;; c\<^sub>A_taila__, mds\<^sub>A', mem\<^sub>A'\<rangle>\<^sub>A, \<langle>Stop ;; c\<^sub>C_taila__, mds\<^sub>C', mem\<^sub>C'\<rangle>\<^sub>C) \<in> RelS_Eg1Eg2"   | c\<^sub>A :: "(Eg1.var, aexp, bexp) Stmt" and x :: "Eg1.var" and z :: "nat" and c\<^sub>A_tail :: "(Eg1.var, aexp, bexp) Stmt" and c\<^sub>C :: "(var\<^sub>C, aexp\<^sub>C, bexp\<^sub>C) Stmt" and c\<^sub>C_tail :: "(var\<^sub>C, aexp\<^sub>C, bexp\<^sub>C) Stmt" and mds\<^sub>A :: "Mode \<Rightarrow> Eg1.var set" and mds\<^sub>C :: "Mode \<Rightarrow> var\<^sub>C set" and mem\<^sub>A :: "Eg1.var \<Rightarrow> nat" and mem\<^sub>C :: "var\<^sub>C \<Rightarrow> nat" where "a1 = c\<^sub>A''''__" and "a2 = mds\<^sub>A''''__" and "a3 = mem\<^sub>A''''__" and "a4 = c\<^sub>C''''__" and "a5 = mds\<^sub>C''''__" and "a6 = mem\<^sub>C''''__" and "c\<^sub>A''''__ = (xc__ \<leftarrow> aexp.Const z) ;; c\<^sub>A_tailb__" and "c\<^sub>C''''__ = (Eg2_var\<^sub>C_of_Eg1 xc__ \<leftarrow> aexp\<^sub>C.Const z) ;; c\<^sub>C_tailb__" and "mds\<^sub>A''''__ = mds\<^sub>A_of mds\<^sub>C''''__" and "mem\<^sub>A''''__ = mem\<^sub>A_of mem\<^sub>C''''__" and "\<forall>v\<^sub>C. v\<^sub>C \<notin> range Eg2_var\<^sub>C_of_Eg1 \<longrightarrow> v\<^sub>C \<in> mds\<^sub>C''''__ AsmNoReadOrWrite" and "xc__ \<notin> mds\<^sub>A''''__ GuarNoReadOrWrite" and "xc__ \<notin> mds\<^sub>A''''__ GuarNoWrite" and "xc__ \<notin> \<C>" and "\<forall>mds\<^sub>A' mem\<^sub>A' mem\<^sub>A'' mds\<^sub>C' mem\<^sub>C' mem\<^sub>C''. mds\<^sub>A' = mds\<^sub>A_of mds\<^sub>C' \<and> mem\<^sub>A' = mem\<^sub>A_of mem\<^sub>C' \<and> mem\<^sub>A'' = mem\<^sub>A_of mem\<^sub>C'' \<and> eval_abv\<^sub>A \<langle>c\<^sub>A''''__, mds\<^sub>A''''__, mem\<^sub>A''\<rangle>\<^sub>A \<langle>Stop ;; c\<^sub>A_tailb__, mds\<^sub>A', mem\<^sub>A'\<rangle>\<^sub>A \<and> eval_abv\<^sub>C \<langle>c\<^sub>C''''__, mds\<^sub>C''''__, mem\<^sub>C''\<rangle>\<^sub>C \<langle>Stop ;; c\<^sub>C_tailb__, mds\<^sub>C', mem\<^sub>C'\<rangle>\<^sub>C \<longrightarrow> (\<langle>Stop ;; c\<^sub>A_tailb__, mds\<^sub>A', mem\<^sub>A'\<rangle>\<^sub>A, \<langle>Stop ;; c\<^sub>C_tailb__, mds\<^sub>C', mem\<^sub>C'\<rangle>\<^sub>C) \<in> RelS_Eg1Eg2"   | c\<^sub>A :: "(Eg1.var, aexp, bexp) Stmt" and x :: "Eg1.var" and c\<^sub>A_then :: "(Eg1.var, aexp, bexp) Stmt" and c\<^sub>A_else :: "(Eg1.var, aexp, bexp) Stmt" and c\<^sub>A_tail :: "(Eg1.var, aexp, bexp) Stmt" and c\<^sub>C :: "(var\<^sub>C, aexp\<^sub>C, bexp\<^sub>C) Stmt" and c\<^sub>C_then :: "(var\<^sub>C, aexp\<^sub>C, bexp\<^sub>C) Stmt" and c\<^sub>C_else :: "(var\<^sub>C, aexp\<^sub>C, bexp\<^sub>C) Stmt" and c\<^sub>C_tail :: "(var\<^sub>C, aexp\<^sub>C, bexp\<^sub>C) Stmt" and mds\<^sub>A :: "Mode \<Rightarrow> Eg1.var set" and mds\<^sub>C :: "Mode \<Rightarrow> var\<^sub>C set" and mem\<^sub>A :: "Eg1.var \<Rightarrow> nat" and mem\<^sub>C :: "var\<^sub>C \<Rightarrow> nat" where "a1 = c\<^sub>A'''''__" and "a2 = mds\<^sub>A'''''__" and "a3 = mem\<^sub>A'''''__" and "a4 = c\<^sub>C'''''__" and "a5 = mds\<^sub>C'''''__" and "a6 = mem\<^sub>C'''''__" and "c\<^sub>A'''''__ = Stmt.If (bexp.Eq xd__ 0) c\<^sub>A_then__ c\<^sub>A_else__ ;; c\<^sub>A_tailc__" and "c\<^sub>C'''''__ = (reg\<^sub>C \<leftarrow> aexp\<^sub>C.Load (Eg2_var\<^sub>C_of_Eg1 xd__)) ;; Stmt.If (bexp\<^sub>C.Eq reg\<^sub>C 0) c\<^sub>C_then__ c\<^sub>C_else__ ;; c\<^sub>C_tailc__" and "mds\<^sub>A'''''__ = mds\<^sub>A_of mds\<^sub>C'''''__" and "mem\<^sub>A'''''__ = mem\<^sub>A_of mem\<^sub>C'''''__" and "\<forall>v\<^sub>C. v\<^sub>C \<notin> range Eg2_var\<^sub>C_of_Eg1 \<longrightarrow> v\<^sub>C \<in> mds\<^sub>C'''''__ AsmNoReadOrWrite" and "reg\<^sub>C \<notin> mds\<^sub>C'''''__ GuarNoReadOrWrite" and "reg\<^sub>C \<notin> mds\<^sub>C'''''__ GuarNoWrite" and "xd__ \<notin> mds\<^sub>A'''''__ GuarNoReadOrWrite" and "\<forall>x'. xd__ \<in> \<C>_vars x' \<longrightarrow> x' \<notin> mds\<^sub>A'''''__ GuarNoReadOrWrite" and "\<forall>mem\<^sub>A' mem\<^sub>C' mem\<^sub>A'' mem\<^sub>C''. mem\<^sub>A' = mem\<^sub>A_of mem\<^sub>C' \<and> mem\<^sub>A'' = mem\<^sub>A_of mem\<^sub>C'' \<and> mem\<^sub>A'' = mem\<^sub>A' \<and> ev\<^sub>B\<^sub>C mem\<^sub>C' (bexp\<^sub>C.Eq reg\<^sub>C 0) = ev\<^sub>B mem\<^sub>A' (bexp.Eq xd__ 0) \<and> eval_abv\<^sub>C \<langle>c\<^sub>C'''''__, mds\<^sub>C'''''__, mem\<^sub>C''\<rangle>\<^sub>C \<langle>Stop ;; Stmt.If (bexp\<^sub>C.Eq reg\<^sub>C 0) c\<^sub>C_then__ c\<^sub>C_else__ ;; c\<^sub>C_tailc__, mds\<^sub>C'''''__, mem\<^sub>C'\<rangle>\<^sub>C \<longrightarrow> (\<langle>c\<^sub>A'''''__, mds\<^sub>A'''''__, mem\<^sub>A''\<rangle>\<^sub>A, \<langle>Stop ;; Stmt.If (bexp\<^sub>C.Eq reg\<^sub>C 0) c\<^sub>C_then__ c\<^sub>C_else__ ;; c\<^sub>C_tailc__, mds\<^sub>C'''''__, mem\<^sub>C'\<rangle>\<^sub>C) \<in> RelS_Eg1Eg2"   | c\<^sub>A :: "(Eg1.var, aexp, bexp) Stmt" and x :: "Eg1.var" and c\<^sub>A_then :: "(Eg1.var, aexp, bexp) Stmt" and c\<^sub>A_else :: "(Eg1.var, aexp, bexp) Stmt" and c\<^sub>A_tail :: "(Eg1.var, aexp, bexp) Stmt" and c\<^sub>C :: "(var\<^sub>C, aexp\<^sub>C, bexp\<^sub>C) Stmt" and c\<^sub>C_then :: "(var\<^sub>C, aexp\<^sub>C, bexp\<^sub>C) Stmt" and c\<^sub>C_else :: "(var\<^sub>C, aexp\<^sub>C, bexp\<^sub>C) Stmt" and c\<^sub>C_tail :: "(var\<^sub>C, aexp\<^sub>C, bexp\<^sub>C) Stmt" and mds\<^sub>A :: "Mode \<Rightarrow> Eg1.var set" and mds\<^sub>C :: "Mode \<Rightarrow> var\<^sub>C set" and mem\<^sub>A :: "Eg1.var \<Rightarrow> nat" and mem\<^sub>C :: "var\<^sub>C \<Rightarrow> nat" where "a1 = c\<^sub>A''''''__" and "a2 = mds\<^sub>A''''''__" and "a3 = mem\<^sub>A''''''__" and "a4 = c\<^sub>C''''''__" and "a5 = mds\<^sub>C''''''__" and "a6 = mem\<^sub>C''''''__" and "c\<^sub>A''''''__ = Stmt.If (bexp.Eq xe__ 0) c\<^sub>A_thena__ c\<^sub>A_elsea__ ;; c\<^sub>A_taild__" and "c\<^sub>C''''''__ = Stop ;; Stmt.If (bexp\<^sub>C.Eq reg\<^sub>C 0) c\<^sub>C_thena__ c\<^sub>C_elsea__ ;; c\<^sub>C_taild__" and "mds\<^sub>A''''''__ = mds\<^sub>A_of mds\<^sub>C''''''__" and "mem\<^sub>A''''''__ = mem\<^sub>A_of mem\<^sub>C''''''__" and "\<forall>v\<^sub>C. v\<^sub>C \<notin> range Eg2_var\<^sub>C_of_Eg1 \<longrightarrow> v\<^sub>C \<in> mds\<^sub>C''''''__ AsmNoReadOrWrite" and "xe__ \<in> mds\<^sub>A''''''__ AsmNoWrite \<and> xe__ \<notin> mds\<^sub>A''''''__ AsmNoReadOrWrite" and "ev\<^sub>B\<^sub>C mem\<^sub>C''''''__ (bexp\<^sub>C.Eq reg\<^sub>C 0) = ev\<^sub>B mem\<^sub>A''''''__ (bexp.Eq xe__ 0)" and "\<forall>mem\<^sub>A' mem\<^sub>C' mem\<^sub>A'' mem\<^sub>C''. mem\<^sub>A' = mem\<^sub>A_of mem\<^sub>C' \<and> mem\<^sub>A'' = mem\<^sub>A_of mem\<^sub>C'' \<and> mem\<^sub>A'' = mem\<^sub>A' \<and> ev\<^sub>B\<^sub>C mem\<^sub>C' (bexp\<^sub>C.Eq reg\<^sub>C 0) = ev\<^sub>B mem\<^sub>A' (bexp.Eq xe__ 0) \<and> ev\<^sub>B\<^sub>C mem\<^sub>C'' (bexp\<^sub>C.Eq reg\<^sub>C 0) = ev\<^sub>B mem\<^sub>A'' (bexp.Eq xe__ 0) \<and> eval_abv\<^sub>C \<langle>c\<^sub>C''''''__, mds\<^sub>C''''''__, mem\<^sub>C''\<rangle>\<^sub>C \<langle>Stmt.If (bexp\<^sub>C.Eq reg\<^sub>C 0) c\<^sub>C_thena__ c\<^sub>C_elsea__ ;; c\<^sub>C_taild__, mds\<^sub>C''''''__, mem\<^sub>C'\<rangle>\<^sub>C \<longrightarrow> (\<langle>c\<^sub>A''''''__, mds\<^sub>A''''''__, mem\<^sub>A''\<rangle>\<^sub>A, \<langle>Stmt.If (bexp\<^sub>C.Eq reg\<^sub>C 0) c\<^sub>C_thena__ c\<^sub>C_elsea__ ;; c\<^sub>C_taild__, mds\<^sub>C''''''__, mem\<^sub>C'\<rangle>\<^sub>C) \<in> RelS_Eg1Eg2"   | c\<^sub>A :: "(Eg1.var, aexp, bexp) Stmt" and x :: "Eg1.var" and c\<^sub>A_then :: "(Eg1.var, aexp, bexp) Stmt" and c\<^sub>A_else :: "(Eg1.var, aexp, bexp) Stmt" and c\<^sub>A_tail :: "(Eg1.var, aexp, bexp) Stmt" and c\<^sub>C :: "(var\<^sub>C, aexp\<^sub>C, bexp\<^sub>C) Stmt" and c\<^sub>C_then :: "(var\<^sub>C, aexp\<^sub>C, bexp\<^sub>C) Stmt" and c\<^sub>C_else :: "(var\<^sub>C, aexp\<^sub>C, bexp\<^sub>C) Stmt" and c\<^sub>C_tail :: "(var\<^sub>C, aexp\<^sub>C, bexp\<^sub>C) Stmt" and mds\<^sub>A :: "Mode \<Rightarrow> Eg1.var set" and mds\<^sub>C :: "Mode \<Rightarrow> var\<^sub>C set" and mem\<^sub>A :: "Eg1.var \<Rightarrow> nat" and mem\<^sub>C :: "var\<^sub>C \<Rightarrow> nat" where "a1 = c\<^sub>A'''''''__" and "a2 = mds\<^sub>A'''''''__" and "a3 = mem\<^sub>A'''''''__" and "a4 = c\<^sub>C'''''''__" and "a5 = mds\<^sub>C'''''''__" and "a6 = mem\<^sub>C'''''''__" and "c\<^sub>A'''''''__ = Stmt.If (bexp.Eq x 0) c\<^sub>A_then c\<^sub>A_else ;; c\<^sub>A_taile__" and "c\<^sub>C'''''''__ = Stmt.If (bexp\<^sub>C.Eq reg\<^sub>C 0) c\<^sub>C_then c\<^sub>C_else ;; c\<^sub>C_taile__" and "mds\<^sub>A'''''''__ = mds\<^sub>A_of mds\<^sub>C'''''''__" and "mem\<^sub>A'''''''__ = mem\<^sub>A_of mem\<^sub>C'''''''__" and "\<forall>v\<^sub>C. v\<^sub>C \<notin> range Eg2_var\<^sub>C_of_Eg1 \<longrightarrow> v\<^sub>C \<in> mds\<^sub>C'''''''__ AsmNoReadOrWrite" and "x \<in> mds\<^sub>A'''''''__ AsmNoWrite \<and> x \<notin> mds\<^sub>A'''''''__ AsmNoReadOrWrite" and "ev\<^sub>B\<^sub>C mem\<^sub>C'''''''__ (bexp\<^sub>C.Eq reg\<^sub>C 0) = ev\<^sub>B mem\<^sub>A'''''''__ (bexp.Eq x 0)" and "reg\<^sub>C \<notin> mds\<^sub>C'''''''__ GuarNoReadOrWrite" and "reg\<^sub>C \<notin> mds\<^sub>C'''''''__ GuarNoWrite" and "x \<notin> mds\<^sub>A'''''''__ GuarNoReadOrWrite" and "\<forall>x'. x \<in> \<C>_vars x' \<longrightarrow> x' \<notin> mds\<^sub>A'''''''__ GuarNoReadOrWrite" and "\<forall>mem\<^sub>A' mem\<^sub>C' mem\<^sub>A'' mem\<^sub>C''. mem\<^sub>A' = mem\<^sub>A_of mem\<^sub>C' \<and> mem\<^sub>A'' = mem\<^sub>A_of mem\<^sub>C'' \<and> ev\<^sub>B\<^sub>C mem\<^sub>C'' (bexp\<^sub>C.Eq reg\<^sub>C 0) = ev\<^sub>B mem\<^sub>A'' (bexp.Eq x 0) \<and> ev\<^sub>B\<^sub>C mem\<^sub>C' (bexp\<^sub>C.Eq reg\<^sub>C 0) = ev\<^sub>B mem\<^sub>A' (bexp.Eq x 0) \<and> eval_abv\<^sub>A \<langle>c\<^sub>A'''''''__, mds\<^sub>A'''''''__, mem\<^sub>A''\<rangle>\<^sub>A \<langle>(if ev\<^sub>B mem\<^sub>A'' (bexp.Eq x 0) then c\<^sub>A_then else c\<^sub>A_else) ;; c\<^sub>A_taile__, mds\<^sub>A'''''''__, mem\<^sub>A'\<rangle>\<^sub>A \<and> eval_abv\<^sub>C \<langle>c\<^sub>C'''''''__, mds\<^sub>C'''''''__, mem\<^sub>C''\<rangle>\<^sub>C \<langle>(if ev\<^sub>B\<^sub>C mem\<^sub>C'' (bexp\<^sub>C.Eq reg\<^sub>C 0) then c\<^sub>C_then else c\<^sub>C_else) ;; c\<^sub>C_taile__, mds\<^sub>C'''''''__, mem\<^sub>C'\<rangle>\<^sub>C \<longrightarrow> (\<langle>(if ev\<^sub>B mem\<^sub>A'' (bexp.Eq x 0) then c\<^sub>A_then else c\<^sub>A_else) ;; c\<^sub>A_taile__, mds\<^sub>A'''''''__, mem\<^sub>A'\<rangle>\<^sub>A, \<langle>(if ev\<^sub>B\<^sub>C mem\<^sub>C'' (bexp\<^sub>C.Eq reg\<^sub>C 0) then c\<^sub>C_then else c\<^sub>C_else) ;; c\<^sub>C_taile__, mds\<^sub>C'''''''__, mem\<^sub>C'\<rangle>\<^sub>C) \<in> RelS_Eg1Eg2" and "x \<noteq> buffer \<and> x \<noteq> high_var"   | c\<^sub>A :: "(Eg1.var, aexp, bexp) Stmt" and c\<^sub>A_tail :: "(Eg1.var, aexp, bexp) Stmt" and c\<^sub>C :: "(var\<^sub>C, aexp\<^sub>C, bexp\<^sub>C) Stmt" and c\<^sub>C_tail :: "(var\<^sub>C, aexp\<^sub>C, bexp\<^sub>C) Stmt" and mds\<^sub>A :: "Mode \<Rightarrow> Eg1.var set" and mds\<^sub>C :: "Mode \<Rightarrow> var\<^sub>C set" and mem\<^sub>A :: "Eg1.var \<Rightarrow> nat" and mem\<^sub>C :: "var\<^sub>C \<Rightarrow> nat" where "a1 = c\<^sub>A" and "a2 = mds\<^sub>A" and "a3 = mem\<^sub>A" and "a4 = c\<^sub>C" and "a5 = mds\<^sub>C''''''''__" and "a6 = mem\<^sub>C''''''''__" and "c\<^sub>A = Stop ;; c\<^sub>A_tail" and "c\<^sub>C = Stop ;; c\<^sub>C_tail" and "mds\<^sub>A = mds\<^sub>A_of mds\<^sub>C''''''''__" and "mem\<^sub>A = mem\<^sub>A_of mem\<^sub>C''''''''__" and "(\<langle>c\<^sub>A_tail, mds\<^sub>A, mem\<^sub>A\<rangle>\<^sub>A, \<langle>c\<^sub>C_tail, mds\<^sub>C''''''''__, mem\<^sub>C''''''''__\<rangle>\<^sub>C) \<in> RelS_Eg1Eg2"   | mds\<^sub>C :: "Mode \<Rightarrow> var\<^sub>C set" and mem\<^sub>C :: "var\<^sub>C \<Rightarrow> nat" where "a1 = Stop" and "a2 = mds\<^sub>A_of mds\<^sub>C" and "a3 = mem\<^sub>A_of mem\<^sub>C" and "a4 = Stop" and "a5 = mds\<^sub>C" and "a6 = mem\<^sub>C"