Certified programming with dependent types : a pragmatic introduction to the Coq proof assistant

Saved in:
Bibliographic Details
Main Author: Chlipala, Adam, 1981-
Format: eBook
Language: English
Published: Cambridge, MA : The MIT Press, [2013]
Subjects:
ISBN: 9780262317870
Physical Description: 1 online zdroj (xii, 424 pages)

Cover

Table of contents

LEADER 06046cam a2200385 i 4500
001 74656
003 CZ ZlUTB
005 20240911212043.0
006 m d
007 cr un
008 140309s2013 mau sb 001 0 eng d
020 |a 9780262317870  |q (ebook) 
035 |a (OCoLC)872996245  |z (OCoLC)881288988 
040 |a COO  |b eng  |c COO  |d CUS  |d IEEEE 
100 1 |a Chlipala, Adam,  |d 1981- 
245 1 0 |a Certified programming with dependent types :  |b a pragmatic introduction to the Coq proof assistant /  |c Adam Chlipala. 
264 1 |a Cambridge, MA :  |b The MIT Press,  |c [2013] 
264 4 |c ©2013 
300 |a 1 online zdroj (xii, 424 pages) 
336 |a text  |2 rdacontent 
337 |a computer  |2 rdamedia 
338 |a online resource  |2 rdacarrier 
504 |a Includes bibliographical references (pages [413]-417) and index. 
505 0 |a Machine generated contents note: 1.Introduction -- 1.1.Whence This Book? -- 1.2.Why Coq? -- 1.2.1.Based on a Higher-Order Functional Programming Language -- 1.2.2.Dependent Types -- 1.2.3.An Easy-to-Check Kernel Proof Language -- 1.2.4.Convenient Programmable Proof Automation -- 1.2.5.Proof by Reflection -- 1.3.Why Not a Different Dependently Typed Language? -- 1.4.Engineering with a Proof Assistant -- 1.5.Prerequisites -- 1.6.Using This Book -- 1.6.1.Reading This Book -- 1.6.2.The Tactic Library -- 1.6.3.Installation and Emacs Setup -- 2.Some Quick Examples -- 2.1.Arithmetic Expressions over Natural Numbers -- 2.1.1.Source Language -- 2.1.2.Target Language -- 2.1.3.Translation -- 2.1.4.Translation Correctness -- 2.2.Typed Expressions -- 2.2.1.Source Language -- 2.2.2.Target Language -- 2.2.3.Translation -- 2.2.4.Translation Correctness -- I.Basic Programming and Proving -- 3.Introducing Inductive Types -- 3.1.Proof Terms -- 3.2.Enumerations -- 3.3.Simple Recursive Types ---3.4.Parameterized Types -- 3.5.Mutually Inductive Types -- 3.6.Reflexive Types -- 3.7.An Interlude on Induction Principles -- 3.8.Nested Inductive Types -- 3.9.Manual Proofs about Constructors -- 4.Inductive Predicates -- 4.1.Propositional Logic -- 4.2.What Does It Mean to Be Constructive? -- 4.3.First-Order Logic -- 4.4.Predicates with Implicit Equality -- 4.5.Recursive Predicates -- 5.Infinite Data and Proofs -- 5.1.Computing with Infinite Data -- 5.2.Infinite Proofs -- 5.3.Simple Modeling of Nonterminating Programs -- II.Programming with Dependent Types -- 6.Subset Types and Variations -- 6.1.Introducing Subset Types -- 6.2.Decidable Proposition Types -- 6.3.Partial Subset Types -- 6.4.Monadic Notations -- 6.5.A Type-Checking Example -- 7.General Recursion -- 7.1.Well-Founded Recursion -- 7.2.A Nontermination Monad Inspired by Domain Theory -- 7.3.Co-inductive Nontermination Monads -- 7.4.Comparing the Alternatives -- 8.More Dependent Types -- 8.1.Length-Indexed Lists ---8.2.The One Rule of Dependent Pattern Matching in Coq -- 8.3.A Tagless Interpreter -- 8.4.Dependently Typed Red-Black Trees -- 8.5.A Certified Regular Expression Matcher -- 9.Dependent Data Structures -- 9.1.More Length-Indexed Lists -- 9.2.Heterogeneous Lists -- 9.2.1.A Lambda Calculus Interpreter -- 9.3.Recursive Type Definitions -- 9.4.Data Structures as Index Functions -- 9.4.1.Another Interpreter Example -- 9.5.Choosing between Representations -- 10.Reasoning about Equality Proofs -- 10.1.The Definitional Equality -- 10.2.Heterogeneous Lists Revisited -- 10.3.Type Casts in Theorem Statements -- 10.4.Heterogeneous Equality -- 10.5.Equivalence of Equality Axioms -- 10.6.Equality of Functions -- 11.Generic Programming -- 11.1.Reifying Datatype Definitions -- 11.2.Recursive Definitions -- 11.2.1.Pretty-Printing -- 11.2.2.Mapping -- 11.3.Proving Theorems about Recursive Definitions -- 12.Universes and Axioms -- 12.1.The Type Hierarchy -- 12.1.1.Inductive Definitions ---12.1.2.Deciphering Baffling Messages about Inability to Unify -- 12.2.The Prop Universe -- 12.3.Axioms -- 12.3.1.The Basics -- 12.3.2.Axioms of Choice -- 12.3.3.Axioms and Computation -- 12.3.4.Methods for Avoiding Axioms -- III.Proof Engineering -- 13.Proof Search by Logic Programming -- 13.1.Introducing Logic Programming -- 13.2.Searching for Underconstrained Values -- 13.3.Synthesizing Programs -- 13.4.More on auto Hints -- 13.5.Rewrite Hints -- 14.Proof Search in Ltac -- 14.1.Some Built-in Automation Tactics -- 14.2.Ltac Programming Basics -- 14.3.Functional Programming in Ltac -- 14.4.Recursive Proof Search -- 14.5.Creating Unification Variables -- 15.Proof by Reflection -- 15.1.Proving Evenness -- 15.2.Reifying the Syntax of a Trivial Tautology Language -- 15.3.A Monoid Expression Simplifier -- 15.4.A Smarter Tautology Solver -- 15.4.1.Manual Reification of Terms with Variables -- 15.5.Building a Reification Tactic That Recurses under Binders -- IV.The Big Picture ---16.Proving in the Large -- 16.1.Ltac Antipatterns -- 16.2.Debugging and Maintaining Automation -- 16.3.Modules -- 16.4.Build Processes -- 17.Reasoning about Programming Language Syntax -- 17.1.Dependent de Bruijn Indices -- 17.2.Parametric Higher-Order Abstract Syntax -- 17.2.1.Functional Programming with PHOAS -- 17.2.2.Verifying Program Transformations -- 17.2.3.Establishing Term Well-Formedness -- 17.2.4.A Few Additional Remarks. 
506 |a Plný text je dostupný pouze z IP adres počítačů Univerzity Tomáše Bati ve Zlíně nebo vzdáleným přístupem pro zaměstnance a studenty univerzity 
650 0 |a Automatic theorem proving  |x Computer programs. 
650 0 |a Computer programming. 
630 0 0 |a Coq (Electronic resource) 
655 7 |a elektronické knihy  |7 fd186907  |2 czenas 
655 9 |a electronic books  |2 eczenas 
776 0 8 |i Print version:  |a Chlipala, Adam, 1981-  |t Certified programming with dependent types.  |d Cambridge, MA : The MIT Press, [2013]  |z 9780262026659  |w (DLC) 2013012837  |w (OCoLC)844774277 
856 4 0 |u https://proxy.k.utb.cz/login?url=http://ieeexplore.ieee.org/xpl/bkabstractplus.jsp?bkn=6712486  |y Plný text 
992 |a BK  |c EBOOK-TN  |c MITPRESS 
999 |c 74656  |d 74656 
993 |x NEPOSILAT  |y EIZ