Computation and Deduction (15-499B)
- Instructor: Frank Pfenning, fp@cs, WeH 8127, x8-6343
- Times: TuTh 12:00-1:20 (whenever scheduled---please contact instructor)
- Room: WeH 5205
- Credits: 9
- Next Meeting: Thursday, Oct 27
- Current Assignment: See here
This course explores the theory of programming languages following a novel
approach where all aspects (language definitions, implementations, and proofs
of language properties) are implemented in the Elf meta-language. The Elf
implementation and all course materials are available on-line and allow
experimentation with different language features and implementation
techniques. After completing the course students should have developed
- an understanding of principles of language design;
- technique for language specification and implementation;
- expertise in proving properties of languages and their implementations;
- a pragmatic understanding of the Elf meta-language.
The course begins with a study of the functional language Mini-ML followed by
an introduction to the Elf meta-language. We then show how Elf can be used to
formalize the theory of Mini-ML, including some aspects of compilation and
correctness proofs for Mini-ML programs. We then discuss the foundation of
logic programming and advanced type system design for programming languages.
Course Notes and Assignments
Hardcopies of the course notes will be handed out. Material connected with
the course is available on-line, currently in the CS domain, in the directory
/afs/cs.cmu.edu/user/fp/courses/94b-comp-ded/
This includes assignments, current reading,
and the current version of the complete notes.
Prerequisites
15-312 (Principles of Programming Languages) or permission by the
instructor.
Credit
Grades will be based on weekly homework (50%) which will include some
programming assignments and a term paper (50%).
Secretary
Marge Profeta, profeta@cs.cmu.edu, WeH 8110, x8-5025
Course Outline
0 Introduction and Overview
1 Mini-ML
1.1 Operational Semantics
1.2 Value Soundness
1.3 Type System
1.4 Type Preservation
2 Formalization in a Logical Framework
2.1 Higher-Order Abstract Syntax
2.2 Judgments as Types
2.3 Higher-Level Judgments
2.4 The LF Type Theory
3 The Elf Programming Language
3.1 A Mini-ML Interpreter
3.2 An Implementation of Value Soundness
3.3 Mini-ML Type Inference
3.4 An Implementation of Type Preservation
4 Aspects of Compilation
4.1 Abstract Machines
4.2 Compilation
4.3 Compiler Correctness
5 Formal Specifications
5.1 Natural Deduction
5.2 Propositions as Types and Proofs as Programs
5.3 Induction and Primitive Recursion
5.4 Total Correctness
6 Logic Programming
6.1 Canonical Derivations and Proof Search
6.2 Uniform Proofs
6.3 Constraint Logic Programming
6.3 Unification
7 Advanced Type Systems
7.1 Explicit Polymorphism
7.2 The Calculus of Constructions
7.3 Subtyping and Intersection Types