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 = n__" and "a2 = None" and "a3 = None" and "a4 = n'__" and "n__ = CFG_node m__" and "n'__ = 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 = na__" and "a2 = None" and "a3 = None" and "a4 = n'a__" and "valid_edge aa__" and "kind aa__ = Qa__:ra__\<hookrightarrow>\<^bsub>pa__\<^esub>fsa__" and "na__ = CFG_node (targetnode aa__)" and "a' \<in> get_return_edges aa__" and "n'a__ = CFG_node (sourcenode a')"   | n' :: "'node SDG_node" and m :: "'node" and n :: "'node SDG_node" where "a1 = nb__" and "a2 = None" and "a3 = None" and "a4 = n'b__" and "valid_SDG_node n'b__" and "m = parent_node n'b__" and "nb__ = CFG_node m" and "nb__ \<noteq> n'b__"   | n :: "'node SDG_node" and V :: "'var" and n' :: "'node SDG_node" where "a1 = nc__" and "a2 = Some Va__" and "a3 = None" and "a4 = n'c__" and "nc__ influences Va__ in n'c__"   | 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 = nd__" and "a2 = None" and "a3 = Some (pb__, True)" and "a4 = n'd__" and "valid_edge ab__" and "kind ab__ = Qb__:rb__\<hookrightarrow>\<^bsub>pb__\<^esub>fsb__" and "nd__ = CFG_node (sourcenode ab__)" and "n'd__ = CFG_node (targetnode ab__)"   | 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 = ne__" and "a2 = None" and "a3 = Some (pc__, False)" and "a4 = n'e__" and "valid_edge ac__" and "kind ac__ = Qc__\<hookleftarrow>\<^bsub>pc__\<^esub>f__" and "ne__ = CFG_node (sourcenode ac__)" and "n'e__ = CFG_node (targetnode ac__)"   | 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 = nf__" and "a2 = Some Vb__" and "a3 = Some (pd__, True)" and "a4 = n'f__" and "valid_edge ad__" and "kind ad__ = Qd__:r\<hookrightarrow>\<^bsub>pd__\<^esub>fs" and "(pd__, ins__, outs__) \<in> set procs" and "Vb__ = ins__ ! x__" and "x__ < length ins__" and "nf__ = Actual_in (sourcenode ad__, x__)" and "n'f__ = Formal_in (targetnode ad__, 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)"