Literaturverzeichnis

ABD+99. Dirk Ansorge, Klaus Bergner, Bernhard Deifel, Nicholas Hawlitzky, Christoph Maier, Barbara Paech, Andreas Rausch, Marc Sihling, Veronika Thurner, and Sascha Vogel: Managing componentware development – software reuse and the V-Modell process. In M. Jarke and A. Oberweis (editors): Advanced Information Systems Engineering, 11th International Conference CAiSE’99, Heidelberg, volume 1626 of Lecture Notes in , pages 134–148. Springer, 1999, ISBN 3-540-66157-3. Abr05. Jean-Raymond Abrial: The B-Book. Cambridge University Press, 2005. AJ94. Samson Abramsky and Achim Jung: Domain theory. In Samson Abramsky, Dov M. Gabbay, and Thomas Stephen Edward Maibaum (editors): Handbook of Logic in Computer Science, volume 3, pages 1–168. Clarendon Press, 1994. And02. Peter Bruce Andrews: An introduction to mathematical logic and type theory: To Truth Through Proof, volume 27 of Applied Logic Series. Springer, 2nd edition, July 2002, ISBN 978-94-015-9934-4. AVWW95. Joe Armstrong, Robert Virding, Claes Wikström, and Mike Williams: Concurrent programming in Erlang. Prentice Hall, 2nd edition, 1995. Bac78. Ralph-Johan Back: On the correctness of refinement steps in program develop- ment. PhD thesis, Åbo Akademi, Department of Computer Science, Helsinki, Finland, 1978. Report A–1978–4. Bas83. Günter Baszenski: Algol 68 Preludes for Arithmetic in Z and Q. Bochum, 2nd edition, September 1983. Bau75. Friedrich Ludwig Bauer: Software engineering. In Friedrich Ludwig Bauer (editor): Advanced Course: Software Engineering, Reprint of the First Edition (February 21 – March 3, 1972), volume 30 of Lecture Notes in Computer Science, pages 522–545. Springer, 1975. Bau82. Rüdeger Baumann: Programmieren mit PASCAL. Chip-Wissen. Vogel-Verlag, Würzburg, 1982. Bau98. Friedrich Ludwig Bauer: Wer erfand den von-Neumann-Rechner? Historische Notizen. Informatik Spektrum, 21(2):84–89, 1998. BB00. Henk Pieter Barendregt and Erik Barendsen: Introduction to lambda calculus. Technical report, Department of Computer Science, Radboud University of Nijmegen, 2000. BBC86. Gilles Bernot, Michel Bidoit, and Christine Choppy: Algebraic semantics of exception handling. In Bernard Robinet and Reinhard Wilhelm (editors): European Symposium on Programming, volume 213 of Lecture Notes in Com- puter Science, pages 173–186, New York, NY, USA, March 1986. Springer, ISBN 3-540-16442-1.

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2019 437 M. Broy, Logische und Methodische Grundlagen der Programm- und Systementwicklung, https://doi.org/10.1007/978-3-658-26302-7 438 Literaturverzeichnis

BBG+60. John Warner Backus, Friedrich Ludwig Bauer, Julien Green, , John McCarthy, Alan Jay Perlis, , , Bernard Vauquois, Joseph Henry Wegstein, , and Michael Woodger: Report on the algorithmic language ALGOL 60. Communications of the ACM, 3(5):299–314, May 1960, ISSN 0001-0782. Ber89a. Joseph Bertrand: Calcul des probabilités. Gauthier-Villars, 1889. Ber89b. Jan Aldert Bergstra: Algebraic specification. ACM Press Frontier Series. ACM Press and Addison-Wesley, 1989, ISBN 0-201-41635-2. Editors: J. Heering and P. Klint. Ber01. Jan Aldert Bergstra: Handbook of Process Algebra. Elsevier Science Inc., 2001, ISBN 0444828303. Editors: A. Ponse and S.A. Smolka. BFG+93a. , Christian Facchi, Radu Grosu, Rudi Hettler, Heinrich Huss- mann, Dieter Nazareth, Franz Regensburger, Oscar Slotosch, and Ketil Stølen: The requirement and design specification language SPECTRUM. An informal introduction. Version 1.0. Part I. Technical Report TUM-I9311, Technische Universität München, Institut für Informatik, 1993. BFG+93b. Manfred Broy, Christian Facchi, Radu Grosu, Rudi Hettler, Heinrich Hussmann, Dieter Nazareth, Franz Regensburger, Oscar Slotosch, and Ketil Stølen: The requirement and design specification language SPECTRUM. An informal in- troduction. Version 1.0. Part II. Technical Report TUM-I9312, Technische Universität München, Institut für Informatik, 1993. BG77. Rod Martineau Burstall and Joseph Amadee Goguen: Putting theories together to make specifications.In5th International Joint Conference on Artificial Intelligence, pages 1045–1058, Cambridge, MA, 1977. BHS91. Ferenc Belina, Dieter Hogrefe, and Amardeo Sarma: SDL with Applications from Protocol Specification. Carl Hanser Verlag and Prentice Hall, 1991. Bir48. Garrett Birkhoff: Lattice Theory. AMS, 2nd edition, 1948. Bir95. Garrett Birkhoff: Lattice Theory, volume 25. American Mathematical Society, 3rd edition, 1995. Eighth printing, ISBN 0-8218-1025-1. Bir98. Richard Bird: Introduction to Functional Programming using Haskell. Prentice Hall, 1998. BK85. Jan Aldert Bergstra and Jan Willem Klop: Algebra of communicating processes with abstraction. Theoretical Computer Science, 37(1):77–121, 1985. Bla02. Bruno Blanchet: Introduction to abstract interpretation. Lecture script, http://prosecco.gforge.inria.fr/personal/bblanche/ absint.pdf, 2002. BM04. Michel Bidoit and Peter David Mosses: Casl User Manual, volume 2900 of Lecture Notes in Computer Science. Springer, 2004. IFIP Series. BMPW86. Manfred Broy, Bernhard Möller, Peter Pepper, and Martin Wirsing: Algeb- raic implementations preserve program correctness. Science of , 7:35 – 53, 1986. Bou50. Nicolas Bourbaki: Sur le théorème de Zorn. Archiv der Mathematik, 2(6) :434– 437, 1949/50. Bro87. Rodney Allen Brooks: LISP: Programmieren in Common Lisp. Oldenbourg Wissenschaftsverlag, 1987. Bro88. Manfred Broy: Views of queues. Science of Computer Programming, 11(1):65– 86, 1988. Bro91. Manfred Broy: Towards a formal foundation of the specification and description language SDL. Formal Aspects of , 3(1):21–57, 1991. Bro98. Manfred Broy: Informatik. Eine grundlegende Einführung (Band 1). Springer, 2. Auflage, 1998. Bro14. Manfred Broy: Modellierung verteilter Systeme, 2014. Vorlesungsskript. BRSK05. Manfred Broy, Andreas Rausch, Marc Sihling und Marco Kuhrmann: IT-Projekte erfolgreich mit dem neuen V-Modell XT. Tagungsband TUM-I0508, Technische Universität München, Mai 2005. Literaturverzeichnis 439

BS12. Stanley Neal Burris and Hanamantagouda Pandappa Sankappanavar: A Course in Universal Algebra. Springer-Verlag, Millenium edition, Novem- ber 2012. http://www.math.uwaterloo.ca/~snburris/htdocs/ UALG/univ-algebra2012.pdf. Bur97. Rainer Burkhardt: UML: Unified Modeling Language. Addison-Wesley, 1997, ISBN 3-8273-1226-4. BW81. Friedrich Ludwig Bauer und Hans Wössner: Algorithmische Sprache und Programmentwicklung. Springer, Berlin Heidelberg New York, 1981, ISBN 978-3-662-05656-1. BW82. Manfred Broy and Martin Wirsing: Partial abstract types. Acta Informatica, 18(1):47–64, March 1982, ISSN 0001-5903. BW99. Gabriele Bannert und Martin Weitzel: Objektorientierter Softwareentwurf mit UML. Addison Wesley Longman, München, 1999. BWP87. Manfred Broy, Martin Wirsing, and Peter Pepper: On the algebraic definition of programming languages. ACM Transactions on Programming Languages and Systems (TOPLAS), 9(1):54–99, 1987. CC79. Patrick Cousot and Radhia Cousot: Constructive versions of Tarski’s fixed point theorems. Pacific Journal of , 81(1):43–57, 1979. CEW93. Ingo Claßen, Hartmut Ehrig, and Dietmar Wolz: Algebraic Specification Tech- niques and Tools for Software Development: The ACT Approach. World Scientific, 1993. Cha04. Stephen J. Chapman: Fortran 90/95 for scientists and engineers. McGraw-Hill Higher Education, 2nd edition, 2004. CLRS09. Thomas H. Cormen, Charles Eric Leiserson, Ronald Linn Rivest, and Clif- ford Seth Stein: Introduction to Algorithms. MIT Press, 3rd edition, 2009, ISBN 978-0-262-03384-8. CM94. William F. Clocksin and Christopher Stuart Mellish: Programming in Prolog. Springer, 1994. Coh81. Paul Moritz Cohn: Universal algebra. Mathematics and its applications/6. D. Reidel Publishing Company, revised edition, 1981, ISBN 978-90-277-1254-7. Originally published in 1965 by Harper & Row in the series Harper’s series in modern mathematics. CR93. Alain Marie Albert Colmerauer and Philippe Roussel: The birth of Prolog.In The second ACM SIGPLAN conference on history of programming languages, HOPL-II, pages 37–52. ACM Press, 1993, ISBN 0-89791-570-4. CWo13. CWoo: Homomorphism between partial algebras, March 2013. http:// planetmath.org/homomorphismbetweenpartialalgebras. DDH72. Ole-Johan Dahl, Edsger Wybe Dijkstra, and Charles Antony Richard Hoare: . Academic Press, London New York, 1972. Den91. Ernst Denert: Software-Engineering. Springer, 1991. Dij68. Edsger Wybe Dijkstra: Letters to the editor: go-to statement con- sidered harmful. Communications of the ACM, 11(3):147–148, 1968. Original title: A Case against the GO TO statement, known as EWD 215, http://www.cs.utexas.edu/users/EWD/ transcriptions/EWD02xx/EWD215.html, last accessed on 30 July 2015. Dij75. Edsger Wybe Dijkstra: Guarded commands, non-determinacy, and formal derivation of programs. Communications of the ACM, 18:453–457, 1975. Dij76. Edsger Wybe Dijkstra: A Discipline of Programming. Englewood Cliffs: Prentice Hall, 1976. DN65. Ole-Johan Dahl and : : a language for programming and description of discrete event systems. Norwegian Computing Center (NCC), Oslo, May 1965. Introduction and User’s Manual. DP91. Brian Albert Davey and Hilary Ann Priestley: Introduction to lattices and order. Cambridge University Press, 1991. 440 Literaturverzeichnis

DW99. Wolfgang Dröschel und Manuela Wiemers: Das V-Modell 97: Der Standard für die Entwicklung von IT-Systemen mit Anleitung für den Praxiseinsatz. De Gruyter, 1999, ISBN 978-3-486-80026-5. Der Neudruck von 2014 ist unter ISBN 978-3-486-25086-2 verfügbar. Dyb96. R. Kent Dybvig: The Scheme . Prentice Hall, 2nd edition, 1996. Eck99. Bruce Eckel: Thinking in C++. Prentice Hall, 1999. Eck02. Bruce Eckel: Thinking in Java. Prentice Hall, 2002. EGL89. Hans-Dieter Ehrich, Martin Gogolla und Udo Walter Lipeck: Algebraische Spezifikation abstrakter Datentypen – eine Einführung in die Theorie. Leitfäden und Monographien der Informatik. Teubner, 1989, ISBN 978-3-519-02266-4. Eil73. Samuel Eilenberg: Automata, Languages, and Machines, volume A. Academic Press, 1973, ISBN 978-0122340017. EL17. Éric Lévénez: Computer languages history, 2017. http://www.levenez. com/lang/, weitergeführte Vorlage der veralteten Version von O’Reilly von 2004. EP01. Katrin Erk und Lutz Priese: Theoretische Informatik. Eine umfassende Einfüh- rung. Springer, Berlin, 2001. Flo67. Robert W. Floyd: Assigning meanings to programs. In Jacob Theodore Schwartz (editor): Symposia in Applied Mathematics, volume 19, pages 19–32. American Mathematical Society, 1967. Gal15. Jean Henri Gallier: Logic for Computer Science: Foundations of Automatic Theorem Proving. Dover, 2nd edition, June 2015, ISBN 978-0486780825. GH93. John Vogel Guttag and Jim J. Horning: A Larch Shared Language Handbook. Springer, 1993. GHJV95. Erich Gamma, Richard Helm, Ralph E. Johnson, and John Vlissides: Design pat- terns: elements of reusable object-oriented software. Addison-Wesley Longman Publishing Co., Inc., Boston, MA, USA, 1995. GR83. Adele Goldberg and David Robson: Smalltalk-80: The Language and Its Imple- mentation. Addison-Wesley, 1983. Grä08. George Grätzer: Universal Algebra. Springer, 2nd edition, 2008, ISBN 978-0-387-77486-2. Gri81. : The Science of Programming. Springer, New York, 1981. GS90. Carl Allen Gunter and Dana Stewart Scott: Semantic domains.InHandbook of Theoretical Computer Science. Elsevier Science Inc., 1990. GT02. Michael Truman Goodrich and Roberto Tamassia: Algorithm Design: Founda- tions, Analysis, and Internet Examples. John Wiley & Sons, Inc., 2002. Gut75. John Vogel Guttag: The specification and application to programming of abstract data types. PhD thesis, University of Toronto, 1975. Gut77. John Vogel Guttag: Abstract data type and the development of data structures. Communications of the ACM, 20(6):396–404, 1977. GWM+93. Joseph Amadee Goguen, Timothy Winkler, José Meseguer, Kokichi Futatsugi, and Jean-Pierre Jouannaud: Introducing OBJ. In Joseph Amadee Goguen (editor): Applications of Algebraic Specification using OBJ. Cambridge University Press, 1993. Heh84. Eric Charles Roy Hehner: Predicative programming. Part I. Communications of the ACM, 27(2):134–143, 1984. HJ98. Charles Antony Richard Hoare and He Jifeng: Unifying Theories of Programming. Prentice Hall, 1998. Hoa69. Charles Antony Richard Hoare: An axiomatic basis for computer programming. Communications of the ACM, 12(10):576–583, October 1969. Hoa72. Charles Antony Richard Hoare: Proof of correctness of data representations. Acta Informatica, 1:271–281, 1972. Hoa85. Charles Antony Richard Hoare: Communicating sequential processes. Prentice Hall, 1985. Literaturverzeichnis 441

Höl01. Steffen Hölldobler: Logik und Logikprogrammierung. Synchron Publishers GmbH, 2001. Int84. International Organisation for Standardization, Genève, : ISO.7498: Information Processing Systems – Open systems Interconnection, 1984. Basic Reference Model. Jon86. Cliff B. Jones: Systematic Software Development Using VDM. Prentice Hall, 1986. Jon91. Mark P. Jones: Introduction to Gofer 2.20, September 1991. Jon97. Neil Deaton Jones: Computability and Complexity. From a programming perspective. MIT Press, Cambridge, MA, London, UK, 1997. Kan39. Leonid Vital’evich Kantorovitch: The method of successive approximations for functional equations. Acta Mathematica, 71:63–97, 1939. KE01. Alfons Kemper und André Eickler: Datenbanksysteme. Eine Einführung. Ol- denbourg Wissenschaftsverlag, 4. Auflage, 2001. Ker92. Helmut Kerner: Rechnernetze nach OSI. Addison-Wesley, 1992. Kna28. Bronisław Knaster: Un théorème sur les fonctions d’ensembles. Annales de la Société Polonaise de Mathématique, 6 :133–134, 1928. Lei10. K. Rustan M. Leino: Dafny: an automatic program verifier for functional correct- ness.InProceedings of the 16th International Conference on Logic for Program- ming, Artificial Intelligence, and Reasoning, LPAR’10, pages 348–370, Berlin, Heidelberg, 2010. Springer-Verlag, ISBN 3-642-17510-4, 978-3-642-17510-7. LEW96. Jacques Loeckx, Hans-Dieter Ehrich, and Markus Wolf: Specification of Abstract Data Types. Wiley-Teubner Series in Computer Science. John Wiley & Sons, Inc., 1996. Lib03. Jesse Liberty: Programming C#. O’Reilly & Associates, 3rd edition, 2003. LJBA01. Chin Soon Lee, Neil Deaton Jones, and Amir M. Ben-Amram: The size-change principle for program termination. SIGPLAN Notices, 36(3):81–92, January 2001, ISSN 0362-1340. LZ74. Barbara Jane Huberman Liskov and Stephen N. Zilles: Programming with abstract data types. SIGPLAN Notices, 9(4):50–59, 1974, ISSN 0362-1340. MAE+85. John McCarthy, Paul William Abrahams, Daniel J. Edwards, Timothy Paul Hart, and Michael I. Levin: LISP 1.5 Programmer’s Manual. MIT Press, Cambridge, MA, 2nd edition, 1985, ISBN 0-262-13011-4. Mag17. P. D. Magnus: forallX: An Introduction to Formal Logic. Orange Grove Texts, 2017, ISBN 978-1616100353. http://www.fecundity.com/codex/ forallx.pdf. Man74. Zohar Manna: Introduction to Mathematical Theory of Computation. McGraw- Hill, Inc., New York, 1974. Man03. Zohar Manna: Mathematical Theory of Computation. Dover Publications, Incorporated, 2003, ISBN 0486432386. Mar76. George Markowsky: Chain-complete posets and directed sets with applications. algebra universalis, 6(1):53–68, 1976, ISSN 0002-5240. http://dx.doi. org/10.1007/BF02485815. McC78. John McCarthy: History of LISP. In Richard L. Wexelblat (editor): History of Programming Languages: Proceedings of the ACM SIGPLAN Conference, pages 173–197. Academic Press, June 1978. Mey88. Bertrand Meyer: Object-Oriented Software Construction. Prentice Hall, 1988. Mey90. Bertrand Meyer: Objektorientierte Softwareentwicklung. Hanser/Prentice Hall, 1990. Mey92. Bertrand Meyer: Eiffel: The Language. Prentice Hall, 1992. Mey13. Michael Meyling: Formale Prädikatenlogik, Mai 2013. http://www.qedeq. org/current/doc/math/qedeq_formal_logic_v1_de.pdf. Mil80. Robin Milner: A Calculus of Communicating Systems, volume 92 of Lecture Notes in Computer Science. Springer, Berlin, 1980. 442 Literaturverzeichnis

Möl93. Bernhard Möller: Towards pointer algebra. Science of Computer Programming, 21(1):57–90, 1993. Möl97. Bernhard Möller: Calculating with pointer structures.InThird International Seminar on the Use of Relational Methods in Computer Science (RelMiCS 1997), pages 113–122, 1997. Möl00. Bernhard Möller: Safer ways to pointer manipulation. Report 2000-4, Institut für Informatik, Universität Augsburg, 2000. Mor94. Carroll Morgan: Programming from specifications. Prentice Hall, 2nd edition, 1994. Mos97. Peter David Mosses: CoFI: The common framework initiative for algebraic specification and development. In M. Bidoit and M. Dauchet (editors): Theory and Practice of Software Development (TAPSOFT ’97), 7th International Joint Conference CAAP/FASE, volume 1214 of Lecture Notes in Computer Science, pages 115–137. Springer, 1997. MPM00. Mike Murach, Anne Prince, and Raul Menendez: Murach’s Structured COBOL. Mike Murach & Associates, Inc., 2000. Nag99. Manfred Nagl: Softwaretechnik mit Ada 95: Entwicklung großer Systeme. Vieweg Verlag, 1999. Obe94. Arnold Oberschelp: Allgemeine Mengenlehre. Bibliographisches Institut & F.A. Brockhaus AG, Mannheim, 1994, ISBN 3-411-17271-1. OSV16. Martin Odersky, Lex Spoon, and Bill Venners: Programming in Scala. Artima Incorporation, USA, 3rd edition, May 2016, ISBN 978-0981531687. Updated for Scala 2.12. Pag84. Frank G. Pagan: Praktische Einführung in ALGOL 68. Oldenbourg Wissen- schaftsverlag, 1984. Par72a. David Lorge Parnas: Information distribution aspects of design methodology.In Information Processing 71, pages 339–344. North Holland Publishing Company, 1972. Par72b. David Lorge Parnas: On the criteria to be used in decomposing systems into modules. Communications of the ACM, 15(12):1053–1058, December 1972. Par02. David Lorge Parnas: The secret history of information hiding, pages 399–409. Springer-Verlag New York, Inc., New York, NY, USA, 2002. Pat97. Dito Pataraia: A constructive proof of Tarski’s fixed-point theorem for dcpos.In 65th Peripatetic Seminar on Sheaves and Logic, November 1997. Pep02. Peter Pepper: Funktionale Programmierung in OPAL, ML, Haskell und Gofer. Springer, 2002. PH97. Arnd Poetzsch-Heffter: Specification and verification of object-oriented pro- grams. PhD thesis, habilitation thesis, Technical University of , 1997. Plo81. Gordon David Plotkin: A structural approach to operational semantics. Technical Report DAIMI FN-19, Computer Science Department, Aarhus University, 1981. PST91. Ben Potter, Jane Sinclair, and David Till: An Introduction to Formal Specification and Z. Englewood Cliffs: Prentice Hall, 1991. PW82. Jürgen Plate und Paul Wittstock: Pascal: Einführung, Programmentwicklung, Strukturen. Franzis-Verlag, 1982. Rei87. Horst Reichel: Initial computability, algebraic specifications, and partial algeb- ras. Clarendon Press, Oxford, 1987. Rey02. John Charles Reynolds: Separation Logic: A logic for shared mutable data structures.In17th IEEE Symposium on Logic in Computer Science (LICS 17), pages 55–74. IEEE Computer Society, July 2002. Rey08. John Charles Reynolds: An introduction to Separation Logic. http://www. cs.cmu.edu/~jcr/copenhagen08.pdf, visited on 2014-09-23, CMU, October 2008. RKZ08. Martin Rinard, Viktor Kuncak, and Karen Zee: Verifying linked data structure implementations.In2008 IEEE International Parallel & Distributed Processing Symposium (IPDPS), pages 1–5, Miami, FL, April 2008. Literaturverzeichnis 443

Sch70. Jürgen Schmidt: A homomorphism theorem for partial algebras. Colloquium Mathematicum, 21:5–21, 1970. ScSt71. Dana Stewart Scott and Christopher S. Strachey: Towards a mathematical semantics for computer languages. In J. Fox (editor): Symposium on Computers and Automata, volume 21 of Microwave Institute Symposia Series, pages 19–46. Polytechnic Institute of Brooklyn, John Wiley & Sons, Inc., 1971. ScSu17. Ken Schwaber und Jeff Sutherland: Der Scrum Guide™, November 2017. http://www.scrum.org/resources/scrum-guide. SdB69. Dana Stewart Scott and Jacobus Willem de Bakker: A theory of programs. Unpublished manuscript, I.B.M., August 1969. Sie04. Johannes Siedersleben: Moderne Software-Architektur. dpunkt.verlag, 2004. ST12. Donald Sannella and Andrzej Tarlecki: Foundations of Algebraic Specification and Formal Software Development. Monographs in Theoretical Computer Science. An EATCS Series. Springer, 2012, ISBN 978-3-642-17335-6. Sto77. Joseph E. Stoy: Denotational Semantics: The Scott-Strachey Approach to Programming Languages. MIT Press, 1977. Str91. Bjarne Stroustrup: The C++ Programming Language. Addison-Wesley, 2nd edi- tion, 1991, ISBN 0-201-53992-6. Tar55. Alfred Tarski: A lattice theoretical fixpoint theorem and its applications. Pacific Journal of Mathematics, 5(2):285–309, 1955. Tho86. Simon John Thompson: Laws in Miranda.InConference on LISP and Functional Programming (LFP), pages 1–12, New York, 1986. ACM Press. Tho96. Simon John Thompson: Haskell: The Craft of Functional Programming. Addison- Wesley, 1996. Tur71. Władysław Marek Turski: A model for data structures and its applications. I. Acta Informatica, 1:26–34, 1971. Tur72. Władysław Marek Turski: A model for data structures and its applications. (Part II). Acta Informatica, 1:282–289, 1972. Tur85. David A. Turner: Miranda: A non-strict functional language with polymorphic types.InIFIP International Conference on Functional Programming Languages and Computer Architecture (FPCA ’85), volume 201 of Lecture Notes in Computer Science, pages 1–16. Springer, 1985. Ull97. Jeffrey David Ullman: Elements of ML programming. Prentice Hall, 1997. vK74. Sietse G. van der Meulen und Peter Kühling: Programmieren in ALGOL 68. I. Einführung in die Sprache. Band 1. De Gruyter, 1974. vK77. Sietse G. van der Meulen und Peter Kühling: Programmieren in ALGOL 68. II. Sprachdefinition, Transput und spezielle Anwendungen. Band 2. De Gruyter, 1977. Vui75. Jean E. Vuillemin: Syntaxe, Sémantique et Axiomatique d’un langage de pro- grammation simple. Birkhäuser Verlag, Bâle, 1975, ISBN 3-7643-0790-0. ISR 12. Wag87. Jürgen Wagner: Einführung in die Programmiersprache LISP. Ein Tutorial. IWT, Vaterstetten, 1987. Wei99. Mark Allen Weiss: Data Structures and Algorithm Analysis in C++. Addison- Wesley, 2nd edition, 1999. Wik87. Ake Wikström: Functional programming using standard ML. Prentice Hall, 1987. Win93. Glynn Winskel: The Formal Semantics of Programming Languages. MIT Press, 1993. Wir71. : Program development by stepwise refinement. Communications of the ACM, 14(4):221–227, 1971. Wir72. Niklaus Wirth: Systematisches Programmieren. Teubner, Stuttgart, 1972. Wir83. Niklaus Wirth: Algorithmen und Datenstrukturen. Teubner, Stuttgart, 3. Auflage, 1983. 444 Literaturverzeichnis

Wir00. Niklaus Wirth: Algorithmen und Datenstrukturen, Pascal-Version. Teubner, Stuttgart, 2000. Wit51. Ernst Witt: Beweisstudien zum Satz von M. Zorn. Mathematische Nachrichten, 4(1-6):434–438, 1950/1951. Zus86. : Der Computer – Mein Lebenswerk. Springer, 2. Auflage, 1986, ISBN 3-540-56292-3. Symbolverzeichnis

∗ · Gegeben eine beliebige Menge Z, bezeichnen 45, 46, 50, 52, 61, 68, wir mit Z∗ die Menge aller endlichen Wörter 69, 96–99, 118, 178, über Z. 179

B Die Menge boolescher Werte. 44, 45, 50, 55, 58, 68, 87, 115, 178, 195–197, 213, 214, 254, 271, 272, 367, 374, 375

L Boolescher Wert „Wahr“. 44, 46, 50, 55, 58, 67, 69, 87, 97–99, 196, 197, 214, 254, 369

O Boolescher Wert „Falsch“. 44, 50, 55, 57, 58, 67, 87, 97–99, 196, 197, 249, 254, 369

dom Der Definitionsbereich einer Funktion. 54, 56, 57, 59, 62, 68, 85, 86, 102–107, 112, 113

id Mit idZ wird die Identitätsfunktion einer Menge 63, 67, 96, 99, 100, 109, Z bezeichnet. 110, 112, 206, 373

img Das Bild einer Funktion, also die Menge ihrer 61, 62, 107 Werte.

inf Das Infimum, die größte untere Schranke einer 108, 208 Menge in einer Halbordnung.

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2019 445 M. Broy, Logische und Methodische Grundlagen der Programm- und Systementwicklung, https://doi.org/10.1007/978-3-658-26302-7 446 Symbolverzeichnis

μ Mit μ f wird der kleinste Fixpunkt (im Falle 208, 215, 216, 243, 244 der Existenz) der Funktion f bezeichnet.

N Die Menge nichtnegativer ganzer Zahlen. 44, 45, 50, 55, 58, 61, 68, 71, 90, 96–99, 115– 118, 142, 164, 183, 193, 211, 212, 214–216, 225, 253–255, 261, 298, 299, 313, 341, 351, 369, 378, 401

N+ Die Menge positiver ganzer Zahlen. 49, 57, 102, 103, 123, 124, 139, 141, 200, 203, 209, 236, 237, 242, 261, 274, 281, 283, 298

Ω Eine konstante Abbildung (mit dem Definitions- 212, 221–223 und Wertebereich aus dem Kontext), die für jedes Argument das kleinste Element (⊥ in un- serer Notation) der flachen Halbordnung des Wertebereichs liefert. Diese Abbildung model- liert eine nirgendwo terminierende Funktions- vorschrift.

 Unter XY verstehen wir die Menge partieller 43, 44, 59, 84, 85, 103, Funktionen von X nach Y. 165

P Die Potenzmenge einer Menge Z wird mit P(Z) 49, 50, 254 bezeichnet.

QED Quod erat demonstrandum. Bezeichnet das En- de eines Beweises.

 Bezeichnet das Ende einer Definition, eines Satzes, einer Anmerkung, eines Beispiels etc.

·|· Mit g|X wird die Einschränkung der Abbildung 51, 52, 62, 214 g auf den Definitionsbereich X bezeichnet.

sup Das Supremum, die kleinste obere Schranke 108, 208–215, 218 einer Menge in einer Halbordnung. Sachverzeichnis

Abbildung Belegung 84 stetig 209 Bereiche 385 Abgleich von Export-/Importschnittstellen Besetzungstabu 270 421 Bezug siehe Referenz Abstiegsfunktion 221 Binden Abstrakte Datentypen 36 dynamisch 390 abstrakter (Daten-)Typ 87 Black-Box-View siehe Nutzungssicht Abstraktion 10 Abstraktionsabbildung 367 call by name siehe nichtstrikter Aufruf Ad-hoc-Polymorphie siehe Überladen, 93 call by value siehe strikter Aufruf Algebra 35 Call-Back 388 final 99 Chaos 282 initial 99 COBOL 25 terminal 99 code reuse siehe Code- Σ-Algebra 43 Wiederverwendung ALGOL 26 Code-Wiederverwendung 384 Alias 264 commitment 248 Aliastabu 264, 269 curry-Funktion siehe curry-Funktion anarchische Menge 262 Currying 237 Anforderungsspezifikation 15, 349 Anweisung bewacht 260 Datei 385 Artefakte 10 Datenmodellierung 33 assumption 248 Datensorte 34 Attribut 384 Datenstruktur 37 Attribute 144, 401 Datentypen 34 Aufruf Deduktion 356 nichtstrikt 236 Definition strikt 236 induktiv 49 Ausgabezusicherung 248 definitorische Erweiterung 356 Ausnahmen 172 Design-by-Contract 21, 382 Auswahlfunktion 130 Diskriminator 91 Automorphismus 56 divide and conquer 5, 9 Axiom 240 Domänenmodell 19 domain model siehe Domänenmodell Beispiel domain theory 12 Berechtigung 416 dynamische Typisierung 94

© Springer Fachmedien Wiesbaden GmbH, ein Teil von Springer Nature 2019 447 M. Broy, Logische und Methodische Grundlagen der Programm- und Systementwicklung, https://doi.org/10.1007/978-3-658-26302-7 448 Sachverzeichnis eigenschaftsorientiert 65 Funktionsdeklaration 187, 191 Einbettung 233 Funktionserweiterung Eingabeannahme 248 nichtmonoton 166 Einschränkung 51 Endomorphismus 56 GCL siehe Entität 143 Geflecht Entitäts/Relationen-Modell 143 zyklenfrei 318 Entitätsinstanz 144 zyklisch 318 Entitätsmenge 143 Generatormenge 87, 91 entity/relationship model siehe gerichtete Menge 207 Entitäts/Relationen-Modell Glass-Box-View siehe Implementierungs- Entwurf sicht Fachentwurf 15 Gleichheit softwaretechnisch 15 stark 167 Enumeration 138 Gleichung Epimorphismus 56, 367 explizit 200 Erweiterung 51 spezifizierend 199 treu 52 strukturelle Rekursion 200 Export-/Importschnittstelle globale Variable 268 syntaktisch 409 Grobdesign 15 Extensionalität 236 Grundterm 50 Guarded Command Language 259 Fehleralgebra 171 Fehlerelement halbgeordnete Menge 108 universell 157 Halbordnung 108 FIFO 126 Halteproblem 167 Fixpunkt 206 Homomorphiegleichung 54 Fixpunktbeweisprinzip 216 Homomorphismus Fixpunktgleichung 206 zwischen Algebren 53 Fixpunkttheorie 200 Σ-Homomorphismus siehe Homomor- flache Halbordnung 164 phismus formal verification 5 Formel Identifikator 47, 386 geschlossen 83 frei 47, 83 Fortran 25 gesortet 47 Forwarded-Call 388 ungebunden 83 Funktion Implementierungssicht 17, 18, 36 linksstrikt 195 Infimum siehe Schranke, untere, größte natürliche Erweiterung 165 Informatiksysteme 2 nichtsequenziell 252 information hiding 5, 39 nichtsequenziell (parallel) 195 interface siehe Schnittstelle nichtstrikt 195 interface abstraction 5 parallel 197 Invariante 72, 261, 280 sequenziell 195, 196 Inverses Element stark 166 linke, rechte 346 strikt 164 isomorph 56 total 43 Isomorphismus 56 Funktional assoziiert, zugeordnet 206 Kette 207 funktionale Programmierung 187 Klasse 148, 383, 384 Funktionsanreicherung 153 kleinster Fixpunkt 216 Funktionsanwendung siehe Funktions- Komponente 408 applikation Komponenten 15 Funktionsapplikation 203, 235 Komponentenbegriffe 16 Sachverzeichnis 449

Komponentenschnittstelle formal 240 syntaktisch 416 parametrischer Polymorphismus 94 Komposition zweier Komponenten durch partiell geordnete Menge siehe abgeglichene Schnittstellen 421 halbgeordnete Menge Kongruenz 102 partielle Funktion 43 Konstruktor 91 partielle Ordnung siehe Halbordnung Konzeptuelle Abgrenzung 64 Persistenz 384, 392 Korrektheit Platzhalter siehe Pseudo-Resultat, 158 partiell 249 polymorphe Sorten 92 robust 250 Polymorphismus total 250 Ad-hoc- 391 parametrisch 391 Last-In-First-Out 172 Prädikat 115 late binding siehe Binden, dynamisches schwächer 271 least fixed point 216 stärker 271 LIFO 127, siehe Last-In-First-Out zulässig 213 LISP 26 preorder siehe Quasiordnung Produkt Maximum 207 strikt 317 method header siehe Methodenkopfzeile Produktsorte 318 Methodenkopfzeile 400 Programm 1 Minimum 207 Programmentwicklung siehe Softwareent- Modell 19 wicklung, 1 Modell einer algebraischen Spezifikation Programmierung siehe Programment- 96 wicklung modellorientiert 64 Programmtransformation 363 Modul 392 Programmvariable 264 Monomorphismus 56 Programmverifikation monoton 165 zusicherungsgestützt 294 Monotonie 165 Prolog 26 Multimengen 130 Pseudo-Resultat 158 Pseudoelement 163 Nachbedingung 272, 289 Namensäquivalenz 142 Quantor 83 Namensaufruf siehe nichtstrikter Aufruf Quasiordnung 45, 108 Nichtdeterminismus 131 total 45 noethersche Ordnung 114 Nonstandardelement 118 Realisierungssicht 17, siehe Implementie- Normalform 153 rungssicht, 36, 73 eindeutig 122, 202 Rechenstruktur siehe Algebra Nutzungssicht 15, 17, 36, 73 Rechenvorschrift 187 records 40 Oberalgebra 52 Records 138 Objekt 148, 383, 384 Referenz 314 Objektbasierung 392 Referenzen 150 Objekterzeugung 392 refinement siehe Verfeinerung Objektidentifikator siehe Objekt Rekursion 199 Objektkreation siehe Objekterzeugung geschachtelt 190 Objektmodell 149 primitiv 202 organisierter Speicher 326 verschränkt 192 Overloading siehe Polymorphismus, relationale Komposition 239 Ad-hoc- Relationship 143 Repräsentant 367 Parameter Requirements Engineering 15 450 Sachverzeichnis

Schnittstelle 11, 15, 18 Syntax 20 Schnittstellensicht siehe Nutzungssicht Systementwicklung 2 Schnittstellenverfeinerung 425 Systemmodell 19 Schranke eindeutig größte untere 108 Taxonomien 386 eindeutig kleinste obere 108 Teilalgebra 51 obere 108 treu 52, 367 kleinste 108 termerzeugt 61 untere 108 Terminduktion 115 größte 108 Terminterpretation 58 schwächste Vorbedingung 272 Trennungslogik 335 scopes 385 Tupelsorte 242 scoping 64 Tupelsorten 40 Selektor 91, 318 Typ 34 Semantik 20 Typinferenz 49 axiomatisch 17 Typisierung denotationell 20 stark 174 deskriptiv 20 funktional 17 Überladen 93 operationell 17, 20, 252 unabhängiges Attribut 265 separation logic siehe Trennungslogik unions 40 Sicht Unteralgebra 52, 85 Zustandsübergangs- 408 Unterspezifikation 131, 132, 134 Sigma-Term 48 unvergleichbare Algebren 101 Signatur 36, 40, 82 Softwareentwicklung 1 Validierung 6 Softwaresystem 1 Variable Sorte 34, 400 frei 47 Sortendeklaration 140 Varianten 138 Sorteninferenz 49 Verband 108 Spezifikation 6 vollständig 108 algebraisch 87 Vereinigungssorten 40 inkonsistent 113, 122 Vererbung 389 konsistent 121 multipel 389 monomorph 113, 122 singulär 389 prädikativ 247 Verfeinerung 343, 344, 349, 352 vollständig 122 Prinzip der Ersetzbarkeit 424 widersprüchlich 121 schrittweise 344, 350 Spezifikation einer Methode mittels Vertrag von Zusicherungen 360 401 Verifikation 6 Spezifikation von Klassen mittels Vertrag Verifikationsbedingung 291 405 Verweis siehe Referenz, 317 Sprache vollständig partiell geordnet 207 getypt 140 Vorbedingung 289 sortiert 140 Vorgehensmodell 3 State 264 Vorgehensweise stepwise refinement 5, 344 Bottom-Up 9 Striktheit von Funktionen 164 Top-Down 9 structured programming 5 Vorkommen Strukturäquivalenz 142 frei 83 Strukturierung 10 gebunden 83 Subsorting siehe Subtyping ungebunden 83 Subtyping 142, 391 Supremum siehe Schranke, obere, kleinste Wertaufruf siehe strikter Aufruf Sachverzeichnis 451

White-Box-View siehe Implementierungs- Zusicherungsaxiome siehe Ableitungsre- sicht geln Wirkung von Anweisungen 288 Zustände 401 Zustandsraum Zeiger 315 dynamisch 264 Zugriffs- und Sichtbarkeitsregeln 387 statisch 264 Zugriffssicht siehe Nutzungssicht, 17, 36 typisiert 264 Zusicherung 270 Zustandsübergangszusicherung 405 eines Zustandsübergangs 404 Zustandszusicherung 405