Summary and exercises
This page is part of the introduction to proving metatheorems with STELF.
Take-aways
Section titled “Take-aways”The lessons you should take from this section are:
- LF’s binding structure enables elegant representations of object-language binding and hypothetical judgements.
- World declarations permit totality assertions about type families in non-empty contexts.
- Such totality assertions can be used to prove general metatheorems about object-language entities that are represented using higher-order LF encodings.
What’s next?
Section titled “What’s next?”Now that you’ve made it through this introduction, you have the basic tools you need to start proving metatheorems with STELF. You’ve seen all of the basic machinery that STELF provides, and you are in a good position to understand the other documentation on this wiki. Your next step should be to read some of the tutorials, which describe clever modes of use of the techniques we have talked about here, or to read some of the case studies, which describe interesting applications of STELF.
Test yourself
Section titled “Test yourself”Here are a few suggestions for additional explorations:
Adding features to the simply-typed lambda calculus
Section titled “Adding features to the simply-typed lambda calculus”A standard extension of the simply-typed lambda calculus is pairs:
The dynamic semantics of pairs have a number of rules, but they are all relatively straightforward:
Add these to your formalization of the simply-typed lambda calculus and extend the proof of preservation to cover this new type.
Next steps
Section titled “Next steps”You now have everything you need to start proving metatheorems with STELF! The proof techniques covered in the tutorials are likely to be valuable as you continue. If you’re interested in proving progress for the simply typed lambda calculus formulation, you’ll do well to start by learning about output factoring.