Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
Proving program termination
Cook B., Podelski A., Rybalchenko A. Communications of the ACM54 (5):88-98,2011.Type:Article
Date Reviewed: Jul 8 2011

For decades, the best approach to attacking the decision problem (proving whether a given program will terminate in a finite amount of time) has been to use monolithic ranking functions. These are usually a combination of a conditional coupled with arithmetic functions in the natural numbers domain. Even for simple programs, however, this approach can be difficult. According to Cook et al., several alternatives exist.

We can add modularity by using disjunctive arguments, which we can further improve by using assertion statements during compile time. We can do so even if complete assertion checking during compile time is itself an undecidable problem, but falls within an easier class of difficulty than termination.

Implementation of disjunctive termination arguments can be through refinement, where it is started with a ranking function, which, if unsuccessful, we may further refine with another ranking function that has a broader (or more complex) domain, and so on. Another way is through variance analysis, meaning that we use a finite amount of ranking functions, and then use a synthesis tool to check that each ranking function is well founded. This last approach always terminates (as opposed to the refinement method), but may return “don’t know” in cases where the refinement-based method succeeds.

Cook et al. also mention future directions, such as dynamically allocated heaps and nonlinear systems (akin somehow to multi-threading systems), and liveness as opposed to static systems, to prevent crash dumps.

I strongly recommend this paper to researchers in artificial intelligence and operating systems developers; however, it is clearly written so any computer specialist or advanced undergraduate could read it.

Reviewer:  Arturo Ortiz-Tapia Review #: CR139221 (1112-1327)
Bookmark and Share
  Reviewer Selected
Featured Reviewer
 
 
Automatic Programming (I.2.2 )
 
 
Deduction And Theorem Proving (I.2.3 )
 
 
Software/ Program Verification (D.2.4 )
 
 
Specifying And Verifying And Reasoning About Programs (F.3.1 )
 
Would you recommend this review?
yes
no
Other reviews under "Automatic Programming": Date
A 15 year perspective on automatic programming
Balzer R. IEEE Transactions on Software Engineering SE-11(11): 1257-1268, 1985. Type: Article
Apr 1 1986
Domain-specific automatic programming
Barstow D. IEEE Transactions on Software Engineering SE-11(11): 1321-1336, 1985. Type: Article
Jul 1 1987
Genetic programming
Koza J., MIT Press, Cambridge, MA, 1992. Type: Book (9780262111706)
Feb 1 1994
more...

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy