Predicate abstraction and CEGAR for disproving termination of Higher-Order functional programs

19Citations
Citations of this article
10Readers
Mendeley users who have this article in their library.

Abstract

We propose an automated method for disproving termination of higher-order functional programs. Our method combines higherorder model checking with predicate abstraction and CEGAR. Our predicate abstraction is novel in that it computes a mixture of under- and overapproximations. For non-determinism of a source program (such as random number generation), we apply underapproximation to generate a subset of the actual branches, and check that some of the branches in the abstract program is non-terminating. For operations on infinite data domains (such as integers), we apply overapproximation to generate a superset of the actual branches, and check that every branch is nonterminating. Thus, disproving non-termination reduces to the problem of checking a certain branching property of the abstract program, which can be solved by higher-order model checking. We have implemented a prototype non-termination prover based on our method and have confirmed the effectiveness of the proposed approach through experiments.

Cite

CITATION STYLE

APA

Kuwahara, T., Sato, R., Unno, H., & Kobayashi, N. (2015). Predicate abstraction and CEGAR for disproving termination of Higher-Order functional programs. In Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics) (Vol. 9207, pp. 287–303). Springer Verlag. https://doi.org/10.1007/978-3-319-21668-3_17

Register to see more suggestions

Mendeley helps you to discover research relevant for your work.

Already have an account?

Save time finding and organizing research with Mendeley

Sign up for free