15-851
Computation & Deduction
Spring 1997
Frank Pfenning
Suggested Projects
The project should consist of a term paper and an implementation in Elf.
The term paper should summarize and explain a piece of research in the
theory of programming languages or logics. Typically, the informal
development follows a given research paper or report. The Elf
implementation should formalize the language, judgments, algorithms, and
metatheory to the extent that this is feasible for a term project.
Each student should propose his or her own term project. Some topics
are suggested below, but they should not be considered as canonical or
exhaustive. For bibliographic references (under permanent
construction), please see the
DVI,
PostScript, or
PDF version of the file, or the
BibTeX source.
- A calculus of explicit substitutions [Abadi, Cardelli, Curien, & Levy 91]
- A calculus of objects [Abadi & Cardelli 94]
- Coherence of a language with subtyping and implicit coercions [Breazu-Tannen, Coquand, Gunter, & Scedrov 91]
- A lambda-calculus with intersection types [Coppo, Dezani-Ciancaglini, & Venneri 81] [Reynolds 91]
- A logic for parametricity [Plotkin & Abadi 93]
- A lambda-calculus with names [Odersky 94]
- First-order unification [Snyder & Gallier 88]
- Higher-order logic programming [Miller, Nadathur, Pfenning, & Scedrov 91]
- Program analysis and optimization
- Binding-time analysis [Nielson & Nielson 92] [Davies & Pfenning 96]
[Davies 96] [Hatcliff 96]
- Abstract interpretation [Cousot & Cousot 77]
- Strictness analysis [Hankin & Metayer 94]
- The Categorical Abstract Machine [Cousineau, Curien, & Mauny 87]
- Closure conversion and lambda-lifting [Reynolds 72]
- Extending Mini-ML (each topic below is a possible separate
project)
- with exceptions
- with references
- with general datatype definitions
- overloading and typecase
- Mini-Forsythe [Reynolds 88]
- Elementary notions of rewrite systems [Bachmair 91]
- Modal logic and Kripke semantics [Basin, Matthews, Vigano 96]
- Polymorphic recursion and semi-unification [Henglein 93, TOPLAS]
- Lazy evaluation [Launchbury 93]
- Pure functional programming and monads [Filinski 94]
- Evaluation based on evaluation contexts [Felleisen]
- Logical interpretations [Goedel, Friedman]
- Linear logic [Girard 87, Pfenning 96]
- Computational interpretations of classical logic [Ong 96, Ong & Stewart 97]
- Pi-calculus [Milner]
- Theorem proving
- via tactics
- via iterative deepening
- other methods
- induction
- Presburger arithmetic
- decision procedures for fragments
- Elementary category theory [Rydeheard & Burstall, Gehrke]
- Type-directed compilation [Morrisett 95]
- Shape types [Fradet & Metayer 97]
- Relational parametricity and units of measure [Kennedy 97]
- Type directed partial evaluation [Danvy 96]
- Typed closure conversion [Minamide, Morrisett, Harper 96]
- Call-by-value lambda-calculus [Plotkin 75, Sabry & Wadler 96]
- Call-by-need lambda-calculus [Ariola et al 95]
- Recursive types [Abadi & Fiore 96]
- ``Logical'' logic program compilation [Pfenning 97]
- LF in Elf
- Elf in Elf
©
Frank Pfenning 1992-1997
fp@cs