Zusammenfassung
Ausgehend von Turings 1949 gehaltenem Vortrag ,,Checking a Large Routine“ untersuchen wir, welche seiner Ideen zur Verifikation von Programmen sich durchgesetzt haben, und skizzieren, wie sich das Gebiet der Verifikation seitdem bis heute weiterentwickelt hat.
References
Abrial JR, Hallerstede S (2007) Refinement, decomposition and instantiation of discrete models: Application to Event-B. Fundam Informaticae 77(1–2):1–28
Alkassar E, Böhme S, Mehlhorn K, Rizkallah C (2011) Verification of certifying computations. In: Gopalakrishnan G, Qadeer S (eds) Computer Aided Verification, volume 6806 of Lecture Notes in Computer Science, Springer, pp 67–82
Alkassar E, Hillebrand MA, Leinenbach D, Schirmer NW, Starostin A (2008) The Verisoft approach to systems verification. In: Shankar N, Woodcock J (eds) Verified Software: Theories, Tools, Experiments (VSTTE), vol 5295 of Lecture Notes in Computer Science, Springer, pp 209–224
Apt KR, de Boer FS, Olderog ER (2009) Verification of Sequential and Concurrent Programs, 3rd, extended edn. Springer
Apt KR, Francez N, de Roever WP (1980) A proof system for communicating sequential processes. ACM Trans Prog Lang Syst 2(3):359–385
Backhouse RC (1986) Program Construction and Verification. Prentice-Hall International, Englewood Cliffs, NJ
Baier C, Katoen JP (2008) Principles of Model Checking. MIT Press
Balser M, Reif W, Schellhorn G, Stenzel K, Thums A (2000) Formal system development in KIV. In: Maibaum T (ed) Proc. Fundamental Approaches to Software Engineering, vol 1783 of Lecture Notes in Computer Science, Springer, pp 363–366
Becker B, Podelski A, Damm W, Fränzle M, Olderog ER, Wilhelm R (2007) SFB/TR 14 AVACS – Automatic Verification and Analysis of Complex Systems. it – Information Technology 49(2):118–126
Beckert B, Hähnle R, Schmitt PH (eds) (2007) Verification of Object-Oriented Software: The KeY Approach, vol 4334 of Lecture Notes in Computer Science. Springer
Bertot Y, Castéran P (2004) Interactive Theorem Proving and Program Development: Coq’Art: The Calculus of Inductive Constructions. Springer
Blanchet B, Cousot P, Cousot R, Feret J, Mauborgne L, Miné A, Monniaux D, Rival X (2003) A static analyzer for large safety-critical software. In: PLDI. ACM, pp 196–207
Brockschmidt M, Otto C, Giesl J (2011) Modular termination proofs of recursive Java bytecode programs by term rewriting. In: Schmidt-Schauß M (ed) RTA, vol 10 of LIPIcs. Schloss Dagstuhl – Leibniz-Zentrum fuer Informatik, pp 155–170
Büchi J, Landweber L (1969) Solving sequential conditions by finite-state strategies. Trans Amer Math Society 138:367–378
Church A (1957) Applications of recursive arithmetic to the problem of circuit synthesis. In: Summaries of the Summer Institute of Symbolic Logic, vol 1. Cornell Univ, Ithaca, NY, pp 3–50
Clarke EM (1979) Programming language constructs for which it is impossible to obtain good Hoare axiom systems. J ACM 26(1):129–147
Clarke EM, Emerson EA, Sifakis J (2009) Model checking: algorithmic verification and debugging. Commun ACM 52(11):74–84
Clarke EM, Grumberg O, Hiraishi H, Jha S, Long DE, McMillan KL, Ness LA (1993) Verification of the Futurebus+ cache coherence protocol. In: Agnew D, Claesen LJM, Camposano R (eds) Proc. 11th IFIP WG 10.2 Intern. Conf. on Computer Hardware Description Languages and their Applications (CHDL), vol A-32 of IFIP Transactions. North-Holland, pp 15–30
Clarke EM, Grumberg O, Peled DA (1999) Model Checking. MIT Press
Cook B, Podelski A, Rybalchenko A (2011) Proving program termination. Commun ACM 54(5):88–98
Cousot P, Cousot R (1977) Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints. In: POPL, pp 238–252
Cousot P, Cousot R (2012) An abstract interpretation framework for termination. In: Field J, Hicks M (eds) POPL. ACM, pp 245–258
Damm W, Josko B (1983) A sound and relatively omplete Hoare-logic for a language with higher type procedures. Acta Inf 20:59–101
de Bakker JW (1975) Inleiding bewijsmethoden. In: Colloquium Programmcorrectheid, MC Syllabus 21. Mathematisch Centrum, Amsterdam, pp 3–17
de Boer FS (1991) A proof system for the language POOL. In: de Bakker JW, de Roever WP, Rozenberg G (eds) Foundations of Object-Oriented Languages, vol 489 of Lecture Notes in Computer Science. Springer, pp 124–150
de Roever WP, de Boer FS, Hannemann U, Hooman J, Lakhnech Y, Poel M, Zwiers J (2001) Concurrency Verification – Introduction to Compositional and Noncompositional Methods. Cambridge University Press
Dijkstra EW (1976) A Discipline of Programming. Prentice-Hall
Dräger K, Kupriyanov A, Finkbeiner B, Wehrheim H (2010) SLAB: A certifying model checker for infinite-state concurrent systems. In: Esparza J, Majumdar R (eds) Tools and Algorithms for the Construction and Analysis of Systems (TACAS), vol 6015 of Lecture Notes in Computer Science. Springer, pp 271–274
Emerson EA, Clarke EM (1982) Using branching time temporal logic to synthesize synchronization skeletons. Sci Comput Programming 2(3):241–266
Feijen WHJ, van Gasteren AJM (1999) On a Method of Multiprogramming. Springer, New York
Ferdinand C, Heckmann R, Langenbach M, Martin F, Schmidt M, Theiling H, Thesing S, Wilhelm R (2001) Reliable and precise WCET determination for a real-life processor. In: Henzinger TA, Kirsch CM (eds) EMSOFT, vol 2211 of Lecture Notes in Computer Science. Springer, pp 469–485
Finkbeiner B, Schewe S (2005) Uniform distributed synthesis. In: Proc. LICS. IEEE Computer Society Press, pp 321–330
Floyd RW (1967) Assigning meaning to programs. In: Schwartz JT (ed) Proc. Symposium on Applied Mathematics 19, Mathematical Aspects of Computer Science, American Mathematical Society, New York, pp 19–32
Giesl J, Thiemann R, Schneider-Kamp P, Falke S (2004) Automated termination proofs with AProVE. In: van Oostrom V (ed) RTA, vol 3091 of Lecture Notes in Computer Science. Springer, pp 210–220
Gorn S (1967) Handling the growth by definition of mechanical languages. In: Proceedings of the 1967 Spring Joint Computer Conference, pp 213–224
Gries D (1981) The Science of Programming. Springer, New York
Grumberg O, Veith H (eds) (2008) 25 Years of Model Checking – History, Achievements, Perspectives, vol 5000 of Lecture Notes in Computer Science. Springer
Halbwachs N (1998) Synchronous programming of reactive systems. In: Hu AJ, Vardi MY (eds) CAV, vol 1427 of Lecture Notes in Computer Science. Springer, pp 1–16
Harel D, Kozen D, Tiuryn J (2000) Dynamic logic. MIT Press
Havelund K, Roşu G (2004) An overview of the runetime verification tool Java PathExplorer. Formal Methods Syst Des 24:189–2004
Hoare CAR (1969) An axiomatic basis for computer programming. Commun ACM 12:576–580, 583
Hoare CAR (1971) Procedures and parameters: an axiomatic approach. In: Engeler E (ed) Proceedings of Symposium on the Semantics of Algorithmic Languages, vol 188 of Lecture Notes in Mathematics. Springer, pp 102–116
Ihlemann C, Sofronie-Stokkermans V (2010) On hierarchical reasoning in combinations of theories. In: Giesl J, Hähnle R (eds) International Joint Conference on Automated Reasoning (IJCAR), vol 6173 of Lecture Notes in Artificial Intelligence. Springer, pp 30–45
Klein G, Andronick J, Elphinstone K, Heiser G, Cock D, Derrin P, Elkaduwe D, Engelhardt K, Kolanski R, Norrish M, Sewell T, Tuch H, Winwood S (2010) sel4: formal verification of an operating-system kernel. Commun ACM 53(6):107–115
Kreiker J, Tarlecki A, Vardi MY, Wilhelm R (2011) Modeling, analysis, and verification – the formal methods manifesto 2010 (Dagstuhl Perspectives Workshop 10482). Dagstuhl Manifestos 1(1):21–40
Kupferman O, Vardi MY (2001) Synthesizing distributed systems. In: Proc. LICS. IEEE Computer Society Press, pp 389–398
Lamport L (1977) Proving the correctness of multiprocess programs. IEEE Trans Softw Eng SE-3:2:125–143
Langmaack H, Olderog ER (1980) Present-day Hoare-like systems for programming languages with procedures: power, limits and most likely extensions. In: de Bakker JW, van Leeuwen J (eds) Automata, Languages and Programming, Proc 7th ICALP, vol 85 of Lecture Notes in Computer Science. Springer, pp 363–373
Leavens GT, Cheon Y, Clifton C, Ruby C, Cok DR (2005) How the design of JML accomodates both runtime assertion checking and formal verification. Sci Comput Prog 55:185–208
Lee CS, Jones ND, Ben-Amram AM (2001) The size-change principle for program termination. In: POPL, pp 81–92
Leroy X (2009) Formal verification of a realistic compiler. Commun ACM 52(7):107–115
Levin G, Gries D (1981) A proof technique for communicating sequential processes. Acta Inf 15:281–302
Lowe G (1996) Breaking and fixing the Needham-Schroeder public-key protocol using FDR. Softw Concepts Tools 17(3):93–102
Manna Z, Pnueli A (1991) The Temporal Logic of Reactive and Concurrent Systems – Specification. Springer, New York
Manna Z, Pnueli A (1995) Temporal Verification of Reactive Systems – Safety. Springer, New York
McConnell RM, Mehlhorn K, Näher S, Schweitzer P (2011) Certifying algorithms. Comput Sci Rev 5(2):119–161
Meyer B (1997) Object-Oriented Software Construction, 2nd edn. Prentice Hall
Misra J (2001) A Discipline of Multiprogramming: Programming Theory for Distributed Applications. Springer, New York
Morgan C (1994) Programming from Specifications, 2nd edn. Prentice-Hall International, London
Morris FL, Jones CB (1984) An early program proof by Alan Turing. Ann Hist Comput 6:139–143
Nicolescu G, Mosterman P (2009) Model-Based Design for Embedded Systems (Computational Analysis, Synthesis, and Design of Dynamic Systems). CRC Press
Nipkow T, Paulson LC, Wenzel M (2002) Isabelle/HOL – A Proof Assistant for Higher-Order Logic, vol 2283 of Lecture Notes in Computer Science. Springer
Olderog ER (1981) Sound and complete Hoare-like calculi based on copy rules. Acta Inf 16:161–197
Olderog ER (1983) A characterization of Hoare’s logic for programs with Pascal-like procedures. In: Proc. 15th ACM Symp. on Theory of Computing (STOC). ACM, pp 320–329
Owicki S, Gries D (1976) An axiomatic proof technique for parallel programs. Acta Inf 6:319–340
Owre S, Shankar N. Writing PVS proof strategies. In: Archer M, Vito BD, Muñoz C (eds) Design and Application of Strategies/Tactics in Higher Order Logics (STRATA 2003), number CP-2003-212448 in NASA Conference Publication, Hampton, VA, Sept. 2003. NASA Langley Research Center, pp 1–15
Pnueli A (1977) The temporal logic of programs. In: Proc. 18th IEEE Symposium on Foundations of Computer Science, pp 46–57
Pnueli A, Rosner R (1990) Distributed reactive systems are hard to synthesize. In: Proc. FOCS. IEEE Computer Society Press, pp 746–757
Podelski A, Rybalchenko A (2004) Transition invariants. In: 19th IEEE Symp. on Logic in Computer Science (LICS). IEEE Computer Society, pp 32–41
Queille JP, Sifakis J (1981) Specification and verification of concurrent systems in CESAR. In: Proceedings of the 5th International Symposium on Programming, Paris
Rabin M (1972) Automata on infinite objects and Church’s problem. Trans. Amer. Math. Society, Providence RI
Sagiv M, Reps TW, Wilhelm R (2002) Parametric shape analysis via 3-valued logic. ACM Trans Program Lang Syst 24(3):217–298
Schneider-Kamp P, Giesl J, Serebrenik A, Thiemann R (2009) Automated termination proofs for logic programs by term rewriting. ACM Trans Comput Log 11(1):2:1–2:52
Seidl H, Wilhelm R, Hack S (2010) Übersetzerbau: Analyse und Transformation. Springer
Spivey JM (1992) The Z Notation: A Reference Manual, 2nd edn. Prentice Hall
Stephan W, Langenstein B, Nonnengart A, Rock G (2005) Verification support environment. In: Hutter D, Stephan W (eds) Mechanizing Mathematical Reasoning, vol 2605 of Lecture Notes in Computer Science. Springer, pp 476–493
Thomas W (2009) Facets of synthesis: Revisiting Church’s problem. In: de Alfaro L (ed) Foundations of Software Science and Computational Structures (FOSSACS), vol 5504 of Lecture Notes in Computer Science. Springer, pp 1–14
Turing AM (1949) On checking a large routine. In: Report of a Conference on High Speed Automatic Calculating Machines, Univ. Math. Lab., Cambridge, pp 67–69
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Olderog, ER., Wilhelm, R. Turing und die Verifikation. Informatik Spektrum 35, 271–279 (2012). https://doi.org/10.1007/s00287-012-0627-2
Published:
Issue Date:
DOI: https://doi.org/10.1007/s00287-012-0627-2