|
Boolean Functions for Finite-Tree Dependencies (TR)Roberto Bagnara, Enea Zaffanella, Roberta Gori, and Patricia M. HillAbstractSeveral logic-based languages, such as Prolog II and its successors, SICStus Prolog and Oz, offer a computation domain including rational trees. Infinite rational trees allow for increased expressivity (cyclic terms can provide efficient representations of grammars and other useful objects) and for faster unification (due to the safe omission of the occurs-check). Unfortunately, the use of infinite rational trees has problems. For instance, many of the built-in and library predicates are ill-defined for such trees and need to be supplemented by run-time checks whose cost may be significant. In a companion paper [1] we have proposed a data-flow analysis aimed at the knowledge of those program variables (the finite variables) that will always be bound to finite terms. The analysis domain introduced in [1] correctly captures the creation and propagation of cyclic terms, but is not capable of propagating the guarantees of finiteness that come from built-in predicates and program annotations. Here we present a domain of Boolean functions that precisely captures how the finiteness of some variables influences the finiteness of other variables. This domain of finite-tree dependencies provides relational information that is important for the precision of the overall finiteness analysis. It also combines obvious similarities, interesting differences and somewhat unexpected connections with classical domains for groundness dependencies.References
Available: PDF, 300 DPI, 600 DPI, and 1200 DPI PostScript, DVI, and BibTeX entry. [Page last updated on January 14, 2002, 11:24:10.] |
|||||||
Enea Zaffanella |
Home | People | Projects | Publications | Seminars | Software | Links |