Effectively Eliminating Auxiliaries

  • Stijn de Gouw
  • Jurriaan Rot
Part of the Lecture Notes in Computer Science book series (LNCS, volume 9660)


Auxiliary variables are used in the intermediate steps of a correctness proof to store additional information about the computation. We investigate for which classes of programs auxiliary variables can be avoided in the associated proof system, and give effective translations of proofs whenever this is the case.


Parallel Operator Auxiliary Variable Parallel Program Shared Variable Proof System 
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.


  1. 1.
    Apt, K.R.: Recursive assertions and parallel programs. Acta Inf. 15, 219–232 (1981)MathSciNetCrossRefMATHGoogle Scholar
  2. 2.
    Apt, K.R.: Ten years of Hoare’s logic: a survey - part 1. ACM Trans. Program. Lang. Syst. 3(4), 431–483 (1981)CrossRefMATHGoogle Scholar
  3. 3.
    Apt, K.R., Bergstra, J.A., Meertens, L.G.L.T.: Recursive assertions are not enough - or are they? Theor. Comput. Sci. 8, 73–87 (1979)MathSciNetCrossRefMATHGoogle Scholar
  4. 4.
    Apt, K.R., de Boer, F.S., Olderog, E.-R.: Verification of Sequential and Concurrent Programs. Texts in Computer Science. Springer, London (2009)CrossRefMATHGoogle Scholar
  5. 5.
    Burdy, L., Cheon, Y., Cok, D.R., Ernst, M.D., Kiniry, J.R., Leavens, G.T., Rustan, K., Leino, M., Poll, E.: An overview of JML tools and applications. STTT 7(3), 212–232 (2005)CrossRefGoogle Scholar
  6. 6.
    Clarke, E.M.: Proving correctness of coroutines without history variables. Acta Inf. 13, 169–188 (1980)MathSciNetCrossRefMATHGoogle Scholar
  7. 7.
    Clint, M.: Program proving: coroutines. Acta Inf. 2, 50–63 (1973)CrossRefGoogle Scholar
  8. 8.
    de Gouw, S., de Boer, F., Ahrendt, W., Bubel, R.: Weak arithmetic completeness of object-oriented first-order assertion networks. In: van Emde Boas, P., Groen, F.C.A., Italiano, G.F., Nawrocki, J., Sack, H. (eds.) SOFSEM 2013. LNCS, vol. 7741, pp. 207–219. Springer, Heidelberg (2013)CrossRefGoogle Scholar
  9. 9.
    de Gouw, S., de Boer, F.S., Rot, J.: Proof pearl: the KeY to correct and stable sorting. J. Autom. Reasoning 53(2), 129–139 (2014)MathSciNetCrossRefMATHGoogle Scholar
  10. 10.
    Hoare, C.A.R.: An axiomatic basis for computer programming. Commun. ACM 12(10), 576–580 (1969)CrossRefMATHGoogle Scholar
  11. 11.
    Hoare, C.A.R.: Towards a theory of parallel programming. In: Hoare, C.A.R., Perrott, R.H. (eds.) Operating System Techniques, pp. 61–71. Academic Press, New York (1972)Google Scholar
  12. 12.
    Hofmann, M., Pavlova, M.: Elimination of ghost variables in program logics. In: Barthe, G., Fournet, C. (eds.) TGC 2007. LNCS, vol. 4912, pp. 1–20. Springer, Heidelberg (2008)CrossRefGoogle Scholar
  13. 13.
    Howard, J.H.: Proving monitors. Commun. ACM 19(5), 273–279 (1976)CrossRefMATHGoogle Scholar
  14. 14.
    Kleymann, T.: Hoare logic and auxiliary variables. Technical report ECS-LFCS-98-399, Laboratory for Foundations of Computer Science, University of Edinburgh (1998)Google Scholar
  15. 15.
    Kleymann, T.: Hoare logic and auxiliary variables. Formal Aspects Comput. 11(5), 541–566 (1999)CrossRefMATHGoogle Scholar
  16. 16.
    Lamport, L.: Proving the correctness of multiprocess programs. IEEE Trans. Softw. Eng. 3(2), 125–143 (1977)MathSciNetCrossRefMATHGoogle Scholar
  17. 17.
    Nipkow, T.: Hoare logics for recursive procedures and unbounded nondeterminism. In: Bradfield, J.C. (ed.) CSL 2002. LNCS, vol. 2471, pp. 103–119. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  18. 18.
    Olderog, E.-R.: On the notion of expressiveness and the rule of adaption. Theor. Comput. Sci. 24, 337–347 (1983)MathSciNetCrossRefMATHGoogle Scholar
  19. 19.
    Owicki, S.S.: Axiomatic Proof Techniques for Parallel Programs. Outstanding Dissertations in the Computer Sciences. Garland Publishing, New York (1975)Google Scholar
  20. 20.
    Owicki, S.S., Gries, D.: An axiomatic proof technique for parallel programs I. Acta Inf. 6, 319–340 (1976)MathSciNetCrossRefMATHGoogle Scholar
  21. 21.
    Reynolds, J.C.: Separation logic: a logic for shared mutable data structures. In: 17th IEEE Symposium on Logic in Computer Science (LICS 2002), Proceedings, pp. 55–74 (2002)Google Scholar

Copyright information

© Springer International Publishing Switzerland 2016

Authors and Affiliations

  1. 1.CWIAmsterdamThe Netherlands
  2. 2.SDLAmsterdamThe Netherlands
  3. 3.LIP, Université de Lyon, CNRS, Ecole Normale Supérieure de Lyon, INRIA, Université Claude-Bernard Lyon 1LyonFrance

Personalised recommendations