  Techniques for runtime verification often utilise specification languages
that are (i) reasonably expressive, and (ii) relatively abstract (i.e. they
operate on a level of abstraction that separates them from the system being
monitored). Inspired by the problem of monitoring systems involved in
processing data generated by the high energy physics experiments at CERN, this
report proposes a specification language, Control Flow Temporal Logic (CFTL),
whose distinguishing characteristic is its tight coupling with the control flow
of the programs for which it is used to write specifications. This coupling
leads to a departure from the typically high level of abstraction used by most
temporal logics. The remaining contributions are a static-analysis based
instrumentation process, which is specific to CFTL and its formulas' structure,
and a monitoring algorithm. The report concludes with analyses of CFTL and its
monitoring algorithm when applied to a number of example programs.
