# 15-816 Linear Logic

## Assignment 9: Logic Programming in Linear Twelf

This homework consists of two exercises. One is mandatory, the other is optional.

Exercise: 1

Write a linear Twelf program to determine if a purely functional Mini-ML expression, (see course notes [under preparation]) is recursion-free and at the same time

1. linear (every bound variable occurs exactly once);
2. affine (every bound variable occurs at most once);
3. relevant (every bound variable occurs at least once).

Since only one branch in a case statement will be taken during evaluation, a bound variable must occur exactly once in each branch in a linear expression, may occur at most once in each branch in an affine expression, and must occur at least once in each branch in a relevant expression.

Define your judgments and rules, the representation function into LLF, show adequacy, and program your solution in linear Twelf.

Exercise 2: (extra credit)

Extend your solution from Exercise 1 to full Mini-ML with references. Expressions assigned to reference cells cannot contain free variables for any of the three properties to hold.

[ home | schedule | assignments | languages | handouts | overview | links ]

Carsten Schuermann
carsten@cs.cmu.edu