Theory Analysis_Render
theory Analysis_Render
imports Analysis_Run
begin
section ‹The analysis graph›
text ‹
The report's states are filed by point ∗‹and› context, so the graph a reader sees of
them has a node per such pair, where the CFG has one per point. A flow-insensitive
program global adds a node of its own. The edges are the dependencies the equations
have between those unknowns: a step within a context, a call entering the contexts
the report routes it to, the callee's result resuming the caller, the call's
continuation, and the reads and writes of each global, by the same footprints the
keyed lifter reads and publishes (\<^const>‹edge_global_reads›,
\<^const>‹edge_global_writes›, \<^const>‹call_global_reads›). It is a projection of the
report, as the rendering below is, and no soundness theorem reads it.
›
datatype unknown_node = Local_Node pp nat | Global_Node vname