**by Adam Chlipala**

DescriptionTable of ContentsDetailsHashtagsReport an issue ### Book Description

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. ### Table of Contents

### Book Details

### Related Books

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.

This open book is licensed under a Creative Commons License (CC BY-NC-ND). You can download Certified Programming with Dependent Types ebook for free in PDF format (4.3 MB).

Chapter 1

Introduction

Chapter 2

Some Quick Examples

Chapter 3

Introducing Inductive Types

Chapter 4

Inductive Predicates

Chapter 5

Infinite Data and Proofs

Chapter 6

Subset Types and Variations

Chapter 7

General Recursion

Chapter 8

More Dependent Types

Chapter 9

Dependent Data Structures

Chapter 10

Reasoning About Equality Proofs

Chapter 11

Generic Programming

Chapter 12

Universes and Axioms

Chapter 13

Proof Search by Logic Programming

Chapter 14

Proof Search in Ltac

Chapter 15

Proof by Reflection

Chapter 16

Proving in the Large

Chapter 17

A Taste of Reasoning About Programming Language Syntax

Subject

Computer Science

Publisher

MIT Press

Published

2019

Pages

368

Edition

1

Language

English

ISBN13 Digital

9780262026659

ISBN10 Digital

0262026651

PDF Size

4.3 MB

License

This fourth Edition presents new examples on submodules, derived type i/o, object oriented programming, abstract interfaces and procedure pointers, C interop, sorting and searching, statistics and converting to more modern versions of Fortran.Key FeaturesHighlights the core language features of modern Fortran including data typing, array processing...

This book is a modern guide for all C++ programmers to learn Threading Building Blocks (TBB). Written by TBB and parallel programming experts, this book reflects their collective decades of experience in developing and teaching parallel programming with TBB, offering their insights in an approachable manner. Throughout the book the authors present ...

This book presents computer programming as a key method for solving mathematical problems. This second edition of the well-received book has been extensively revised: All code is now written in Python version 3.6 (no longer version 2.7). In addition, the two first chapters of the previous edition have been extended and split up into five new chapte...

Resilient T-SQL code is code that is designed to last, and to be safely reused by others. The goal of defensive database programming, the goal of this book, is to help you to produce resilient T-SQL code that robustly and gracefully handles cases of unintended use, and is resilient to common changes to the database environment.
Too often as deve...

Mobile devices such as smartphones and tablets are set to become the main computers that virtually all people will own and carry with them at all times. And yet,mobile devices are not yet used for all computing tasks. A project at Microsoft Research was created to answer a simple question: "It is possible to create interesting apps directly on...

This book presents computer programming as a key method for solving mathematical problems. There are two versions of the book, one for MATLAB and one for Python. The book was inspired by the Springer book TCSE 6: A Primer on Scientific Programming with Python (by Langtangen), but the style is more accessible and concise, in keeping with the needs o...