Lesson 264

Dependent Types & Proof Assistants

dependent types · Curry-Howard · Coq/Lean/Agda

1:00

How types that encode values turn programs into machine-checked proofs, and why that enables verified compilers, kernels, and theorems.

By the end, you can

  • Explain what distinguishes a dependent type from ordinary generics, using Vec Int 3 as the example.
  • Describe how the type of `append` encodes a length law and why the type-checker enforces it at compile time.
  • Explain why `head` on a length-0 vector is a compile-time type error, not a runtime crash.
  • State the Curry-Howard correspondence and map proposition, proof, implication, and conjunction to their programming counterparts.
  • Trace the three-stage pipeline of a proof assistant: tactics, proof term, kernel.
  • Justify why the trusted kernel is kept small, and why functions in types must be total.
  • Identify CompCert, seL4, the Four-Color Theorem, and Feit-Thompson as major verified landmarks and explain what was verified in each case.
Up next in Advanced Algorithms, Math & PL Theory
Questions or feedback?