Automated Theorem Proving in Software Engineering


Book Description

Growing demands for the quality, safety, and security of software can only be satisfied by the rigorous application of formal methods during software design. This book methodically investigates the potential of first-order logic automated theorem provers for applications in software engineering. Illustrated by complete case studies on protocol verification, verification of security protocols, and logic-based software reuse, this book provides techniques for assessing the prover's capabilities and for selecting and developing an appropriate interface architecture.




Automated Theorem Proving in High-Quality Software Design


Book Description

The amount and complexity of software developed during the last few years has increased tremendously. In particular, programs are being used more and more in embedded systems (from car-brakes to plant-control). Many of these applications are safety-relevant, i.e. a malfunction of hardware or software can cause severe damage or loss. Tremendous risks are typically present in the area of aviation, (nuclear) power plants or (chemical) plant control. Here, even small problems can lead to thousands of casualties and huge financial losses. Large financial risks also exist when computer systems are used in the area of telecommunication (telephone, electronic commerce) or space exploration. Computer applications in this area are not only subject to safety considerations, but also security issues are important. All these systems must be designed and developed to guarantee high quality with respect to safety and security. Even in an industrial setting which is (or at least should be) aware of the high requirements in Software Engineering, many incidents occur. For example, the Warshaw Airbus crash, was caused by an incomplete requirements specification. Uncontrolled reuse of an Ariane 4 software module was the reason for the Ariane 5 disaster. Some recent incidents in the telecommunication area, like illegal "cloning" of smart-cards of D2GSM handies, or the extraction of (secret) passwords from German T-online users show that also in this area serious flaws can happen. Due to the inherent complexity of computer systems, most authors claim that only a rigorous application of formal methods in all stages of the software life cycle can ensure high quality of the software and lead to real safe and secure systems. In this paper, we will have a look, in how far automated theorem proving can contribute to a more widespread application of formal methods and their tools, and what automated theorem provers (ATPs) must provide in order to be useful.




Automated Theorem Proving


Book Description

This text and software package introduces readers to automated theorem proving, while providing two approaches implemented as easy-to-use programs. These are semantic-tree theorem proving and resolution-refutation theorem proving. The early chapters introduce first-order predicate calculus, well-formed formulae, and their transformation to clauses. Then the author goes on to show how the two methods work and provides numerous examples for readers to try their hand at theorem-proving experiments. Each chapter comes with exercises designed to familiarise the readers with the ideas and with the software, and answers to many of the problems.







Automated Theorem Proving


Book Description

This text and software package introduces readers to automated theorem proving, while providing two approaches implemented as easy-to-use programs. These are semantic-tree theorem proving and resolution-refutation theorem proving. The early chapters introduce first-order predicate calculus, well-formed formulae, and their transformation to clauses. Then the author goes on to show how the two methods work and provides numerous examples for readers to try their hand at theorem-proving experiments. Each chapter comes with exercises designed to familiarise the readers with the ideas and with the software, and answers to many of the problems.




Automated Deduction - A Basis for Applications Volume I Foundations - Calculi and Methods Volume II Systems and Implementation Techniques Volume III Applications


Book Description

1. BASIC CONCEPTS OF INTERACTIVE THEOREM PROVING Interactive Theorem Proving ultimately aims at the construction of powerful reasoning tools that let us (computer scientists) prove things we cannot prove without the tools, and the tools cannot prove without us. Interaction typi cally is needed, for example, to direct and control the reasoning, to speculate or generalize strategic lemmas, and sometimes simply because the conjec ture to be proved does not hold. In software verification, for example, correct versions of specifications and programs typically are obtained only after a number of failed proof attempts and subsequent error corrections. Different interactive theorem provers may actually look quite different: They may support different logics (first-or higher-order, logics of programs, type theory etc.), may be generic or special-purpose tools, or may be tar geted to different applications. Nevertheless, they share common concepts and paradigms (e.g. architectural design, tactics, tactical reasoning etc.). The aim of this chapter is to describe the common concepts, design principles, and basic requirements of interactive theorem provers, and to explore the band width of variations. Having a 'person in the loop', strongly influences the design of the proof tool: proofs must remain comprehensible, - proof rules must be high-level and human-oriented, - persistent proof presentation and visualization becomes very important.




First-Order Logic and Automated Theorem Proving


Book Description

There are many kinds of books on formal logic. Some have philosophers as their intended audience, some mathematicians, some computer scientists. Although there is a common core to all such books they will be very dif ferent in emphasis, methods, and even appearance. This book is intended for computer scientists. But even this is not precise. Within computer sci ence formal logic turns up in a number of areas, from program verification to logic programming to artificial intelligence. This book is intended for computer scientists interested in automated theorem proving in classical logic. To be more precise yet, it is essentially a theoretical treatment, not a how-to book, although how-to issues are not neglected. This does not mean, of course, that the book will be of no interest to philosophers or mathematicians. It does contain a thorough presentation of formal logic and many proof techniques, and as such it contains all the material one would expect to find in a course in formal logic covering completeness but not incompleteness issues. The first item to be addressed is, what are we talking about and why are we interested in it. We are primarily talking about truth as used in mathematical discourse, and our interest in it is, or should be, self-evident. Truth is a semantic concept, so we begin with models and their properties. These are used to define our subject.




Certified Programming with Dependent Types


Book Description

A handbook to the Coq software for writing and checking mathematical proofs, with a practical engineering focus. The technology of mechanized program verification can play a supporting role in many kinds of research projects in computer science, and related tools for formal proof-checking are seeing increasing adoption in mathematics and engineering. This book provides an introduction to the Coq software for writing and checking mathematical proofs. It takes a practical engineering focus throughout, emphasizing techniques that will help users to build, understand, and maintain large Coq developments and minimize the cost of code change over time. Two topics, rarely discussed elsewhere, are covered in detail: effective dependently typed programming (making productive use of a feature at the heart of the Coq system) and construction of domain-specific proof tactics. Almost every subject covered is also relevant to interactive computer theorem proving in general, not just program verification, demonstrated through examples of verified programs applied in many different sorts of formalizations. The book develops a unique automated proof style and applies it throughout; even experienced Coq users may benefit from reading about basic Coq concepts from this novel perspective. The book also offers a library of tactics, or programs that find proofs, designed for use with examples in the book. Readers will acquire the necessary skills to reimplement these tactics in other settings by the end of the book. All of the code appearing in the book is freely available online.




Automated Reasoning and Its Applications


Book Description

The contributors are among the world's leading researchers inautomated reasoning. Their essays cover the theory, software system design, and use of these systems to solve real problems. The primary objective of automated reasoning (which includes automated deduction and automated theorem proving) is to develop computer programs that use logical reasoning for the solution of a wide variety of problems, including open questions. The essays in Automated Reasoning and Its Applications were written in honor of Larry Wos, one of the founders of the field. Wos played a central role in forming the culture of automated reasoning at Argonne National Laboratory. He and his colleagues consistently seek to build systems that search huge spaces for solutions to difficult problems and proofs of significant theorems. They have had numerous notable successes. The contributors are among the world's leading researchers in automated reasoning. Their essays cover the theory, software system design, and use of these systems to solve real problems. Contributors Robert S. Boyer, Shang-Ching Chou, Xiao-Shan Gao, Lawrence Henschen, Deepak Kapur, Kenneth Kunen, Ewing Lusk, William McCune, J Strother Moore, Ross Overbeek, Lawrence C. Paulson, Hantao Zhang, Jing-Zhong Zhang




Interactive Theorem Proving and Program Development


Book Description

A practical introduction to the development of proofs and certified programs using Coq. An invaluable tool for researchers, students, and engineers interested in formal methods and the development of zero-fault software.