Author: Samuel Mimram
Publisher:
ISBN:
Category :
Languages : en
Pages : 539
Book Description
This course provides a first introduction to the Curry-Howard correspondence between programs and proofs, from a theoretical programmer's perspective: we want to understand the theory behind logic and programming languages, but also to write concrete programs (in OCaml) and proofs (in Agda). After an introduction to functional programming languages, we present propositional logic, λ-calculus, the Curry-Howard correspondence, first-order logic, Agda, dependent types and homotopy type theory.
Program = Proof
Author: Samuel Mimram
Publisher:
ISBN:
Category :
Languages : en
Pages : 539
Book Description
This course provides a first introduction to the Curry-Howard correspondence between programs and proofs, from a theoretical programmer's perspective: we want to understand the theory behind logic and programming languages, but also to write concrete programs (in OCaml) and proofs (in Agda). After an introduction to functional programming languages, we present propositional logic, λ-calculus, the Curry-Howard correspondence, first-order logic, Agda, dependent types and homotopy type theory.
Publisher:
ISBN:
Category :
Languages : en
Pages : 539
Book Description
This course provides a first introduction to the Curry-Howard correspondence between programs and proofs, from a theoretical programmer's perspective: we want to understand the theory behind logic and programming languages, but also to write concrete programs (in OCaml) and proofs (in Agda). After an introduction to functional programming languages, we present propositional logic, λ-calculus, the Curry-Howard correspondence, first-order logic, Agda, dependent types and homotopy type theory.
Program Proofs
Author: K. Rustan M. Leino
Publisher: MIT Press
ISBN: 0262375427
Category : Computers
Languages : en
Pages : 498
Book Description
This comprehensive and highly readable textbook teaches how to formally reason about computer programs using an incremental approach and the verification-aware programming language Dafny. Program Proofs shows students what it means to write specifications for programs, what it means for programs to satisfy those specifications, and how to write proofs that connect specifications and programs. Writing with clarity and humor, K. Rustan M. Leino first provides an overview of the basic theory behind reasoning about programs. He then gradually builds up to complex concepts and applications, until students are facing real programs using objects, data structures, and non-trivial recursion. To emphasize the practical nature of program proofs, all material and examples use the verification-aware programming language Dafny, but no previous knowledge of Dafny is assumed. Written in a highly readable and student-friendly style Builds up to complex concepts in an incremental manner Comprehensively covers how to write proofs and how to specify and verify both functional programs and imperative programs Uses real program text from a real programming language, not psuedo code Features engaging illustrations and hands-on learning exercises
Publisher: MIT Press
ISBN: 0262375427
Category : Computers
Languages : en
Pages : 498
Book Description
This comprehensive and highly readable textbook teaches how to formally reason about computer programs using an incremental approach and the verification-aware programming language Dafny. Program Proofs shows students what it means to write specifications for programs, what it means for programs to satisfy those specifications, and how to write proofs that connect specifications and programs. Writing with clarity and humor, K. Rustan M. Leino first provides an overview of the basic theory behind reasoning about programs. He then gradually builds up to complex concepts and applications, until students are facing real programs using objects, data structures, and non-trivial recursion. To emphasize the practical nature of program proofs, all material and examples use the verification-aware programming language Dafny, but no previous knowledge of Dafny is assumed. Written in a highly readable and student-friendly style Builds up to complex concepts in an incremental manner Comprehensively covers how to write proofs and how to specify and verify both functional programs and imperative programs Uses real program text from a real programming language, not psuedo code Features engaging illustrations and hands-on learning exercises
Certified Programming with Dependent Types
Author: Adam Chlipala
Publisher: MIT Press
ISBN: 0262545748
Category : Computers
Languages : en
Pages : 437
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.
Publisher: MIT Press
ISBN: 0262545748
Category : Computers
Languages : en
Pages : 437
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.
How to Prove It
Author: Daniel J. Velleman
Publisher: Cambridge University Press
ISBN: 0521861241
Category : Mathematics
Languages : en
Pages : 401
Book Description
Many students have trouble the first time they take a mathematics course in which proofs play a significant role. This new edition of Velleman's successful text will prepare students to make the transition from solving problems to proving theorems by teaching them the techniques needed to read and write proofs. The book begins with the basic concepts of logic and set theory, to familiarize students with the language of mathematics and how it is interpreted. These concepts are used as the basis for a step-by-step breakdown of the most important techniques used in constructing proofs. The author shows how complex proofs are built up from these smaller steps, using detailed 'scratch work' sections to expose the machinery of proofs about the natural numbers, relations, functions, and infinite sets. To give students the opportunity to construct their own proofs, this new edition contains over 200 new exercises, selected solutions, and an introduction to Proof Designer software. No background beyond standard high school mathematics is assumed. This book will be useful to anyone interested in logic and proofs: computer scientists, philosophers, linguists, and of course mathematicians.
Publisher: Cambridge University Press
ISBN: 0521861241
Category : Mathematics
Languages : en
Pages : 401
Book Description
Many students have trouble the first time they take a mathematics course in which proofs play a significant role. This new edition of Velleman's successful text will prepare students to make the transition from solving problems to proving theorems by teaching them the techniques needed to read and write proofs. The book begins with the basic concepts of logic and set theory, to familiarize students with the language of mathematics and how it is interpreted. These concepts are used as the basis for a step-by-step breakdown of the most important techniques used in constructing proofs. The author shows how complex proofs are built up from these smaller steps, using detailed 'scratch work' sections to expose the machinery of proofs about the natural numbers, relations, functions, and infinite sets. To give students the opportunity to construct their own proofs, this new edition contains over 200 new exercises, selected solutions, and an introduction to Proof Designer software. No background beyond standard high school mathematics is assumed. This book will be useful to anyone interested in logic and proofs: computer scientists, philosophers, linguists, and of course mathematicians.
Modular Specification and Verification of Object-Oriented Programs
Author: Peter Müller
Publisher: Springer
ISBN: 3540456511
Category : Computers
Languages : en
Pages : 297
Book Description
Software systems play an increasingly important role in modern societies. Smart cards for personal identi?cation, e-banking, software-controlled me- cal tools, airbags in cars, and autopilots for aircraft control are only some examples that illustrate how everyday life depends on the good behavior of software. Consequently, techniques and methods for the development of hi- quality, dependable software systems are a central research topic in computer science. A fundamental approach to this area is to use formal speci?cation and veri?cation. Speci?cation languages allow one to describe the crucial p- perties of software systems in an abstract, mathematically precise, and implementation-independent way. By formal veri?cation, one can then prove that an implementation really has the desired, speci?ed properties. Although this formal methods approach has been a research topic for more than 30 years, its practical success is still restricted to domains in which devel- ment costs are of minor importance. Two aspects are crucial to widen the application area of formal methods: – Formal speci?cation techniques have to be smoothly integrated into the software and program development process. – The techniques have to be applicable to reusable software components. This way, the quality gain can be exploited for more than one system, thereby justifying the higher development costs. Starting from these considerations, Peter Muller ̈ has developed new te- niques for the formal speci?cation and veri?cation of object-oriented so- ware. The speci?cation techniques are declarative and implementati- independent. They can be used for object-oriented design and programming.
Publisher: Springer
ISBN: 3540456511
Category : Computers
Languages : en
Pages : 297
Book Description
Software systems play an increasingly important role in modern societies. Smart cards for personal identi?cation, e-banking, software-controlled me- cal tools, airbags in cars, and autopilots for aircraft control are only some examples that illustrate how everyday life depends on the good behavior of software. Consequently, techniques and methods for the development of hi- quality, dependable software systems are a central research topic in computer science. A fundamental approach to this area is to use formal speci?cation and veri?cation. Speci?cation languages allow one to describe the crucial p- perties of software systems in an abstract, mathematically precise, and implementation-independent way. By formal veri?cation, one can then prove that an implementation really has the desired, speci?ed properties. Although this formal methods approach has been a research topic for more than 30 years, its practical success is still restricted to domains in which devel- ment costs are of minor importance. Two aspects are crucial to widen the application area of formal methods: – Formal speci?cation techniques have to be smoothly integrated into the software and program development process. – The techniques have to be applicable to reusable software components. This way, the quality gain can be exploited for more than one system, thereby justifying the higher development costs. Starting from these considerations, Peter Muller ̈ has developed new te- niques for the formal speci?cation and veri?cation of object-oriented so- ware. The speci?cation techniques are declarative and implementati- independent. They can be used for object-oriented design and programming.
Programming Languages and Systems
Author: Matthias Felleisen
Publisher: Springer
ISBN: 3642370365
Category : Computers
Languages : en
Pages : 635
Book Description
This book constitutes the refereed proceedings of the 22nd European Symposium on Programming, ESOP 2013, held as part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2013, which took place in Rome, Italy, in March 2013. The 31 papers, presented together with a full-length invited talk, were carefully reviewed and selected from 120 full submissions. The contributions have been organized according to ten topical sections on programming techniques; programming tools; separation logic; gradual typing; shared-memory concurrency and verification; process calculi; taming concurrency; model checking and verification; weak-memory concurrency and verification; and types, inference, and analysis.
Publisher: Springer
ISBN: 3642370365
Category : Computers
Languages : en
Pages : 635
Book Description
This book constitutes the refereed proceedings of the 22nd European Symposium on Programming, ESOP 2013, held as part of the European Joint Conferences on Theory and Practice of Software, ETAPS 2013, which took place in Rome, Italy, in March 2013. The 31 papers, presented together with a full-length invited talk, were carefully reviewed and selected from 120 full submissions. The contributions have been organized according to ten topical sections on programming techniques; programming tools; separation logic; gradual typing; shared-memory concurrency and verification; process calculi; taming concurrency; model checking and verification; weak-memory concurrency and verification; and types, inference, and analysis.
The Programming and Proof System ATES
Author: Armand Puccetti
Publisher: Springer Science & Business Media
ISBN: 3642845428
Category : Computers
Languages : en
Pages : 349
Book Description
Today, people use a large number of "systems" ranging in complexity from washing machines to international airline reservation systems. Computers are used in nearly all such systems: accuracy and security are becoming increasingly essential. The design of such computer systems should make use of development methods as systematic as those used in other engineering disciplines. A systematic development method must provide a way of writing specifications which are both precise and concise; it must also supply a way of relating design to specification. A concise specification can be achieved by restricting attention to what a system has to do: all considerations of implementation details are postponed. With computer systems, this is done by: 1) building an abstract model of the system -operations being specified by pre-and post-conditions; 2) defining languages by mapping program texts onto some collection of objects modelizing the concepts of the system to be dealt with, whose meaning is understood; 3) defining complex data objects in terms of abstractions known from mathematics. This last topic, the use of abstract data types, pervades all work on specifications and is necessary in order to apply ideas to systems of significant complexity. The use of mathematics based notations is the best way to achieve precision. 1.1 ABSTRACT DATA TYPES, PROOF TECHNIQUES From a practical point of view, a solution to these three problems consists to introduce abstract data types in the programming languages, and to consider formal proof methods.
Publisher: Springer Science & Business Media
ISBN: 3642845428
Category : Computers
Languages : en
Pages : 349
Book Description
Today, people use a large number of "systems" ranging in complexity from washing machines to international airline reservation systems. Computers are used in nearly all such systems: accuracy and security are becoming increasingly essential. The design of such computer systems should make use of development methods as systematic as those used in other engineering disciplines. A systematic development method must provide a way of writing specifications which are both precise and concise; it must also supply a way of relating design to specification. A concise specification can be achieved by restricting attention to what a system has to do: all considerations of implementation details are postponed. With computer systems, this is done by: 1) building an abstract model of the system -operations being specified by pre-and post-conditions; 2) defining languages by mapping program texts onto some collection of objects modelizing the concepts of the system to be dealt with, whose meaning is understood; 3) defining complex data objects in terms of abstractions known from mathematics. This last topic, the use of abstract data types, pervades all work on specifications and is necessary in order to apply ideas to systems of significant complexity. The use of mathematics based notations is the best way to achieve precision. 1.1 ABSTRACT DATA TYPES, PROOF TECHNIQUES From a practical point of view, a solution to these three problems consists to introduce abstract data types in the programming languages, and to consider formal proof methods.
Language Architectures and Programming Environments
Author: Tadao Ichikawa
Publisher: World Scientific
ISBN: 9789810210120
Category : Computers
Languages : en
Pages : 310
Book Description
This book contains articles on advanced topics in language architectures and programming environments. The chapters are written by distinctive leaders in their respective research fields. The original articles and reprints are enhanced by the editors' descriptions which are intended to guide the reader. The book will be of immense use to computer science students, computer system architects and designers, and designers of programming environments, requiring a deep and broad knowledge of these fields.
Publisher: World Scientific
ISBN: 9789810210120
Category : Computers
Languages : en
Pages : 310
Book Description
This book contains articles on advanced topics in language architectures and programming environments. The chapters are written by distinctive leaders in their respective research fields. The original articles and reprints are enhanced by the editors' descriptions which are intended to guide the reader. The book will be of immense use to computer science students, computer system architects and designers, and designers of programming environments, requiring a deep and broad knowledge of these fields.
Program Testing Versus Proofs of Correctness
Author: William E. Howden
Publisher:
ISBN:
Category :
Languages : en
Pages : 38
Book Description
Publisher:
ISBN:
Category :
Languages : en
Pages : 38
Book Description
Deductive Program Design
Author: Manfred Broy
Publisher: Springer Science & Business Media
ISBN: 9783540609476
Category : Computers
Languages : en
Pages : 490
Book Description
Advanced research on the description of distributed systems and on design calculi for software and hardware is presented in this volume. Distinguished researchers give an overview of the latest state of the art.
Publisher: Springer Science & Business Media
ISBN: 9783540609476
Category : Computers
Languages : en
Pages : 490
Book Description
Advanced research on the description of distributed systems and on design calculi for software and hardware is presented in this volume. Distinguished researchers give an overview of the latest state of the art.