Proving Termination Starting from the End
Abstract
We present a novel technique for proving program termination which introduces a new dimension of modularity. Existing techniques use the program to incrementally construct a termination proof. While the proof keeps changing, the program remains the same. Our technique goes a step further. We show how to use the current partial proof to partition the transition relation into those behaviors known to be terminating from the current proof, and those whose status (terminating or not) is not known yet. This partition enables a new and unexplored dimension of incremental reasoning on the program side. In addition, we show that our approach naturally applies to conditional termination which searches for a precondition ensuring termination. We further report on a prototype implementation that advances the state-of-the-art on the grounds of termination and conditional termination.
- Publication:
-
arXiv e-prints
- Pub Date:
- February 2013
- DOI:
- 10.48550/arXiv.1302.4539
- arXiv:
- arXiv:1302.4539
- Bibcode:
- 2013arXiv1302.4539G
- Keywords:
-
- Computer Science - Logic in Computer Science
- E-Print:
- 16 pages