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 |