cases: fixes prog :: "cmd"   and procs :: "(char list \<times> char list list \<times> char list list \<times> cmd) list"   and a1 :: "char list \<times> label"   and a2 :: "(char list, val, char list \<times> label, char list) edge_kind"   and a3 :: "char list \<times> label" assumes "prog,procs \<turnstile> a1 -a2\<rightarrow> a3" obtains n :: "label" and et :: "(char list, val, char list \<times> label, char list) edge_kind" and n' :: "label" where "a1 = (Main, n__)" and "a2 = et__" and "a3 = (Main, n'__)" and "prog \<turnstile> n__ -IEdge et__\<rightarrow>\<^sub>p n'__"   | p :: "char list" and ins :: "char list list" and outs :: "char list list" and c :: "cmd" and n :: "label" and et :: "(char list, val, char list \<times> label, char list) edge_kind" and n' :: "label" and ps :: "char list list" where "a1 = (pa__, na__)" and "a2 = et" and "a3 = (pa__, n'a__)" and "(pa__, insa__, outsa__, ca__) \<in> set procs" and "ca__ \<turnstile> na__ -IEdge et\<rightarrow>\<^sub>p n'a__" and "containsCall procs prog psa__ pa__"   | l :: "nat" and p :: "char list" and es :: "expr list" and rets :: "char list list" and n' :: "label" and ins :: "char list list" and outs :: "char list list" and c :: "cmd" where "a1 = (Main, Label l__)" and "a2 = \<lambda>s. True:(Main, n'b__)\<hookrightarrow>\<^bsub>pb__\<^esub>map interpret es__" and "a3 = (pb__, Entry)" and "prog \<turnstile> Label l__ -CEdge (pb__, es__, rets__)\<rightarrow>\<^sub>p n'b__" and "(pb__, insb__, outsb__, cb__) \<in> set procs"   | p :: "char list" and ins :: "char list list" and outs :: "char list list" and c :: "cmd" and l :: "nat" and p' :: "char list" and es' :: "expr list" and rets' :: "char list list" and l' :: "nat" and ins' :: "char list list" and outs' :: "char list list" and c' :: "cmd" and ps :: "char list list" where "a1 = (pc__, Label la__)" and "a2 = \<lambda>s. True:(pc__, Label l'__)\<hookrightarrow>\<^bsub>p'__\<^esub>map interpret es'__" and "a3 = (p'__, Entry)" and "(pc__, insc__, outsc__, cc__) \<in> set procs" and "cc__ \<turnstile> Label la__ -CEdge (p'__, es'__, rets'__)\<rightarrow>\<^sub>p Label l'__" and "(p'__, ins'__, outs'__, c'__) \<in> set procs" and "containsCall procs prog psb__ pc__"   | l :: "nat" and p :: "char list" and es :: "expr list" and rets :: "char list list" and l' :: "nat" and ins :: "char list list" and outs :: "char list list" and c :: "cmd" where "a1 = (pd__, Exit)" and "a2 = \<lambda>cf. snd cf = (Main, Label l'a__)\<hookleftarrow>\<^bsub>pd__\<^esub>\<lambda>cf cf'. cf'(retsa__ [:=] map cf outsd__)" and "a3 = (Main, Label l'a__)" and "prog \<turnstile> Label lb__ -CEdge (pd__, esa__, retsa__)\<rightarrow>\<^sub>p Label l'a__" and "(pd__, insd__, outsd__, cd__) \<in> set procs"   | p :: "char list" and ins :: "char list list" and outs :: "char list list" and c :: "cmd" and l :: "nat" and p' :: "char list" and es' :: "expr list" and rets' :: "char list list" and l' :: "nat" and ins' :: "char list list" and outs' :: "char list list" and c' :: "cmd" and ps :: "char list list" where "a1 = (p'a__, Exit)" and "a2 = \<lambda>cf. snd cf = (pe__, Label l')\<hookleftarrow>\<^bsub>p'a__\<^esub>\<lambda>cf cf'. cf'(rets'a__ [:=] map cf outs')" and "a3 = (pe__, Label l')" and "(pe__, inse__, outse__, ce__) \<in> set procs" and "ce__ \<turnstile> Label l -CEdge (p'a__, es'a__, rets'a__)\<rightarrow>\<^sub>p Label l'" and "(p'a__, ins', outs', c') \<in> set procs" and "containsCall procs prog psc__ pe__"   | n :: "label" and p :: "char list" and es :: "expr list" and rets :: "char list list" and n' :: "label" where "a1 = (Main, nb__)" and "a2 = (\<lambda>s. False)\<^sub>\<surd>" and "a3 = (Main, n'c__)" and "prog \<turnstile> nb__ -CEdge (pf__, es, rets)\<rightarrow>\<^sub>p n'c__"   | p :: "char list" and ins :: "char list list" and outs :: "char list list" and c :: "cmd" and n :: "label" and p' :: "char list" and es' :: "expr list" and rets' :: "char list list" and n' :: "label" and ps :: "char list list" where "a1 = (p, n)" and "a2 = (\<lambda>s. False)\<^sub>\<surd>" and "a3 = (p, n')" and "(p, ins, outs, c) \<in> set procs" and "c \<turnstile> n -CEdge (p', es', rets')\<rightarrow>\<^sub>p n'" and "containsCall procs prog ps p"