Skip to content
Documentation out of dateLearn more

Tutorials

⚠️ All the tutorials on this page assume some familiarity with STELF. If you are just getting started, check out Proving metatheorems with STELF or one of the other introductions to STELF. ⚠️

These tutorials cover helpful and common STELF devices. Many of these proof techniques are also demonstrated by various case studies.

  • Strengthening - how to convince STELF that a term does not depend on some assumptions.
  • Explicit termination metrics - how to use a termination metric other than the subderivation ordering.
  • Simplifying dynamic clauses - how to streamline certain proofs about relations that introduce hypotheses.
  • Canonical forms lemma for a progress theorem - how to get this lemma for free when you can, and how to prove it explicitly using equality when you can’t.
  • Structural properties of a hypothetical judgement - how to get structural properties for free when you can, and how to prove them explicitly when you can’t.
  • Evaluation contexts - how to represent evaluation contexts as LF functions
  • User-defined constraint domains - how to make encodings more intrinsic by replacing predicates with indexing, and how to use Church-encodings to create special index types that are similar to constraint domains in that they admit non-trivial equations on their elements. For larger examples of STELF in action, see see the case studies.

These tutorials cover diagnosing and fixing STELF errors.