An analysis of loop checking mechanisms for logic programs
Theoretical Computer Science
Loop checks for logic programs with functions
Theoretical Computer Science
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Java Virtual Machine Specification
Java Virtual Machine Specification
A dynamic approach to characterizing termination of general logic programs
ACM Transactions on Computational Logic (TOCL)
DART: directed automated random testing
Proceedings of the 2005 ACM SIGPLAN conference on Programming language design and implementation
CUTE: a concolic unit testing engine for C
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Nontermination inference of logic programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Termination of String Rewriting Proved Automatically
Journal of Automated Reasoning
Proceedings of the 35th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Loop detection in term rewriting using the eliminating unfoldings
Theoretical Computer Science
Non-termination checking for imperative programs
TAP'08 Proceedings of the 2nd international conference on Tests and proofs
Proving and disproving termination of higher-order functions
FroCoS'05 Proceedings of the 5th international conference on Frontiers of Combining Systems
Detecting non-cyclicity by abstract compilation into boolean functions
VMCAI'06 Proceedings of the 7th international conference on Verification, Model Checking, and Abstract Interpretation
Pair-sharing analysis of object-oriented programs
SAS'05 Proceedings of the 12th international conference on Static Analysis
Automated detection of non-termination and nullpointerexceptions for Java Bytecode
FoVeOOS'11 Proceedings of the 2011 international conference on Formal Verification of Object-Oriented Software
Solving existentially quantified horn clauses
CAV'13 Proceedings of the 25th international conference on Computer Aided Verification
Hi-index | 0.00 |
Non-termination analysis proves that programs, or parts of a program, do not terminate. This is important since non-termination is often an unexpected behaviour of computer programs and exposes a bug in their code. While research has found ways of proving non-termination of logic programs and of term rewriting systems, this is hardly the case for imperative programs. In this paper, we describe and experiment with a technique for proving non-termination of imperative, bytecode programs by relating their non-termination to that of a (constraint) logic program. Moreover, we show that our non-termination test effectively helps a termination test, by avoiding expensive search for termination proofs of those portions of the code where such proofs do not exist.