cases: fixes a1 :: "'node SDG_node"   and a2 :: "'var option"   and a3 :: "('pname \<times> bool) option"   and a4 :: "'node SDG_node" assumes "SDG_edge a1 a2 a3 a4" 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 = 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 = n'b__" and "valid_edge a__" and "kind a__ = Q__:r__\<hookrightarrow>\<^bsub>p__\<^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 = 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 V__" and "a3 = None" and "a4 = n'd__" and "nd__ influences V__ 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 (pa__, True)" and "a4 = n'e__" and "valid_edge aa__" and "kind aa__ = Qa__:ra__\<hookrightarrow>\<^bsub>pa__\<^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 f :: "('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 (pb__, False)" and "a4 = n'f__" and "valid_edge ab__" and "kind ab__ = Qb__\<hookleftarrow>\<^bsub>pb__\<^esub>f__" 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 Va__" and "a3 = Some (pc__, True)" and "a4 = n'g__" and "valid_edge ac__" and "kind ac__ = Qc__:r\<hookrightarrow>\<^bsub>pc__\<^esub>fs" and "(pc__, ins__, outs__) \<in> set procs" and "Va__ = 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 = n" and "a2 = Some V" and "a3 = Some (p, False)" and "a4 = n'" and "valid_edge a" and "kind a = Q\<hookleftarrow>\<^bsub>p\<^esub>f" and "(p, ins, outs) \<in> set procs" and "V = outs ! x" and "x < length outs" and "n = Formal_out (sourcenode a, x)" and "n' = Actual_out (targetnode a, x)"