Verified functional programming in Agda /
| Main Author: | |
|---|---|
| Format: | eBook |
| Language: | English |
| Published: |
[New York] : [San Rafael, California] :
Association for Computing Machinery ; Morgan & Claypool,
2016.
|
| Edition: | First edition. |
| Series: | ACM books ;
#9. |
| Subjects: | |
| Online Access: | Connect to the full text of this electronic book |
| Abstract: | Agda is an advanced programming language based on Type Theory. Agda's type system is expressive enough to support full functional verification of programs, in two styles. In external verification, we write pure functional programs and then write proofs of properties about them. The proofs are separate external artifacts, typically using structural induction. In internal verification, we specify properties of programs through rich types for the programs themselves. This often necessitates including proofs inside code, to show the type checker that the specified properties hold. The power to prove properties of programs in these two styles is a profound addition to the practice of programming, giving programmers the power to guarantee the absence of bugs, and thus improve the quality of software more than previously possible. The book begins with an introduction to functional programming through familiar examples like booleans, natural numbers, and lists, and techniques for external verification. Internal verification is considered through the examples of vectors, binary search trees, and Braun trees. More advanced material on type-level computation, explicit reasoning about termination, and normalization by evaluation is also included. The book also includes a medium-sized case study on Huffman encoding and decoding. |
|---|---|
| Physical Description: | 1 online resource PDF (xxiv, 258 pages) Also available in print. |
| Format: | Mode of access: World Wide Web. System requirements: Adobe Acrobat Reader. |
| Bibliography: | Includes bibliographical references (pages 253-256) and index. |
| ISBN: | 9781970001259 |
| ISSN: | 2374-6777 ; |