15-816 Linear Logic
Our linear functional language is still quite rudimentary because it lacks any non-trivial datatypes. We consider the addition of recursive types which makes it much more practical but, unfortunately, destroys the isomorphism between propositions and types. In particular, with recursive types not all computations terminate, which means that not every well-typed proof term has a normal form.
We go through some examples and also show that, without recursive types, all computations terminate. This illustrates the important proof technique of using a logical relation.