A polymorphic type system for PROLOG.
Artificial Intelligence
The art of Prolog: advanced programming techniques
The art of Prolog: advanced programming techniques
Foundations of logic programming; (2nd extended ed.)
Foundations of logic programming; (2nd extended ed.)
Denotational and operational semantics for Prolog
Journal of Logic Programming
Automatic mode inference for logic programs
Journal of Logic Programming
Static inference of modes and data dependencies in logic programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Functional computations in logic programs
ACM Transactions on Programming Languages and Systems (TOPLAS)
Improving the execution speed of compiled prolog with modes, clause selection, and determinism
II and Colloquium on Functional and Logic Programming and Specifications (CFLP) on TAPSOFT '87: Advanced Seminar on Foundations of Innovative Software Development
Declarative modeling of the operational behavior of logic languages
Theoretical Computer Science
Pipeline optimizations in and-parallelism by abstract interpretation
Logic programming
Functional dependencies in Horn clause queries
ACM Transactions on Database Systems (TODS)
A practical framework for the abstract interpretation of logic programs
Journal of Logic Programming
A type system for logic program
Journal of Logic Programming
Determinacy analysis for full Prolog
PEPM '91 Proceedings of the 1991 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
PEPM '91 Proceedings of the 1991 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
Communications of the ACM
Abstract interpretation and application to logic programs
Journal of Logic Programming
Deriving descriptions of possible values of program variables by means of abstract interpretation
Journal of Logic Programming
Multiple specialization using minimal-function graph semantics
Journal of Logic Programming
Static analysis of logic programs for independent and parallelism
Journal of Logic Programming
Compile-time derivation of variable dependency using abstract interpretation
Journal of Logic Programming
Proving termination properties of Prolog programs: a semantic approach
Journal of Logic Programming
Global flow analysis as a practical compilation tool
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)
Frameworks for abstract interpretation
Acta Informatica
A bottom-up polymorphic type inference in logic programming
Science of Computer Programming
Software—Practice & Experience
Extracting determinacy in logic programs
ICLP'93 Proceedings of the tenth international conference on logic programming on Logic programming
Experimental evaluation of a generic abstract interpretation algorithm for PROLOG
ACM Transactions on Programming Languages and Systems (TOPLAS)
Combinations of abstract domains for logic programming
POPL '94 Proceedings of the 21st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Mixtus: an automatic partial evaluator for full Prolog
New Generation Computing
An abstract interpretation framework which accurately handles prolog search-rule and the cut
ILPS '94 Proceedings of the 1994 International Symposium on Logic programming
Cardinality analysis of Prolog
ILPS '94 Proceedings of the 1994 International Symposium on Logic programming
Improving abstract interpretations by systematic lifting to the powerset
ILPS '94 Proceedings of the 1994 International Symposium on Logic programming
Reexecution in abstract interpretation of Prolog
Acta Informatica
From logic programming to Prolog
From logic programming to Prolog
Science of Computer Programming
POPL '77 Proceedings of the 4th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory
Denotational Semantics: The Scott-Strachey Approach to Programming Language Theory
POPL '83 Proceedings of the 10th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Precise typing of abstract data type specifications
POPL '83 Proceedings of the 10th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Systematic design of program analysis frameworks
POPL '79 Proceedings of the 6th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
A Backwards Analysis for Compile-time Garbage Collection
ESOP '90 Proceedings of the 3rd European Symposium on Programming
Detecting Determinate Computations by Bottom-up Abstract Interpretation
ESOP '92 Proceedings of the 4th European Symposium on Programming
OLD Resolution with Tabulation
Proceedings of the Third International Conference on Logic Programming
An Abstract Machine for Restricted AND-Parallel Execution of Logic Programs
Proceedings of the Third International Conference on Logic Programming
Static Analysis of Prolog with Cut
LPAR '93 Proceedings of the 4th International Conference on Logic Programming and Automated Reasoning
Systematic Semantic Approximations of Logic Programs
PLILP '90 Proceedings of the 2nd International Workshop on Programming Language Implementation and Logic Programming
Comparing the Galois Connection and Widening/Narrowing Approaches to Abstract Interpretation
PLILP '92 Proceedings of the 4th International Symposium on Programming Language Implementation and Logic Programming
Continuation Semantics for PROLOG with Cut
TAPSOFT '89/CAAP '89 Proceedings of the International Joint Conference on Theory and Practice of Software Development, Volume 1: Advanced Seminar on Foundations of Innovative Software Development I and Colloquium on Trees in Algebra and Programming
The Costs and Benefits of Abstract Interpretation-driven Prolog Optimization
SAS '94 Proceedings of the First International Static Analysis Symposium on Static Analysis
The Impact of Granularity in Abstract Interpretation of Prolog
WSA '93 Proceedings of the Third International Workshop on Static Analysis
WSA '93 Proceedings of the Third International Workshop on Static Analysis
A Novel Derivation Framework For Definite Logic Program
Electronic Notes in Theoretical Computer Science (ENTCS)
A fixed point semantics for logic programs extended with cuts
LOPSTR'02 Proceedings of the 12th international conference on Logic based program synthesis and transformation
Efficient local unfolding with ancestor stacks*
Theory and Practice of Logic Programming
Detecting determinacy in prolog programs
ICLP'06 Proceedings of the 22nd international conference on Logic Programming
Efficient local unfolding with ancestor stacks for full prolog
LOPSTR'04 Proceedings of the 14th international conference on Logic Based Program Synthesis and Transformation
Hi-index | 0.00 |
Abstract interpretation is a general methodology for systematic development of program analyses. An abstract interpretation framework is centered around a parametrized non-standard semantics that can be instantiated by various domains to approximate different program properties. Many abstract interpretation frameworks and analyses for Prolog have been proposed, which seek to extract information useful for program optimization. Although motivated by practical considerations, notably making Prolog competitive with imperative languages, such frameworks fail to capture some of the control structures of existing implementations of the language. In this paper, we propose a novel framework for the abstract interpretation of Prolog which handles the depth-first search rule and the cut operator. It relies on the notion of substitution sequence to model the result of the execution of a goal. The framework consists of (i) a denotational concrete semantics, (ii) a safe abstraction of the concrete semantics defined in terms of a class of post-fixpoints, and (iii) a generic abstract interpretation algorithm. We show that traditional abstract domains of substitutions may easily be adapted to the new framework, and provide experimental evidence of the effectiveness of our approach. We also show that previous work on determinacy analysis, that was not expressible by existing abstract interpretation frameworks, can be seen as an instance of our framework. The ideas developed in this paper can be applied to other logic languages, notably to constraint logic languages, and the theoretical approach should be of general interest for the analysis of many non-deterministic programming languages.