Formal Development of Programs and Proofs


Book Description

In 1987, The University of Texas at Austin sponsored the Year of Programming, which consisted of six institutes on selected topics in computer programming. Leading scientists and practitioners were invited from around the world for lectures and tutorials, for discussion and collaboration. The general objectives of these institutes were to advance the art and science of programming and to disseminate the best of what is known about programming theory and practice.







Types for Proofs and Programs


Book Description

The 17 revised full papers presented here cover all current issues of formal reasoning and computer programming based on type theory are addressed; in particular languages and computerised tools for reasoning, and applications in several domains such as analysis of programming languages, certified software, formalisation of mathematics and mathematics education.




The Correctness-by-Construction Approach to Programming


Book Description

The focus of this book is on bridging the gap between two extreme methods for developing software. On the one hand, there are texts and approaches that are so formal that they scare off all but the most dedicated theoretical computer scientists. On the other, there are some who believe that any measure of formality is a waste of time, resulting in software that is developed by following gut feelings and intuitions. Kourie and Watson advocate an approach known as “correctness-by-construction,” a technique to derive algorithms that relies on formal theory, but that requires such theory to be deployed in a very systematic and pragmatic way. First they provide the key theoretical background (like first-order predicate logic or refinement laws) that is needed to understand and apply the method. They then detail a series of graded examples ranging from binary search to lattice cover graph construction and finite automata minimization in order to show how it can be applied to increasingly complex algorithmic problems. The principal purpose of this book is to change the way software developers approach their task at programming-in-the-small level, with a view to improving code quality. Thus it coheres with both the IEEE’s Guide to the Software Engineering Body of Knowledge (SWEBOK) recommendations, which identifies themes covered in this book as part of the software engineer’s arsenal of tools and methods, and with the goals of the Software Engineering Method and Theory (SEMAT) initiative, which aims to “refound software engineering based on a solid theory.”




Understanding Formal Methods


Book Description

This is an excellent introduction to formal methods which will bring anyone who needs to know about this important topic up to speed. It is comprehensive, giving the reader all the information needed to explore the field of formal methods in more detail. It offers: a guide to the mathematics required; comprehensive but easy-to-understand introductions to various methods; a run-down of how formal methods can help to develop high-quality systems that come in on time, within budget, and according to requirements.







Proof Theory and Automated Deduction


Book Description

Interest in computer applications has led to a new attitude to applied logic in which researchers tailor a logic in the same way they define a computer language. In response to this attitude, this text for undergraduate and graduate students discusses major algorithmic methodologies, and tableaux and resolution methods. The authors focus on first-order logic, the use of proof theory, and the computer application of automated searches for proofs of mathematical propositions. Annotation copyrighted by Book News, Inc., Portland, OR




COMPUTER ALGORITHMS


Book Description

The book is self-contained and includes the desired mathematical background. The book covers most of the data structures and classical graphs algorithms, string algorithms, matroid algorithms, linear algebra algorithms, flow and circulation algorithms, linear programming solvers, and integer algorithms. It covers several topics which are rarely covered in the existing textbooks. Pseudocode is provided for every algorithm. Proof of correctness and the complexity analysis is given for every algorithm. Examples are also provided to help explain several algorithms. The book is designed for an introductory as well as an advance course in the design and analysis of algorithms. It is intended for undergraduate as well as postgraduate students of computer science and engineering. Some of the topics covered in the book are as follows. i) String homomorphism and isomorphism ii) Detailed proof of graph matching algorithm including augmenting path computation iii) Gallai Edmonds decomposition algorithm iv) Matroid Intersection algorithm Klein’s Cycle Cancellation algorithm and Goldberg-Karp’s Minimum Cost Circulation algorithm v) Lower-triangular Upper-triangular decomposition of a matrix using Gaussian Elimination Interior Point method for Linear Programs using Primal-Dual technique vi) Minimum weight Graph Matching algorithm vii) Schonhage-Strassen’s algorithm for integer multiplication and Agarwal-Kayal-Saxena’s algorithm for primality testing




Verification of Sequential and Concurrent Programs


Book Description

HIS BOOK CONTAINS a most comprehensive text that presents syntax-directed and compositional methods for the formal veri?- T cation of programs. The approach is not language-bounded in the sense that it covers a large variety of programming models and features that appear in most modern programming languages. It covers the classes of - quential and parallel, deterministic and non-deterministic, distributed and object-oriented programs. For each of the classes it presents the various c- teria of correctness that are relevant for these classes, such as interference freedom, deadlock freedom, and appropriate notions of liveness for parallel programs. Also, special proof rules appropriate for each class of programs are presented. In spite of this diversity due to the rich program classes cons- ered, there exist a uniform underlying theory of veri?cation which is synt- oriented and promotes compositional approaches to veri?cation, leading to scalability of the methods. The text strikes the proper balance between mathematical rigor and - dactic introduction of increasingly complex rules in an incremental manner, adequately supported by state-of-the-art examples. As a result it can serve as a textbook for a variety of courses on di?erent levels and varying durations. It can also serve as a reference book for researchers in the theory of veri?- tion, in particular since it contains much material that never before appeared in book form. This is specially true for the treatment of object-oriented p- grams which is entirely novel and is strikingly elegant.