Skip to main content
  • Textbook
  • © 2011

Rigorous Software Development

An Introduction to Program Verification

  • Self-contained, offering a concise introduction to formal methods together with an in-depth coverage of model-based and Hoare logic-based methods
  • Focuses on two approaches: the Coq proof assistant and the B suite, both of which have proved effective and relevant for industry
  • Includes exercises and solutions making it suitable as a course text and for self-study
  • Includes supplementary material: sn.pub/extras

Part of the book series: Undergraduate Topics in Computer Science (UTICS)

Buy it now

Buying options

eBook USD 29.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book USD 39.95
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Other ways to access

This is a preview of subscription content, log in via an institution to check for access.

Table of contents (10 chapters)

  1. Front Matter

    Pages I-XII
  2. Introduction

    • José Bacelar Almeida, Maria João Frade, Jorge Sousa Pinto, Simão Melo de Sousa
    Pages 1-13
  3. An Overview of Formal Methods Tools and Techniques

    • José Bacelar Almeida, Maria João Frade, Jorge Sousa Pinto, Simão Melo de Sousa
    Pages 15-44
  4. Propositional Logic

    • José Bacelar Almeida, Maria João Frade, Jorge Sousa Pinto, Simão Melo de Sousa
    Pages 45-79
  5. First-Order Logic

    • José Bacelar Almeida, Maria João Frade, Jorge Sousa Pinto, Simão Melo de Sousa
    Pages 81-128
  6. Hoare Logic

    • José Bacelar Almeida, Maria João Frade, Jorge Sousa Pinto, Simão Melo de Sousa
    Pages 129-157
  7. Generating Verification Conditions

    • José Bacelar Almeida, Maria João Frade, Jorge Sousa Pinto, Simão Melo de Sousa
    Pages 159-179
  8. Safety Properties

    • José Bacelar Almeida, Maria João Frade, Jorge Sousa Pinto, Simão Melo de Sousa
    Pages 181-194
  9. Procedures and Contracts

    • José Bacelar Almeida, Maria João Frade, Jorge Sousa Pinto, Simão Melo de Sousa
    Pages 195-227
  10. Specifying C Programs

    • José Bacelar Almeida, Maria João Frade, Jorge Sousa Pinto, Simão Melo de Sousa
    Pages 229-239
  11. Verifying C Programs

    • José Bacelar Almeida, Maria João Frade, Jorge Sousa Pinto, Simão Melo de Sousa
    Pages 241-256
  12. Back Matter

    Pages 257-263

About this book

The use of mathematical methods in the development of software is essential when reliable systems are sought; in particular they are now strongly recommended by the official norms adopted in the production of critical software. Program Verification is the area of computer science that studies mathematical methods for checking that a program conforms to its specification. This text is a self-contained introduction to program verification using logic-based methods, presented in the broader context of formal methods for software engineering. The idea of specifying the behaviour of individual software components by attaching contracts to them is now a widely followed approach in program development, which has given rise notably to the development of a number of behavioural interface specification languages and program verification tools. A foundation for the static verification of programs based on contract-annotated routines is laid out in the book. These can be independently verified, which provides a modular approach to the verification of software. The text assumes only basic knowledge of standard mathematical concepts that should be familiar to any computer science student. It includes a self-contained introduction to propositional logic and first-order reasoning with theories, followed by a study of program verification that combines theoretical and practical aspects - from a program logic (a variant of Hoare logic for programs containing user-provided annotations) to the use of a realistic tool for the verification of C programs (annotated using the ACSL specification language), through the generation of verification conditions and the static verification of runtime errors.

Reviews

From the reviews:

“Provide a refreshing approach to a textbook on formal testing and verification methods. … intended for undergraduate students and will be useful to practitioners as well. The authors lay out the topics in incremental fashion … present enough information to foster a good understanding of the theoretical framework supporting formal methods … . The exercises are very useful and provide a practical side to the methods; the references will be vital to practitioners … . Summing Up: Recommended. All undergraduate students, practitioners, and general readers.” (L. Benedicenti, Choice, Vol. 49 (1), September, 2011)

“The first half carefully introduces logic without reference to software, while the second half develops verification techniques. … an undergraduate textbook in computer science and is suitable for well-motivated students willing and able to assimilate the chapters devoted to logic. … Each chapter ends with a very helpful ‘To Learn More’ section … and gives references for further study. … this book will benefit its intended readers and will give them a good foundation in program verification that can be used in applications … .” (Arthur Gittleman, ACM Computing Reviews, December, 2011)

“This book is a concise introduction to formal methods together with an in-depth coverage of model-based and Hoare logic-based methods and focuses on two approaches … . This text is a self-contained introduction to program verification using logic-based methods, presented in the broader context of formal methods for software engineering. Undergraduate students will find this useful in their course.” (CSI eNewsletter, Vol. 4 (1), January, 2013)

Authors and Affiliations

  • Depto. Informática, Universidade do Minho, Braga, Portugal

    José Bacelar Almeida, Maria João Frade, Jorge Sousa Pinto

  • Depto. Informática, Universidade Beira Interior, Covilhã, Portugal

    Simão Melo de Sousa

About the authors

José Bacelar Almeida is a lecturer at the University of Minho, Portugal. He graduated in Electrical and Computer Engineering and received his PhD in Computer Science from the University of Minho. His areas of interest include semantics of programming languages, proof assistants, and security. Maria João Frade obtained her PhD in Computer Science from the University of Minho, Portugal, and is currently a lecturer at this institution. Her research interests include type theory, structural proof theory, semantics of programming languages and program logics. Jorge Sousa Pinto obtained his PhD in Computer Science from École Polytechnique, France, and is currently a lecturer at the University of Minho, Portugal. His interests include program verification and the use of formal methods in software engineering. Simão Melo de Sousa is a lecturer at the University of Beira Interior, Portugal. He graduated in Computer Science from the University of Orléans, France, and received his PhD in Computer Science from the University of Nice-Sophia Antipolis / INRIA. His interests include formal methods, reliability and security of computer systems, and computer-aided reasoning.

Bibliographic Information

Buy it now

Buying options

eBook USD 29.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book USD 39.95
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Other ways to access