Theory SemanticsCFG

section ‹CFG and semantics conform›

theory SemanticsCFG imports CFG begin

locale CFG_semantics_wf = CFG sourcenode targetnode kind valid_edge Entry 
    get_proc get_return_edges procs Main
  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" +
  fixes sem::"'com  ('var  'val) list  'com  ('var  'val) list  bool" 
    ("((1_,/_) / (1_,/_))" [0,0,0,0] 81)
  fixes identifies::"'node  'com  bool" ("_  _" [51,0] 80)
  assumes fundamental_property:
    "n  c; c,[cf]  c',s' 
      n' as. n -as* n'  n'  c'  preds (kinds as) [(cf,undefined)] 
              transfers (kinds as) [(cf,undefined)] = cfs'  map fst cfs' = s'"


end