# Summer school 2008

From The Twelf Project

This page contains course materials for the Twelf course at the University of Oregon Summer School on Logic and Theorem Proving in Programming Languages, July 2008. In this course, you will learn to represent deductive systems in LF and prove metatheorems about them with Twelf.

## New: Feedback Form

Please fill out our feedback form!

## Get Twelf

Pre-built binaries of Twelf are available for most operating systems through the Twelf Night(ly).

Otherwise:

- you can build Twelf from the source tarball. You will need MLton or sml/nj.
- you can make yourself an account on the wiki, and do the exercises on your User:<login> page (linked at the top after you log in).

Then see Twelf with Emacs for the basics of interacting with Twelf. (You can also use Twelf without Emacs, by interacting with the Twelf server directly.)

## Lectures and Labs (slides)

### Class 1: Overview

- Arithmetic expressions
- Arithmetic expressions with let-binding
- Variation: Call-by-value let-binding syntax
- Variation: Defining evaluation with a hypothetical judgement

- Typed arithmetic expressions

### Class 2: Representation

- Mechanizing Metatheory in a Logical Framework discusses this material in detail.
- Exercises 2

### Class 3: Mechanizing Metatheory

## Additional reading

- PFPL: We will use Practical Foundations for Programming Languages as a reference for basic PL concepts.
- MMLF: Mechanizing Metatheory in a Logical Framework discusses LF, representation, and mechanized metatheory in technical detail.
- Proving metatheorems with Twelf is a self-contained intro tutorial on this wiki.
- After you get spun up, there are lots of tutorials and case studies.