Program analysis and verification

  • Bernard Carré
Part of the Software Science and Engineering book series (SSEN)


Chapter 5 drew attention to the dangers in using “standard” programming languages and explained how, for a few of them at least, programming could be made more reliable by confining it to a sublanguage, and employing annotations (formal comments) to provide information not directly expressible in the standard language. The necessary connection between the annotations and the executable code was made by additional language rules, and conformance to those rules was checked at the same time as syntax and static semantics, by a tool similar to the “front end” of a compiler.


Finish Node Switch Statement Proof Obligation Symbolic Execution Verification Condition 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [Bergeretti/Carré 1985]
    Bergeretti, J. F. and Carré, B. A., “Information-flow and data-flow analysis of while-programs”, ACM Trans. on Prog. Lang. and Syst., 7, pp. 37–61 (1985).MATHCrossRefGoogle Scholar
  2. [Blikle/Mazurkiewicz 1972]
    Blikle, A. and Mazurkiewicz, A., “An algebraic approach to the theory of programs, algorithms, languages and recursiveness”, in Mathematical Foundations of Computer Science, Warsaw (1972).Google Scholar
  3. [Carré 1979]
    Carré, B. A., Graphs and Networks, Oxford University Press (1979).Google Scholar
  4. [Clutterbuck/Carré 1988]
    Clutterbuck, D. L. and Carré, B. A., “The verification of low-level code”, Software Engineering Journal, 3, pp. 97–111, IEE/BCS (1988).CrossRefGoogle Scholar
  5. [CEC 1987]
    Commission of the European Communities, The Draft Formal Definition of Ada, Dansk Datamatik Center (1987).Google Scholar
  6. [Farrow 1975]
    Farrow, R., Kennedy, K. and Zucconi, L., “Graph grammars and global program flow analysis”, Proc. 17th Annual IEEE Symp. on Foundations of Computer Science (1975).Google Scholar
  7. [Hecht 1977]
    Hecht, M. S., Flow Analysis of Computer Programs, North-Holland (1977).Google Scholar
  8. [Kennedy 1981]
    Kennedy, K., “A survey of data flow analysis techniques”, in Program Flow Analysis (Eds. Muchnick S. S. and Jones N. D.), Prentice Hall (1981).Google Scholar
  9. [King 1976]
    King, J., “Symbolic execution and program testing”, Comm. ACM., 19, pp. 385–394 (1976).MathSciNetMATHCrossRefGoogle Scholar
  10. [Manna 1974]
    Manna, Z., Mathematical Theory of Computation, McGraw Hill (1974).Google Scholar
  11. [Manna 1980]
    Manna, Z., Lectures on the Logic of Computer Programming, CBMS-NSF Regional Conference Series in Applied Maths. vol. 31, Society for Industrial and Applied Maths (1980).Google Scholar
  12. [O’Neill 1988]
    O’Neill, I. M., Clutterbuck, D. L., Farrow, P. F., Summers, P. G. and Dolman W. C., “The formal verification of safety-critical assembly code”, in Safety of Computer Control Systems 1988 (Ed. Ehrenberger, W. D.), IFAC Proceedings Series no. 16, pp. 115-120.Google Scholar

Copyright information

© Crown Copyright and Pitman Publishing 1989

Authors and Affiliations

  • Bernard Carré
    • 1
  1. 1.Program Validation LimitedUK

Personalised recommendations