Theory CFGExit_wf

theory CFGExit_wf imports CFGExit CFG_wf begin

subsection ‹New well-formedness lemmas using (_Exit_)›

locale CFGExit_wf = CFGExit sourcenode targetnode kind valid_edge Entry 
    get_proc get_return_edges procs Main Exit +
  CFG_wf sourcenode targetnode kind valid_edge Entry 
    get_proc get_return_edges procs Main Def Use ParamDefs ParamUses
  for sourcenode :: "'edge  'node" and targetnode :: "'edge  'node"
  and kind :: "'edge  ('var,'val,'ret,'pname) edge_kind" 
  and valid_edge :: "'edge  bool"
  and Entry :: "'node" ('('_Entry'_'))  and get_proc :: "'node  'pname"
  and get_return_edges :: "'edge  'edge set"
  and procs :: "('pname × 'var list × 'var list) list" and Main :: "'pname"
  and Exit::"'node"  ('('_Exit'_')) 
  and Def :: "'node  'var set" and Use :: "'node  'var set"
  and ParamDefs :: "'node  'var list" 
  and ParamUses :: "'node  'var set list" +
  assumes Exit_empty:"Def (_Exit_) = {}  Use (_Exit_) = {}"

begin

lemma Exit_Use_empty [dest!]: "V  Use (_Exit_)  False"
by(simp add:Exit_empty)

lemma Exit_Def_empty [dest!]: "V  Def (_Exit_)  False"
by(simp add:Exit_empty)

end

end