Results 1 - 10
of
12
Static Analysis of Prolog with Cut
- Proceedings of the 4th International Conference on Logic Programmng and Automated Reasoning
, 1993
"... . This paper presents a general approach to the Abstract Interpretation of Prolog programs with cut. In most of previous approaches the cut primitive is merely ignored. Our method consists in trasforming an interpreter for Prolog into an interpreter that computes on abstract values and that performs ..."
Abstract
-
Cited by 7 (2 self)
- Add to MetaCart
. This paper presents a general approach to the Abstract Interpretation of Prolog programs with cut. In most of previous approaches the cut primitive is merely ignored. Our method consists in trasforming an interpreter for Prolog into an interpreter that computes on abstract values and that performs loop-checks by storing all encountered call patterns into a table. In order to guarantee correctness, this tabled interpreter needs information about the sure success of the corresponding concrete computations. Such information, called control information, is used to control the execution of the cuts by the tabled interpreter: a cut is executed only if the control information guarantees that it is also executed at the concrete level, otherwise, the cut is ignored. Control information can be easily added to any abstract domain. Introduction Abstract Interpretation has been successfully developed in recent years for the static analysis of programs. It has been applied to many types of langua...
Polymorphic Type Analysis in Logic Programs by Abstract Interpretation
- Journal of Logic Programming
, 1998
"... INTERPRETATION LUNJIN LU LIX Ecole Polytechnique 91128 Palaiseau Cedex France Abstract In this paper, we first introduce a notion of polymorphic abstract interpretation that formalises a polymorphic analysis as a generalisation of possibly infinitely many monomorphic analyses in the sense that the ..."
Abstract
-
Cited by 6 (4 self)
- Add to MetaCart
INTERPRETATION LUNJIN LU LIX Ecole Polytechnique 91128 Palaiseau Cedex France Abstract In this paper, we first introduce a notion of polymorphic abstract interpretation that formalises a polymorphic analysis as a generalisation of possibly infinitely many monomorphic analyses in the sense that the results of the monomorphic analyses can be obtained as instances of that of the polymorphic analysis. We then present a polymorphic type analysis of logic programs in terms of an abstract domain for polymorphic descriptions of type information and two operators on the abstract domain, namely the least upper bound operator and the abstract unification operator. The abstract domain captures type information more precisely than other abstract domains for similar purposes. The abstract unification operator for the polymorphic type analysis is designed by lifting the abstract unification operator for a monomorphic type analysis in logic programs, which simplifies the proof of the safeness of the...
Type Analysis of Logic Programs in the Presence of Type Definitions
- In Proceedings of the 1995 ACM SIGPLAN Symposium on Partial Evaluation and Semantics-Based program manipulation
, 1995
"... This paper presents an abstract domain and an abstract unification function for type analysis of logic programs with type definitions. Type information is inferred together with sharing and aliasing information. Aliasing information is used to improve the precision of type analysis. 1 Introduction ..."
Abstract
-
Cited by 5 (3 self)
- Add to MetaCart
This paper presents an abstract domain and an abstract unification function for type analysis of logic programs with type definitions. Type information is inferred together with sharing and aliasing information. Aliasing information is used to improve the precision of type analysis. 1 Introduction Prolog is a type-free language. The programmer does not have to specify the types of variables, functions and predicates. This may make it simple to write simple programs. However, it also makes it difficult to debug programs because type errors cannot be detected by Prolog systems. A type error will manifest itself in the form of a wrong result or a missing result rather than an indication of a type violation. There have been many efforts to augment Prolog with type systems in the forms of type checking systems [2, 11, 27] and type analysis systems. Type analysis systems infer types from the text of a program. Some type analysis systems infer a type for the program and the type is meant to ...
Interprocedural Analyses: A Comparison
- Journal of Logic Programming (JLP
, 1999
"... We present a framework for program analysis of languages with procedures which is general enough to allow for a comparison of various approaches to interprocedural analysis. Our framework is based on a small-step operational semantics and subsumes both frameworks for imperative and for logic languag ..."
Abstract
-
Cited by 4 (2 self)
- Add to MetaCart
We present a framework for program analysis of languages with procedures which is general enough to allow for a comparison of various approaches to interprocedural analysis. Our framework is based on a small-step operational semantics and subsumes both frameworks for imperative and for logic languages. We consider reachability analysis, that is, the problem of approximating the sets of program states reaching program points. We use our framework in order to clarify the impact of several independent design decisions on the precision of the analysis. Thus, we compare intraprocedural forward accumulation with intraprocedural backward accumulation. Furthermore, we consider both relational and functional approaches. While for relational analysis the accumulation strategy makes no difference in precision, we prove for functional analysis that forward accumulation may lose precision against backward accumulation. Concerning the relative precision of relational analyses and corresponding funct...
Cousot: On Abstraction
- in Software Verification. Proc. of the CAV
, 2002
"... struction of semantics-based Abstract interpretation program is analysis a theory algorithms of semantics (sometimes approximation called which \data is ow ..."
Abstract
-
Cited by 3 (1 self)
- Add to MetaCart
struction of semantics-based Abstract interpretation program is analysis a theory algorithms of semantics (sometimes approximation called which \data is ow
Techniques for Preventing Recomputation in Logic Programs
"... In this thesis we investigate techniques for preventing recomputation in the execution of logic programs. One can reduce recomputation by eliminating subquery redundancy. This can be achieved by storing intermediate results, which are shared between identical subqueries. This is known as the tabulat ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
In this thesis we investigate techniques for preventing recomputation in the execution of logic programs. One can reduce recomputation by eliminating subquery redundancy. This can be achieved by storing intermediate results, which are shared between identical subqueries. This is known as the tabulation technique. We consider top-down evaluation procedures incorporating a tabulation or `lemmatization' mechanism and also bottom-up evaluation with goal orientation, as exemplified by the `magic sets' transformation. By assessing these two forms of evaluation and by pointing out some relationships between them we proceed towards a recomputation-free evaluation. Several top-down evaluation strategies that use tabulation have been proposed in the literature. However, all of these mechanisms suffer from recomputation whenever new queries require sets of solutions that are partially computed and stored in the tables. This type of recomputation emerges simply because the top-down evaluator fails...
A Type-Based Debugging Tool for Untyped Logic Languages
- In: M.Fromherz, A.Kusalik, ��.Nytr�� and St.Prestwich (eds.): Proc. ICLP'95 Workshop on Logic Programming Environments
, 1995
"... This paper presents a method for debugging type errors in untyped logic programs by generating type information based on abstract interpretation with OLDT resolution. The notion "type" is extended to enable the phenomena in logic programs to be described more precisely. The classes Single Types and ..."
Abstract
-
Cited by 1 (1 self)
- Add to MetaCart
This paper presents a method for debugging type errors in untyped logic programs by generating type information based on abstract interpretation with OLDT resolution. The notion "type" is extended to enable the phenomena in logic programs to be described more precisely. The classes Single Types and Collected Types are introduced. An extended OLDT resolution performs combination of derived single types to collected types. Application of the different types for debugging unmodular and modular logic programs is discussed, and an extension of the module interface format proposed. 1 Introduction Having the opportunity to use untyped logic languages is very convenient for the programmer. However, this freedom has some disadvantages, too: Prolog, for example, allows for subtle errors 1 which are hard to locate and often require an expensive debugging process. If, on the other hand, a type system were at hand, most of these errors could be detected at compile time. In this paper we describe...
A non-magical set-oriented method for Datalog
"... This paper presents a new algorithm for query evaluation for datalog. The algorithm is set-oriented as it uses sets to constraint the arguments of the related rules and the subgoals generated. The nature of the algorithm is top-down with memorization, which captures the fixed-point idea behind the b ..."
Abstract
- Add to MetaCart
This paper presents a new algorithm for query evaluation for datalog. The algorithm is set-oriented as it uses sets to constraint the arguments of the related rules and the subgoals generated. The nature of the algorithm is top-down with memorization, which captures the fixed-point idea behind the bottom-up approach. We show that the algorithm is computationally efficient, it generates only relevant facts as in the top-down approach, but always terminates and avoids repeated derivation of the same facts. It achieves equal or better performance than the generalized magic sets method in frequently quoted examples, and typically uses less storage. 1 Introduction Deductive databases have been investigated for quite a number of years and general overviews can be found in [GMN84, RU95]. One of the major tasks of a deductive database is query answering. Many query evaluation methods have been proposed. These evaluation methods can be divided into three categories: top-down approaches, bottom...
Subsumption-oriented Push-Down Automata
"... . This paper presents Subsumption--oriented Push--Down Automata (SPDA), a very general stack formalism used to describe forest ("AND-- OR" tree) traversals. These automata may be used for parsing or the interpretation of logic programs. SPDA allow a Dynamic Programming execution which breaks computa ..."
Abstract
- Add to MetaCart
. This paper presents Subsumption--oriented Push--Down Automata (SPDA), a very general stack formalism used to describe forest ("AND-- OR" tree) traversals. These automata may be used for parsing or the interpretation of logic programs. SPDA allow a Dynamic Programming execution which breaks computations into combinable, sharable and storable sub--computations. They provide computation sharing and operational completeness and solves some of the problems posed by the usual depth--first, left--to--right traversals (as implemented in PROLOG). We give an axiomatization of SPDA and two examples of their use: the evaluation of logic programs and parsing with Tree Adjoining Grammars. SPDA may also serve in other areas such as Constraint Logic Programming, Abstract Interpretations, or Contextual parsing. 1 Introduction The Push--Down Automaton (PDA) is a well--known machine that uses single stack operations for context--free parsing. B.Lang proposed in [Lan74] a technique extending Dynamic P...

