Reliable programming in standard languages

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


The designers of programming languages are presented with many, often conflicting, requirements; support for high-integrity programming is only one of them. As an extreme example, in the case of C, aimed at convenience of use and efficiency for low-level systems programming, it is clear that formal verification was not a major preoccupation. The design of Ada was obviously more professional, but its expressive power and generality were only achieved at great cost in complexity; in consequence, it too suffers from many ambiguities and insecurities.


Coherence Encapsulation Clarification Aliasing 


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [Ambler 1977]
    Ambler, A. L. et al., “Gypsy: a language for specification and implementation of verifiable programs,” ACM SIGPLAN Notices, 12, No. 3, pp. 1–10 (1977).CrossRefGoogle Scholar
  2. [Andrews/Henhapl 1982]
    Andrews, D. and Henhapl, W., “Pascal,” in Formal Specification and Software Development (Eds. Bjorner, D. and Jones, C.), pp. 175-251, Prentice Hall.Google Scholar
  3. [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
  4. [BSI 1982]
    British Standards Institution, Specification for Computer Programming Language Pascal, BS 6192: 1982.Google Scholar
  5. [Bromell/Sadler 1987]
    Bromell, J. Y. and Sadler, S. J., “A strategy for the development of safety-critical systems,” in Achieving Safety and Reliability with Computer Systems (Ed. B. K. Daniels), pp. 1-13, Elsevier (1987).Google Scholar
  6. [Bundgaard/Schultz 1980]
    Bundgaard, J. and Schultz, L., “A denotational (static) semantics method for defining Ada context conditions,” in Towards a Formal Description of Ada, LNCS-98 (Eds. Bjorner D. and Oest O. N.), pp. 21-212, Springer Verlag (1980).Google Scholar
  7. [Carré/Debney 1985]
    Carré, B. A. and Debney, C. W., SPADE-PASCAL Manual, Program Validation Limited (1985).Google Scholar
  8. [Carré/Jennings 1988]
    Carré, B. A. and Jennings, T. J., SPARK—the SPADE Ada Kernel, Dept. of Electronics and Comp. Sci., University of Southampton (1988).Google Scholar
  9. [CEC 1987]
    Commission of the European Communities, The Draft Formal Definition of Ada, Dansk Datamatik Center (1987).Google Scholar
  10. [Craigen 1987]
    Craigen, D., A Description of m-Verdi, I. P. Sharp Technical Report TR-87-5420-02 (1987).Google Scholar
  11. [Cullyer/Goodenough 1987]
    Cullyer, W. J. and Goodenough, S. J., The choice of computer languages for use in safety-critical systems, RSRE Memorandum 3946 (1987).Google Scholar
  12. [Currie 1986]
    Currie, I. F., “NewSpeak—an unexceptional language,” Software Engineering Journal, 1, pp. 170–176, IEE/BCS (1986).CrossRefGoogle Scholar
  13. [De Millo 1979]
    De Millo, R. A., Lipton, R. J. and Perlis, A. J., “Social processes and proofs of theorems and programs”, Comm. ACM, 22, pp. 271–280 (1979).CrossRefGoogle Scholar
  14. [Feuer/Gehani 1982]
    Feuer, A. R. and Gehani, N. H., “A comparison of the programming languages C and Pascal”, ACM Computing Surveys, 14, pp. 73–92 (1982).MATHCrossRefGoogle Scholar
  15. [Hill 1987]
    Hill, A., The formal specification and verification of reusable software components using Ada with Asphodel, CEGB Report (1987).Google Scholar
  16. [Hoare/Wirth 1973]
    Hoare, C. A. R. and Wirth, N., “An axiomatic description of the programming language Pascal”, Acta Informatica, 2, pp. 335–355 (1973).CrossRefGoogle Scholar
  17. [Holzapfel/Winterstein 1988]
    Holzapfel, R. and Winterstein, G., “Ada in safety-critical applications,” Ada-Europe Conference, Munich 1988.Google Scholar
  18. [Jensen/Wirth 1974]
    Jensen, K. and Wirth, N., Pascal User Manual and Report, Springer Verlag (1974).Google Scholar
  19. [Lampson 1977]
    Lampson, B. W., Horning, J. J., London, R. L., Mitchell, J. G. and Popek, G. L., “Report on the programming language Euclid”, ACM SIGPLAN Notices, 12, No. 2 (1977).Google Scholar
  20. [Luckham 1987]
    Luckham D. C., von Henke F. W., Krieg-Brueckner B. and Owe O., ANNA—a Language for Annotating Ada Programs, LNCS-260, Springer Verlag (1987).Google Scholar
  21. [O’Neill 1988]
    O’Neill, I. M., Clutterbuck, D. L., Farrow, P. F., Summers, P. G. and Dolman W. G., “The formal verification of safety-critical assembly code,” Proceedings of SAFECOMP 88, IFAC/IFIP International Symposium on Safety-Related Computers, (Fulda, November 1988).Google Scholar
  22. [Pederson 1980]
    Pederson, J. S., “A formal semantics definition of sequential Ada,” in Towards a Formal Description of Ada, LNCS-98 (Eds. Bjorner D. and Oest O. N.), Springer-Verlag, pp. 213-308 (1980).Google Scholar
  23. [Tennent 1981]
    Tennent, R. D., Principles of Programming Languages, Prentice-Hall (1981).Google Scholar
  24. [Welsh/Hay 1986]
    Welsh, J. and Hay, A., A Model Implementation of Standard Pascal, Prentice Hall (1986).Google Scholar
  25. [Welsh/Sneeringer/Hoare 1977]
    Welsh, J., Sneeringer, W. J. and Hoare, C. A. R., “Ambiguities and insecurities in Pascal,” Software: Practice and Experience, 7, pp. 685–696 (1977).MATHCrossRefGoogle Scholar
  26. [Wichmann 1988a]
    Wichmann, B. A., “Notes on the security of programming languages,” in 10th Advances in Reliability Technology Symposium (Ed. Libberton G. P.), pp. 223-235, Elsevier (1988).Google Scholar
  27. [Wichmann 1988b]
    Wichmann, B. A., Insecurities in the Ada programming language: an interim report, NPL Report DITC 122/88 (1988).Google Scholar
  28. [Wichmann/Ciechanowicz 1983]
    Wichmann, B. A. and Ciechanowicz, Z. J. (Eds.), Pascal Compiler Validation, John Wiley (1983).Google Scholar

Copyright information

© Crown Copyright and Pitman Publishing 1989

Authors and Affiliations

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

Personalised recommendations