Retrograde Program Analysis: A Practical Tutorial
Abstract
Retrograde analysis reads programs from the end to the beginning: treat statements as constraints on prior states, propagate sets of states backward, and compare the reachable inputs with the intended specification. This tutorial condenses a longer exposition to a focused guide with definitions, worked examples (toy branches, sorting networks, binary search), loop treatment via fixpoints, and a range-algebra appendix that standardizes array splits and midpoints. The aim is practical: short proofs, concrete invariants, and drop-in code and property tests
Cite
@article{arxiv.1006.2534,
title = {Retrograde Program Analysis: A Practical Tutorial},
author = {Aleksandar Perisic},
journal= {arXiv preprint arXiv:1006.2534},
year = {2025}
}
Comments
The reason is that I tried to compress the previous long article into a more condensed version, after which I realized that overall it is no longer an article of any significant value and is definitely obsolete, as this subject went another way and this is neither a reference nor historically significant, nor ever was. It is more of a personal note, but its usability is 0