skip to main content
Skip header Section
Verification of sequential and concurrent programs (2nd ed.)May 1997
Publisher:
  • Springer-Verlag
  • Berlin, Heidelberg
ISBN:978-0-387-94896-6
Published:01 May 1997
Pages:
364
Skip Bibliometrics Section
Bibliometrics
Abstract

No abstract available.

Cited By

  1. Attie P (2016). Synthesis of large dynamic concurrent programs from dynamic specifications, Formal Methods in System Design, 48:1-2, (94-147), Online publication date: 1-Apr-2016.
  2. ACM
    Hatcliff J, Leavens G, Leino K, Müller P and Parkinson M (2012). Behavioral interface specification languages, ACM Computing Surveys (CSUR), 44:3, (1-58), Online publication date: 1-Jun-2012.
  3. ACM
    Gesell M and Schneider K A hoare calculus for the verification of synchronous languages Proceedings of the sixth workshop on Programming languages meets program verification, (37-48)
  4. ACM
    Ying M (2012). Floyd--hoare logic for quantum programs, ACM Transactions on Programming Languages and Systems, 33:6, (1-49), Online publication date: 1-Dec-2011.
  5. Watanobe Y, Yoshioka R and Mirenkov N Embedded Clarity in Filmification of Methods Proceedings of the 2010 conference on New Trends in Software Methodologies, Tools and Techniques: Proceedings of the 9th SoMeT_10, (70-82)
  6. Olderog E and Podelski A Explicit fair scheduling for dynamic control Concurrency, Compositionality, and Correctness, (96-117)
  7. Tesson J and Loulergue F Formal semantics of DRMA-style programming in BSPlib Proceedings of the 7th international conference on Parallel processing and applied mathematics, (1122-1129)
  8. Naumann D (2007). On assertion-based encapsulation for object invariants and simulations, Formal Aspects of Computing, 19:2, (205-224), Online publication date: 1-Jun-2007.
  9. Naumann D and Barnett M (2006). Towards imperative modules, Theoretical Computer Science, 365:1, (143-168), Online publication date: 10-Nov-2006.
  10. ACM
    Kaushik S, Wijesekera D and Ammann P BPEL orchestration of secure webmail Proceedings of the 3rd ACM workshop on Secure web services, (85-94)
  11. Liu C, Fei L, Yan X, Han J and Midkiff S (2006). Statistical Debugging, IEEE Transactions on Software Engineering, 32:10, (831-848), Online publication date: 1-Oct-2006.
  12. Hammond K, Grov G, Michaelson G and Ireland A Low-level programming in Hume Proceedings of the 18th international conference on Implementation and application of functional languages, (91-107)
  13. Loulergue F A calculus of functional BSP programs with projection Proceedings of the 20th international conference on Parallel and distributed processing, (264-264)
  14. Möller B and Struth G (2006). Algebras of modal operators and partial correctness, Theoretical Computer Science, 351:2, (221-239), Online publication date: 21-Feb-2006.
  15. Barradas H and Bert D A fixpoint semantics of event systems with and without fairness assumptions Proceedings of the 5th international conference on Integrated Formal Methods, (327-346)
  16. ACM
    Liu C, Yan X, Fei L, Han J and Midkiff S SOBER Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering, (286-295)
  17. ACM
    Liu C, Yan X, Fei L, Han J and Midkiff S (2005). SOBER, ACM SIGSOFT Software Engineering Notes, 30:5, (286-295), Online publication date: 1-Sep-2005.
  18. Möller B and Struth G wp Is wlp Proceedings of the 8th international conference on Relational Methods in Computer Science, Proceedings of the 3rd international conference on Applications of Kleene Algebra, (200-211)
  19. ACM
    Shilova S and Shilov N (2004). Etude on theme of Dijkstra, ACM SIGACT News, 35:3, (102-108), Online publication date: 1-Sep-2004.
  20. Hammond K and Michaelson G Hume Proceedings of the 2nd international conference on Generative programming and component engineering, (37-56)
  21. Hammond K and Michaelson G Predictable space behaviour in FSM-Hume Proceedings of the 14th international conference on Implementation of functional languages, (1-16)
  22. Hailpern B and Santhanam P (2002). Software debugging, testing, and verification, IBM Systems Journal, 41:1, (4-12), Online publication date: 1-Jan-2002.
  23. ACM
    Müller-Olm M and Seidl H On optimal slicing of parallel programs Proceedings of the thirty-third annual ACM symposium on Theory of computing, (647-656)
  24. ACM
    Lederer E and Dumitrescu R Specification-consistent coordination model for computations Proceedings of the 1998 ACM symposium on Applied Computing, (122-129)
  25. Akella V and Gopalakrishnan G (2019). Specification and Validation of Control-Intensive IC's in hopCP, IEEE Transactions on Software Engineering, 20:6, (405-423), Online publication date: 1-Jun-1994.
Contributors
  • Center for Mathematics and Computer Science - Amsterdam
  • University of Oldenburg

Recommendations

Reviews

Jacques Jean Arsac

A program consists of statements designating the actions to be performed and the variables on which they operate. Each statement changes the state of variables, which may be defined by an assertion, that is, a relation between variables that must be true at a particular point in the program. Each statement is an assertion transformer, and the transformation it performs is its semantics. To verify a program, one must prove that the final state resulting from these actions upon the known initial state is the desired state. This is the background on program verification presented in this book. The authors take a formal approach: instead of presenting assertions using a combination of plain English and mathematical notation, they use only mathematical formulas with quantifiers. The semantics of statements are given as substitution rules in mathematical formulas. A sequential program is partially correct if it gives the desired result each time it terminates; it is totally correct if it terminates with the desired result for all data in the appropriate domain. Proof techniques are given. It can be difficult to find efficient assertions for a program once it has been written. The best approach is to start with assertions and derive the program from them. A nontrivial classical program is presented to illustrate this method of programming. Disjoint parallel programs consist of components that have only read access to their common variables. The authors show that they can be replaced by equivalent sequential programs. Auxiliary variables can be used to simplify verification. The verification of disjoint parallel programs is illustrated by a case study. The verification of parallel programs with shared variables is more difficult: a shared variable may be changed by one component of the program while it is being processed by another. The authors introduce auxiliary variables so that each assignment implies only one shared variable. Rules of verification are given, and examples are discussed. In many applications, parallel components must be synchronized, with one having to await the result of another. Deadlock occurs when a component does not terminate, and the other components of the program are awaiting its result. Weak forms of correctness are introduced for components of parallel programs. A producer-consumer problem is discussed as an example. The problem of the use of a common resource by several programs has been solved using semaphores. Parallelism introduces nondeterminism into programming. Guarded commands provide a model for nondeterministic programs. Distributed programs can be transformed into nondeterministic programs. The authors discuss the concept of fairness for parallel programs: each component progresses with unknown but positive speed and will eventually execute its next enabled atomic statement. Several case studies are discussed. This is a good introduction to program verification, an essential issue in programming. The authors present a unified approach, from sequential programs to distributed programs, using the same formal system for all kinds of programs. Partial and total correctness are discussed, though nothing is said about program complexity. Every book on this subject has a pedagogical difficulty: if the examples are simple enough to be discussed easily, the reader will get the idea that only toy programs can be derived and verified, and that the method cannot be used for real-life programs. If more complex programs are discussed, the book becomes too long and possibly tedious. Most of the examples used in this book are extremely simple, used only to make the formalism clear. The authors' case study of a sequential program is not very convincing, perhaps understandable in a book whose main object is parallelism. The case studies of parallel programs are more convincing, because they are closer to real-life models. They can be used as models for everyday programming. The authors include appropriate references, including books published in the 1970s, the object of which was to transform programming from an empirical, trial-and-error activity in to a science. It will serve as an excellent textbook for students of programming.

Access critical reviews of Computing literature here

Become a reviewer for Computing Reviews.