Abstract
Techniques for proving termination and non-termination of imperative programs are usually considered as orthogonal mechanisms. In this paper, we propose a novel mechanism that analyzes and proves both program termination and non-termination at the same time. We first introduce the concept of second-order termination constraints and accumulate a set of relational assumptions on them via a Hoare-style verification. We then solve these assumptions with case analysis to determine the (conditional) termination and non- termination scenarios expressed in some specification logic form. In contrast to current approaches, our technique can construct a summary of terminating and non-terminating behaviors for each method. This enables modularity and reuse for our termination and non-termination proving processes. We have tested our tool on sample programs from a recent termination competition, and compared favorably against state-of-the-art termination analyzers.
| Original language | English |
|---|---|
| Title of host publication | PLDI '15 Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation |
| Place of Publication | New York, USA |
| Publisher | ACM |
| Pages | 489-498 |
| Volume | 50 |
| Edition | 6 |
| ISBN (Electronic) | 978-1-4503-3468-6 |
| DOIs | |
| Publication status | Published - Jun 2015 |
| Event | 36th ACM SIGPLAN Conference on Programming Language Design and Implementation - Portland, United States Duration: 13 Jun 2015 → 17 Jun 2015 |
Conference
| Conference | 36th ACM SIGPLAN Conference on Programming Language Design and Implementation |
|---|---|
| Abbreviated title | PLDI '15 |
| Country/Territory | United States |
| City | Portland |
| Period | 13/06/15 → 17/06/15 |