Step-indexing
Step-indexing is a semantic technique for reasoning about programs with recursion, guarded recursion, or recursive types.
When used within proof assistants, step-indexing is also known as the gas pattern (see e.g. Wadler, Kokke and Siek 2022 or the fuel pattern (see e.g. Lennon-Bertrand et al. 2020).
References
- The technique of step-indexing seems to have originated in the following paper.
@article{appel_2001,
title = {An indexed model of recursive types for foundational proof-carrying code},
volume = {23},
doi = {10.1145/504709.504712},
number = {5},
journal = {ACM Transactions on Programming Languages and Systems},
author = {Appel, Andrew W. and McAllester, David},
year = {2001},
pages = {657--683}
}
- The name gas pattern famously occurs in the untyped lambda calculus chapter of the PLFA book:
@Book{plfa22.08,
author = {Philip Wadler and Wen Kokke and Jeremy G. Siek},
title = {Programming Language Foundations in {A}gda},
year = {2022},
month = aug,
url = {https://plfa.inf.ed.ac.uk/20.08/},
}
- The name fuel pattern occurs in the following paper: