Lecture 6: Dependent Types

Title SlideThis lecture completes the quartet of type/term interactions: after first-class functions, parameterized types, and polymorphic terms, we have types that depend on the value of terms. Numerical examples include types to capture vector lengths and matrix dimensions. 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 seen earlier in Wadler’s talk, 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 6

Homework

Choose your assignment topic and work on the preliminary report for next Friday. Details on what to submit, and how, are in the coursework instructions. There will be no APL lecture on Tuesday.

References

Coq home page screenshot 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
Agda home page screenshot Agda
A dependently typed functional programming language, and also an interactive proof assistant
Link: Agda home page
Idris logo Idris
A general purpose purpose pure functional programming language with dependent types.
Link: Idris home page
Screenshot of F* home page The F Programming Language
Several remarkable applications of dependently-typed programming for verification, distributed programming, cryptographic protocols, and more.
Links: The F language, interactive tutorial
Cover of ACM Notices 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
Plagiarism checking servers

I’m quite sincere in my concern that Turnitin and the like are subversively redefining conceptions of learning and authenticity to fit an attractive business model. More immediately, here are links to some of the items I mentioned during the lecture.

  • You can read the Turnitin license requirement for UK users by requesting a new account and inspecting the 5000-word text in the small scrolling box at the bottom. In particular:

    If You submit a paper or other content in connection with the Services, You hereby grant to Turnitin, its affiliates, vendors, service providers, and licensors a non-exclusive, royalty-free, perpetual, worldwide, irrevocable license to use such papers, as well as feedback and results, for the limited purposes of a) providing the Services, and b) for improving the quality of the Services generally.

    Turnitin’s database of student writing is one of its key commercial assets compared to any competitors. Still, that “limited purpose” of providing “services” — just plagiarism checking, yes?

    You acknowledge and agree that the form and nature of the Services and the Site which Turnitin provides may change from time to time without prior notice to You.

    Well, anything then.

  • The university requiring alternatives to Turnitin is McGill, following high-profile objections from individual students. You can see their policy on this; more recently they have in any case terminated their contract with the service.

  • At least it’s not the Viper plagiarism scanner. That’s the one which takes submitted work and then redistributes it to other students across a network of online essay mills.

Leave a comment