Combining Proofs and Programs
Programming languages based on dependent type theory promise two great advances: flexibility and security. With the type-level computation afforded by dependent types, algorithms can be more generic, as the type system can express flexible interfaces via programming. Likewise, type-level computation can also express data structure invariants, so that programs can be proved correct through type checking. Furthermore, despite these extensions, programmers already know everything. Via the Curry-Howard isomorphism, the language of type-level computation and the verification logic is the programming language itself.
- [Gri90]Griffin, T.: A formulae-as-types notion of control. In: Principles of Programming Languages (POPL 1990), pp. 47–58 (1990)Google Scholar
- [Kri09]Krivine, J.-L.: Realizability in classical logic. In: Interactive Models of Computation and Program Behaviour. Panoramas et synthèses, vol. 27, pp. 197–229. Société Mathématique de France (2009)Google Scholar
- [Kri10]Krivine, J.-L.: Realizability algebras: a program to well order R. CoRR, abs/1005.2395 (2010)Google Scholar
- [Miq10]Miquel, A.: Existential witness extraction in classical realizability and via a negative translation. Logical Methods for Computer Science (2010)Google Scholar