Abstract

One of the leading textbooks for formal methods is Software Foundations (SF), written by Benjamin Pierce in collaboration with others, and based on Coq. After five years using SF in the classroom, I have come to the conclusion that Coq is not the best vehicle for this purpose, as too much of the course needs to focus on learning tactics for proof derivation, to the cost of learning programming language theory. Accordingly, I have written a new textbook, Programming Language Foundations in Agda (PLFA). PLFA covers much of the same ground as SF, although it is not a slavish imitation.

Highlights

  • The most profound connection between logic and computation is a pun

  • After five years using Software Foundations (SF) in the classroom, I have come to the conclusion that Coq is not the best vehicle for this purpose, as too much of the course needs to focus on learning tactics for proof derivation, to the cost of learning programming language theory

  • That constructive proofs of preservation and progress give immediate rise to a prototype evaluator. This fact is obvious in retrospect but it is not exploited in SF nor can I find it in the literature

Read more

Summary

Introduction

The most profound connection between logic and computation is a pun. The doctrine of Propositions as Types asserts that a certain kind of formal structure may be read in two ways: either as a proposition in logic or as a type in computing. The title of this paper, and the corresponding textbook, Programming Language Foundations in Agda (PLFA) has two readings. An earlier version of that course was based on Types and Programming Languages by Pierce (2002), but my version was taught from its successor, Software Foundations (SF) by Pierce et al (2010), which is based on the proof assistance Coq (Huet et al 1997). PLFA develops lambda calculus with both raw and inherently-typed terms, permitting a comparison. PLFA is aimed at students in the last year of an undergraduate honours programme or the first year of a master or doctorate degree It aims to teach the fundamentals of operational semantics of programming languages, with -typed lambda calculus as the central example. Emphasis is put on the correspondence between the structure of a term and evidence that it is in normal form

Discussion
Proofs in Agda and Coq
Inherent typing is golden
Full Text
Published version (Free)

Talk to us

Join us for a 30 min session where you can share your feedback and ask us any queries you have

Schedule a call