cases: fixes a1 :: "cmd"   and a2 :: "w_node"   and a3 :: "(char list \<Rightarrow> val option) edge_kind"   and a4 :: "w_node" assumes "a1 \<turnstile> a2 -a3\<rightarrow> a4" obtains prog :: "cmd" where "a1 = proga__" and "a2 = (_Entry_)" and "a3 = (\<lambda>s. False)\<^sub>\<surd>" and "a4 = (_Exit_)"   | prog :: "cmd" where "a1 = prog" and "a2 = (_Entry_)" and "a3 = (\<lambda>s. True)\<^sub>\<surd>" and "a4 = (_ 0 _)"   | "a1 = Skip" and "a2 = (_ 0 _)" and "a3 = \<Up>id" and "a4 = (_Exit_)"   | V :: "char list" and e :: "expr" where "a1 = V__:=e__" and "a2 = (_ 0 _)" and "a3 = \<Up>\<lambda>s. s(V__ := interpret e__ s)" and "a4 = (_ 1 _)"   | V :: "char list" and e :: "expr" where "a1 = V:=e" and "a2 = (_ 1 _)" and "a3 = \<Up>id" and "a4 = (_Exit_)"   | c\<^sub>1 :: "cmd" and n :: "w_node" and et :: "(char list \<Rightarrow> val option) edge_kind" and n' :: "w_node" and c\<^sub>2 :: "cmd" where "a1 = c\<^sub>1__;; c\<^sub>2__" and "a2 = na__" and "a3 = et__" and "a4 = n'__" and "c\<^sub>1__ \<turnstile> na__ -et__\<rightarrow> n'__" and "n'__ \<noteq> (_Exit_)"   | c\<^sub>1 :: "cmd" and n :: "w_node" and et :: "(char list \<Rightarrow> val option) edge_kind" and c\<^sub>2 :: "cmd" where "a1 = c\<^sub>1'__;; c\<^sub>2'__" and "a2 = nb__" and "a3 = eta__" and "a4 = (_ 0 _) \<oplus> #:c\<^sub>1'__" and "c\<^sub>1'__ \<turnstile> nb__ -eta__\<rightarrow> (_Exit_)" and "nb__ \<noteq> (_Entry_)"   | c\<^sub>2 :: "cmd" and n :: "w_node" and et :: "(char list \<Rightarrow> val option) edge_kind" and n' :: "w_node" and c\<^sub>1 :: "cmd" where "a1 = c\<^sub>1''__;; c\<^sub>2''__" and "a2 = nc__ \<oplus> #:c\<^sub>1''__" and "a3 = etb__" and "a4 = n'a__ \<oplus> #:c\<^sub>1''__" and "c\<^sub>2''__ \<turnstile> nc__ -etb__\<rightarrow> n'a__" and "nc__ \<noteq> (_Entry_)"   | b :: "expr" and c\<^sub>1 :: "cmd" and c\<^sub>2 :: "cmd" where "a1 = if (b__) c\<^sub>1'''__ else c\<^sub>2'''__" and "a2 = (_ 0 _)" and "a3 = (\<lambda>s. interpret b__ s = Some true)\<^sub>\<surd>" and "a4 = (_ 0 _) \<oplus> 1"   | b :: "expr" and c\<^sub>1 :: "cmd" and c\<^sub>2 :: "cmd" where "a1 = if (ba__) c\<^sub>1''''__ else c\<^sub>2''''__" and "a2 = (_ 0 _)" and "a3 = (\<lambda>s. interpret ba__ s = Some false)\<^sub>\<surd>" and "a4 = (_ 0 _) \<oplus> #:c\<^sub>1''''__ + 1"   | c\<^sub>1 :: "cmd" and n :: "w_node" and et :: "(char list \<Rightarrow> val option) edge_kind" and n' :: "w_node" and b :: "expr" and c\<^sub>2 :: "cmd" where "a1 = if (bb__) c\<^sub>1'''''__ else c\<^sub>2'''''__" and "a2 = nd__ \<oplus> 1" and "a3 = etc__" and "a4 = n'b__ \<oplus> 1" and "c\<^sub>1'''''__ \<turnstile> nd__ -etc__\<rightarrow> n'b__" and "nd__ \<noteq> (_Entry_)"   | c\<^sub>2 :: "cmd" and n :: "w_node" and et :: "(char list \<Rightarrow> val option) edge_kind" and n' :: "w_node" and b :: "expr" and c\<^sub>1 :: "cmd" where "a1 = if (bc__) c\<^sub>1 else c\<^sub>2" and "a2 = ne__ \<oplus> #:c\<^sub>1 + 1" and "a3 = etd__" and "a4 = n'c__ \<oplus> #:c\<^sub>1 + 1" and "c\<^sub>2 \<turnstile> ne__ -etd__\<rightarrow> n'c__" and "ne__ \<noteq> (_Entry_)"   | b :: "expr" and c' :: "cmd" where "a1 = while (bd__) c'__" and "a2 = (_ 0 _)" and "a3 = (\<lambda>s. interpret bd__ s = Some true)\<^sub>\<surd>" and "a4 = (_ 0 _) \<oplus> 2"   | b :: "expr" and c' :: "cmd" where "a1 = while (be__) c'a__" and "a2 = (_ 0 _)" and "a3 = (\<lambda>s. interpret be__ s = Some false)\<^sub>\<surd>" and "a4 = (_ 1 _)"   | b :: "expr" and c' :: "cmd" where "a1 = while (bf__) c'b__" and "a2 = (_ 1 _)" and "a3 = \<Up>id" and "a4 = (_Exit_)"   | c' :: "cmd" and n :: "w_node" and et :: "(char list \<Rightarrow> val option) edge_kind" and n' :: "w_node" and b :: "expr" where "a1 = while (bg__) c'c__" and "a2 = nf__ \<oplus> 2" and "a3 = ete__" and "a4 = n' \<oplus> 2" and "c'c__ \<turnstile> nf__ -ete__\<rightarrow> n'" and "nf__ \<noteq> (_Entry_)" and "n' \<noteq> (_Exit_)"   | c' :: "cmd" and n :: "w_node" and et :: "(char list \<Rightarrow> val option) edge_kind" and b :: "expr" where "a1 = while (b) c'" and "a2 = n \<oplus> 2" and "a3 = et" and "a4 = (_ 0 _)" and "c' \<turnstile> n -et\<rightarrow> (_Exit_)" and "n \<noteq> (_Entry_)"