cases: fixes a1 :: "'node SDG_node"   and a2 :: "'var option"   and a3 :: "('pname \<times> bool) option"   and a4 :: "bool"   and a5 :: "'node SDG_node" assumes "sum_SDG_edge a1 a2 a3 a4 a5" obtains n :: "'node SDG_node" and m :: "'node" and n' :: "'node SDG_node" and m' :: "'node" where "a1 = na__" and "a2 = None" and "a3 = None" and "a4 = False" and "a5 = n'a__" and "na__ = CFG_node m__" and "n'a__ = CFG_node m'" and "m__ controls m'"   | a :: "'edge" and Q :: "('var \<Rightarrow> 'val option) \<times> 'ret \<Rightarrow> bool" and r :: "'ret" and p :: "'pname" and fs :: "(('var \<Rightarrow> 'val option) \<Rightarrow> 'val option) list" and n :: "'node SDG_node" and a' :: "'edge" and n' :: "'node SDG_node" where "a1 = nb__" and "a2 = None" and "a3 = None" and "a4 = False" and "a5 = n'b__" and "valid_edge a__" and "kind a__ = Q__:r__\<hookrightarrow>\<^bsub>pa__\<^esub>fs__" and "nb__ = CFG_node (targetnode a__)" and "a'__ \<in> get_return_edges a__" and "n'b__ = CFG_node (sourcenode a'__)"   | n' :: "'node SDG_node" and m :: "'node" and n :: "'node SDG_node" where "a1 = nc__" and "a2 = None" and "a3 = None" and "a4 = False" and "a5 = n'c__" and "valid_SDG_node n'c__" and "m = parent_node n'c__" and "nc__ = CFG_node m" and "nc__ \<noteq> n'c__"   | n :: "'node SDG_node" and V :: "'var" and n' :: "'node SDG_node" where "a1 = nd__" and "a2 = Some Va__" and "a3 = None" and "a4 = False" and "a5 = n'd__" and "nd__ influences Va__ in n'd__"   | a :: "'edge" and Q :: "('var \<Rightarrow> 'val option) \<times> 'ret \<Rightarrow> bool" and r :: "'ret" and p :: "'pname" and fs :: "(('var \<Rightarrow> 'val option) \<Rightarrow> 'val option) list" and n :: "'node SDG_node" and n' :: "'node SDG_node" where "a1 = ne__" and "a2 = None" and "a3 = Some (pb__, True)" and "a4 = False" and "a5 = n'e__" and "valid_edge aa__" and "kind aa__ = Qa__:ra__\<hookrightarrow>\<^bsub>pb__\<^esub>fsa__" and "ne__ = CFG_node (sourcenode aa__)" and "n'e__ = CFG_node (targetnode aa__)"   | a :: "'edge" and Q :: "('var \<Rightarrow> 'val option) \<times> 'ret \<Rightarrow> bool" and p :: "'pname" and fs :: "('var \<Rightarrow> 'val option) \<Rightarrow> ('var \<Rightarrow> 'val option) \<Rightarrow> 'var \<Rightarrow> 'val option" and n :: "'node SDG_node" and n' :: "'node SDG_node" where "a1 = nf__" and "a2 = None" and "a3 = Some (pc__, False)" and "a4 = False" and "a5 = n'f__" and "valid_edge ab__" and "kind ab__ = Qb__\<hookleftarrow>\<^bsub>pc__\<^esub>fsb__" and "nf__ = CFG_node (sourcenode ab__)" and "n'f__ = CFG_node (targetnode ab__)"   | a :: "'edge" and Q :: "('var \<Rightarrow> 'val option) \<times> 'ret \<Rightarrow> bool" and r :: "'ret" and p :: "'pname" and fs :: "(('var \<Rightarrow> 'val option) \<Rightarrow> 'val option) list" and ins :: "'var list" and outs :: "'var list" and V :: "'var" and x :: "nat" and n :: "'node SDG_node" and n' :: "'node SDG_node" where "a1 = ng__" and "a2 = Some Vb__" and "a3 = Some (pd__, True)" and "a4 = False" and "a5 = n'g__" and "valid_edge ac__" and "kind ac__ = Qc__:rb__\<hookrightarrow>\<^bsub>pd__\<^esub>fsc__" and "(pd__, ins__, outs__) \<in> set procs" and "Vb__ = ins__ ! x__" and "x__ < length ins__" and "ng__ = Actual_in (sourcenode ac__, x__)" and "n'g__ = Formal_in (targetnode ac__, x__)"   | a :: "'edge" and Q :: "('var \<Rightarrow> 'val option) \<times> 'ret \<Rightarrow> bool" and p :: "'pname" and f :: "('var \<Rightarrow> 'val option) \<Rightarrow> ('var \<Rightarrow> 'val option) \<Rightarrow> 'var \<Rightarrow> 'val option" and ins :: "'var list" and outs :: "'var list" and V :: "'var" and x :: "nat" and n :: "'node SDG_node" and n' :: "'node SDG_node" where "a1 = nh__" and "a2 = Some V" and "a3 = Some (pe__, False)" and "a4 = False" and "a5 = n'h__" and "valid_edge ad__" and "kind ad__ = Qd__\<hookleftarrow>\<^bsub>pe__\<^esub>f" and "(pe__, insa__, outsa__) \<in> set procs" and "V = outsa__ ! xa__" and "xa__ < length outsa__" and "nh__ = Formal_out (sourcenode ad__, xa__)" and "n'h__ = Actual_out (targetnode ad__, xa__)"   | a :: "'edge" and Q :: "('var \<Rightarrow> 'val option) \<times> 'ret \<Rightarrow> bool" and r :: "'ret" and p :: "'pname" and fs :: "(('var \<Rightarrow> 'val option) \<Rightarrow> 'val option) list" and a' :: "'edge" and n :: "'node SDG_node" and n' :: "'node SDG_node" where "a1 = ni__" and "a2 = None" and "a3 = Some (pf__, True)" and "a4 = True" and "a5 = n'i__" and "valid_edge ae__" and "kind ae__ = Qe__:rc__\<hookrightarrow>\<^bsub>pf__\<^esub>fsd__" and "a'a__ \<in> get_return_edges ae__" and "ni__ = CFG_node (sourcenode ae__)" and "n'i__ = CFG_node (targetnode a'a__)"   | a :: "'edge" and Q :: "('var \<Rightarrow> 'val option) \<times> 'ret \<Rightarrow> bool" and r :: "'ret" and p :: "'pname" and fs :: "(('var \<Rightarrow> 'val option) \<Rightarrow> 'val option) list" and a' :: "'edge" and x :: "nat" and ns :: "'node SDG_node list" and x' :: "nat" and n :: "'node SDG_node" and n' :: "'node SDG_node" and ins :: "'var list" and outs :: "'var list" where "a1 = n" and "a2 = None" and "a3 = Some (p, True)" and "a4 = True" and "a5 = n'" and "valid_edge a" and "kind a = Q:r\<hookrightarrow>\<^bsub>p\<^esub>fs" and "a' \<in> get_return_edges a" and "matched (Formal_in (targetnode a, x)) ns (Formal_out (sourcenode a', x'))" and "n = Actual_in (sourcenode a, x)" and "n' = Actual_out (targetnode a', x')" and "(p, ins, outs) \<in> set procs" and "x < length ins" and "x' < length outs"