Results 1 -
6 of
6
Incremental tabling for query-driven propagation of logic program updates
- In LPAR-19. LNCS ARCoSS
"... Abstract. We foster a novel implementation technique for logic program up-dates, which exploits incremental tabling in logic programming – using XSB Pro-log to that effect. Propagation of updates of fluents is controlled by initially keep-ing any fluent updates pending in the database. And, on the i ..."
Abstract
-
Cited by 11 (11 self)
- Add to MetaCart
(Show Context)
Abstract. We foster a novel implementation technique for logic program up-dates, which exploits incremental tabling in logic programming – using XSB Pro-log to that effect. Propagation of updates of fluents is controlled by initially keep-ing any fluent updates pending in the database. And, on the initiative of queries, making active just those updates up to the timestamp of an actual query, by per-forming incremental assertions of the pending ones. These assertions, in turn, au-tomatically trigger system-implemented incremental bottom-up tabling of other fluents (or their negated complements), with respect to a predefined overall up-per time limit, in order to avoid runaway iteration. The frame problem can then be dealt with by inspecting a table for the latest time a fluent is known to be as-suredly true, i.e., the latest time it is not supervened by its negated complement, relative to the given query time. To do so, we adopt the dual program transfor-mation for defining and helping propagate, also incrementally and bottom-up, the negated complement of a fluent, in order to establish whether a fluent is still true at some time point, or rather if its complement is. The use of incremental tabling in this approach affords us a form of controlled, but automatic, system level truth-maintenance, up to some actual query time. Consequently, propagation of update side-effects need not employ top-down recursion or bottom-up iteration through a logically defined frame axiom, but can be dealt with by the mechanics of the underlying world. Our approach thus reconciles high-level top-down deliberative reasoning about a query, with autonomous low-level bottom-up world reactivity to ongoing updates, and it might be adopted elsewhere for reasoning in logic.
.QL: Object-Oriented Queries Made Easy
"... These notes are an introduction to.QL, an object-oriented query language for any type of structured data. We illustrate the use of.QL in assessing software quality, namely to find bugs, to compute metrics and to enforce coding conventions. The class mechanism of.QL is discussed in depth, and we dem ..."
Abstract
-
Cited by 3 (0 self)
- Add to MetaCart
(Show Context)
These notes are an introduction to.QL, an object-oriented query language for any type of structured data. We illustrate the use of.QL in assessing software quality, namely to find bugs, to compute metrics and to enforce coding conventions. The class mechanism of.QL is discussed in depth, and we demonstrate how it can be used to build libraries of reusable queries.
Efficiently updating IDE-based data-flow analyses in response to incremental program changes
, 2013
"... ..."
Query Technologies and Applications for . . .
"... Industrial software systems are large and complex, both in terms of the software entities and their relationships. Consequently, understanding how a software system works requires the ability to pose queries over the design-level entities of the system. Traditionally, this task has been supported by ..."
Abstract
- Add to MetaCart
Industrial software systems are large and complex, both in terms of the software entities and their relationships. Consequently, understanding how a software system works requires the ability to pose queries over the design-level entities of the system. Traditionally, this task has been supported by simple tools (e.g., grep) combined with the programmer’s intuition and experience. Recently, however, specialized code query technologies have matured to the point where they can be used in industrial situations, providing more intelligent, timely, and efficient responses to developer queries. This working session aims to explore the state of the art in code query technologies, and discover new ways in which these technologies may be useful in program comprehension. The session brings together researchers and practitioners. We survey existing techniques and applications, trying to understand the strengths and weaknesses of the various approaches, and sketch out new frontiers that hold promise.
Reviser: Efficiently Updating IDE-/IFDS-Based Data-Flow Analyses in Response to Incremental Program Changes
"... Most application code evolves incrementally, and especially so when being maintained after the applications have been deployed. Yet, most data-flow analyses do not take advantage of this fact. Instead they require clients to recompute the entire analysis even if little code has changed—a time consum ..."
Abstract
- Add to MetaCart
(Show Context)
Most application code evolves incrementally, and especially so when being maintained after the applications have been deployed. Yet, most data-flow analyses do not take advantage of this fact. Instead they require clients to recompute the entire analysis even if little code has changed—a time consuming undertaking, especially with large libraries or when running static analyses often, e.g., on a continuous-integration server. In this work, we present Reviser, a novel approach for automatically and efficiently updating inter-procedural dataflow analysis results in response to incremental program changes. Reviser follows a clear-and-propagate philosophy, aiming at clearing and recomputing analysis information only where required, thereby greatly reducing the required computational effort. The Reviser algorithm is formulated as an extension to the IDE framework for Inter-procedural Finite Distributed Environment problems and automatically updates arbitrary IDE-based analyses. We have implemented Reviser as an open-source extension to the Heros IFDS/IDE solver and the Soot program-analysis framework. An evaluation of Reviser on various client analyses and target programs shows performance gains of up to 80 % in comparison to a full recomputation. The experiments also show Reviser to compute the same results as a full recomputation on all instances tested.