Theory Flowgraph
section "Flowgraphs"
theory Flowgraph
imports Main Misc
begin
text_raw ‹\label{thy:Flowgraph}›
text ‹
We use a flowgraph-based program model that extends the one we used previously \<^cite>‹"LM07"›.
A program is represented as an edge annotated graph and a set of procedures. The nodes of the graph are partitioned by the procedures, i.e. every node belongs to exactly one procedure. There are no edges
between nodes of different procedures. Every procedure has a distinguished entry and return node and a set of monitors it synchronizes on. Additionally, the program has a distinguished {\em main} procedure.
The edges are annotated with statements. A statement is either a base statement, a procedure call or a thread creation (spawn). Procedure calls and thread creations refer to the called procedure or to the initial procedure
of the spawned thread, respectively.
We require that the main procedure and any initial procedure of a spawned thread does not to synchronize on any monitors. This avoids that spawning of a procedure together with entering a monitor is available in our
model as an atomic step, which would be an unrealistic assumption for practical problems. Technically, our model would become strictly more powerful without this assumption.
If we allowed this, our model would become strictly more powerful,
›
subsection "Definitions"