Rigorous Software Development

An Introduction to Program Verification

  • José Bacelar Almeida
  • Maria João Frade
  • Jorge Sousa Pinto
  • Simão Melo de Sousa

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

Table of contents

  1. Front Matter
    Pages I-XII
  2. José Bacelar Almeida, Maria João Frade, Jorge Sousa Pinto, Simão Melo de Sousa
    Pages 1-13
  3. José Bacelar Almeida, Maria João Frade, Jorge Sousa Pinto, Simão Melo de Sousa
    Pages 15-44
  4. José Bacelar Almeida, Maria João Frade, Jorge Sousa Pinto, Simão Melo de Sousa
    Pages 45-79
  5. José Bacelar Almeida, Maria João Frade, Jorge Sousa Pinto, Simão Melo de Sousa
    Pages 81-128
  6. José Bacelar Almeida, Maria João Frade, Jorge Sousa Pinto, Simão Melo de Sousa
    Pages 129-157
  7. José Bacelar Almeida, Maria João Frade, Jorge Sousa Pinto, Simão Melo de Sousa
    Pages 159-179
  8. José Bacelar Almeida, Maria João Frade, Jorge Sousa Pinto, Simão Melo de Sousa
    Pages 181-194
  9. José Bacelar Almeida, Maria João Frade, Jorge Sousa Pinto, Simão Melo de Sousa
    Pages 195-227
  10. José Bacelar Almeida, Maria João Frade, Jorge Sousa Pinto, Simão Melo de Sousa
    Pages 229-239
  11. 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

Introduction

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.

Keywords

ACSL First-Order Logic Formal Methods Hoare Logic Program Verification Programming with Contracts Propositional Logic

Authors and affiliations

  • José Bacelar Almeida
    • 1
  • Maria João Frade
    • 2
  • Jorge Sousa Pinto
    • 3
  • Simão Melo de Sousa
    • 4
  1. 1.Depto. InformáticaUniversidade do MinhoBragaPortugal
  2. 2.Depto. InformáticaUniversidade do MinhoBragaPortugal
  3. 3.Depto. InformáticaUniversidade do MinhoBragaPortugal
  4. 4.Depto. InformáticaUniversidade Beira InteriorCovilhãPortugal

Bibliographic information

  • DOI https://doi.org/10.1007/978-0-85729-018-2
  • Copyright Information Springer-Verlag London Limited 2011
  • Publisher Name Springer, London
  • eBook Packages Computer Science
  • Print ISBN 978-0-85729-017-5
  • Online ISBN 978-0-85729-018-2
  • Series Print ISSN 1863-7310
  • About this book