Today’s lecture presented the final component in the quartet of type/term interaction: after first-class functions, parameterized types, and polymorphic terms, we have types that depend on the value of terms. Numerical examples include type-safe vectors and matrices; but dependent types can also be used to strengthen the deep embedding of domain-specific languages into a host meta-language. Examples given included typed lambda-terms and logical formulas. The lecture also touched on the Curry-Howard correspondence of propositions-as-types and the use of dependently-typed programming in the machine-assisted proof of mathematical theorems. Finally, there were some references to dependently-typed languages for writing and verifying programs that are correct-by-construction.
Link: Slides for Lecture 18
This is the same as for the last lecture. Tuesday will be an exam review lecture where I shall go through past exam questions or topics from those nominated by you.
- Go to the exams page, read it, then download and look through the past papers.
- Pick out specific questions, part-questions, or topics to nominate for the review lecture.
- Post them to the mailing list, the Facebook page, or as a comment on this blog entry.
Please note that some past questions address topics not covered this year: naturally, those areas won’t appear on the exam.
|The Coq Proof Assistant
Recipient in 2013 of both the ACM SIGPLAN Programming Languages Software Award and the ACM Software System Award.
Links: Coq home page, documentation and tutorials
A dependently typed functional programming language, and also an interactive proof assistant.
Link: Agda home page
|The F★ Project
Several remarkable applications of dependently-typed programming for verification, distributed programming, cryptographic protocols, and more.
|ACM Notices — Special Issue on Formal Proof, November 2008
Includes Georges Gonthier explaining his Coq proof of the four-colour theorem.
Links: ACM Notices Special Issue, four-colour theorem, complete issue as PDF
|Types and Semantics for Programming Languages
Taught course using the executable textbook Software Foundations.
Link: Course home page, Software Foundations