Negation and control in Prolog
Negation and control in Prolog
Foundations of deductive databases and logic programming
Journal of Logic Programming
I-structures: data structures for parallel computing
ACM Transactions on Programming Languages and Systems (TOPLAS)
Recursive query processing: the power of logic
Theoretical Computer Science
Strand: new concepts in parallel programming
Strand: new concepts in parallel programming
A practical framework for the abstract interpretation of logic programs
Journal of Logic Programming
Parallel logic programming
On derived dependencies and connected databases
Journal of Logic Programming
Abstract interpretation for concurrent logic languages
Proceedings of the 1990 North American conference on Logic programming
The CLP( R ) language and system
ACM Transactions on Programming Languages and Systems (TOPLAS)
Abstract interpretation and application to logic programs
Journal of Logic Programming
A general framework for semantics-based bottom-up abstract interpretation of logic programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Control generation for logic programs
ICLP'93 Proceedings of the tenth international conference on logic programming on Logic programming
QD-Janus: a sequential implementation of Janus in Prolog
Software—Practice & Experience
Precise and efficient groundness analysis for logic programs
ACM Letters on Programming Languages and Systems (LOPLAS)
Suspension analyses for concurrent logic programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Analyzing logic programs with dynamic scheduling
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Reexecution in abstract interpretation of Prolog
Acta Informatica
A blackboard approach to parallel temporal tableaux
AIMSA '94 Proceedings of the sixth international conference on Artificial intelligence : methodology, systems, applications: methodology, systems, applications
A unifying view of abstract domain design
ACM Computing Surveys (CSUR)
A logical model for relational abstract domains
ACM Transactions on Programming Languages and Systems (TOPLAS)
Two classes of Boolean functions for dependency analysis
Science of Computer Programming
The powerset operator on abstract interpretations
Theoretical Computer Science
Communications of the ACM
Foundations of Logic Programming
Foundations of Logic Programming
On proving left termination of constraint logic programs
ACM Transactions on Computational Logic (TOCL)
OLD Resolution with Tabulation
Proceedings of the Third International Conference on Logic Programming
Abstract Interpretation of Prolog Programs
Proceedings of the Third International Conference on Logic Programming
Positive Boolean Functions as Multiheaded Clauses
Proceedings of the 17th International Conference on Logic Programming
Pos(T): Analyzing Dependencies in Typed Logic Programs
PSI '02 Revised Papers from the 4th International Andrei Ershov Memorial Conference on Perspectives of System Informatics: Akademgorodok, Novosibirsk, Russia
Memoing Evaluation by Source-to-Source Transformation
LOPSTR '95 Proceedings of the 5th International Workshop on Logic Programming Synthesis and Transformation
Random 3-SAT and BDDs: The Plot Thickens Further
CP '01 Proceedings of the 7th International Conference on Principles and Practice of Constraint Programming
Distributed WWW programming using (Ciao-)Prolog and the PiLLoW library
Theory and Practice of Logic Programming
Inferring termination conditions for logic programs using backwards analysis
Theory and Practice of Logic Programming
Checking modes of HAL programs
Theory and Practice of Logic Programming
A backward analysis for constraint logic programs
Theory and Practice of Logic Programming
Termination analysis of logic programs through combination of type-based norms
ACM Transactions on Programming Languages and Systems (TOPLAS)
Control Generation by Program Transformation
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 2
Goal-independent suspension analysis for logic programs with dynamic scheduling
ESOP'03 Proceedings of the 12th European conference on Programming
Agent-oriented programming: from prolog to guarded definite clauses
Agent-oriented programming: from prolog to guarded definite clauses
Hi-index | 0.00 |
A logic program consists of a logic component and a control component. The former is a specification in predicate logic whereas the latter defines the order of subgoal selection. The order of subgoal selection is often controlled with delay declarations that specify that a subgoal is to suspend until some condition on its arguments is satisfied. Reasoning about delay declarations is notoriously difficult for the programmer and it is not unusual for a program and a goal to reduce to a state that contains a subgoal that suspends indefinitely. Suspending subgoals are usually unintended and often indicate an error in the logic or the control. A number of abstract interpretation schemes have therefore been proposed for checking that a given program and goal cannot reduce to such a state. This article considers a reversal of this problem, advocating an analysis that for a given program infers a class of goals that do not lead to suspension. This article shows that this more general approach can have computational, implementational and user-interface advantages. In terms of user-interface, this approach leads to a lightweight point-and-click mode of operation in which, after directing the analyser at a file, the user merely has to inspect the results inferred by the analysis. In terms of implementation, the analysis can be straightforwardly realized as two simple fixpoint computations. In terms of computation, by modeling n! different schedulings of n subgoals with a single Boolean function, it is possible to reason about the suspension behavior of large programs. In particular, the analysis is fast enough to be applied repeatedly within the program development cycle. The article also demonstrates that the method is precise enough to locate bugs in existing programs.