Publication | Open Access
Denotational abstract interpretation of logic programs
73
Citations
42
References
1994
Year
EngineeringLogic ProgramsWell-founded SemanticsSemanticsSoftware AnalysisFormal VerificationLogic ProgrammingLanguage StudiesLogic-programming LanguagesProgramming LanguagesFormal LogicAbstract InterpretationComputer ScienceDescription LogicsData-flow AnalysisAutomated ReasoningProgram AnalysisDescription LogicFormal MethodsGeneric Data-flow Analysis
Logic-programming languages are based on a principle of separation “logic” and “control.”. This means that they can be given simple model-theoretic semantics without regard to any particular execution mechanism (or proof procedure, viewing execution as theorem proving). Although the separation is desirable from a semantical point of view, it makes sound, efficient implementation of logic-programming languages difficult. The lack of “control information” in programs calls for complex data-flow analysis techniques to guide execution. Since data-flow analysis furthermore finds extensive use in error-finding and transformation tools, there is a need for a simple and powerful theory of data-flow analysis of logic programs. This paper offers such a theory, based on F. Nielson's extension of P. Cousot and R. Cousot's abstract interpretation . We present a denotational definition of the semantics of definite logic programs. This definition is of interest in its own right because of its compactness. Stepwise we develop the definition into a generic data-flow analysis that encompasses a large class of data-flow analyses based on the SLD execution model. We exemplify one instance of the definition by developing a provably correct groundness analysis to predict how variables may be bound to ground terms during execution. We also discuss implementation issues and related work.
| Year | Citations | |
|---|---|---|
Page 1
Page 1