Results 1  10
of
10
Fast and Precise Regular Approximation of Logic Programs
, 1993
"... A practical procedure for computing a regular approximation of a logic program is given. Regular approximations are useful in a variety of tasks in debugging, program specialisation and compiletime optimisation. The algorithm shown here incorporates optimisations taken from deductive database fixpo ..."
Abstract

Cited by 99 (19 self)
 Add to MetaCart
A practical procedure for computing a regular approximation of a logic program is given. Regular approximations are useful in a variety of tasks in debugging, program specialisation and compiletime optimisation. The algorithm shown here incorporates optimisations taken from deductive database fixpoint algorithms and efficient bottomup abstract interpretation techniques. Frameworks for defining regular approximations have been put forward in the past, but the emphasis has usually been on theoretical aspects. Our results contribute mainly to the development of effective analysis tools that can be applied to large programs. Precision of the approximation can be greatly improved by applying queryanswer transformations to a program and a goal, thus capturing some argument dependency information. A novel technique is to use transformations based on computation rules other than lefttoright to improve precision further. We give performance results for our procedure on a range of programs. 1
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 12 (9 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...
Regular Approximations of Logic Programs and Their Uses
, 1992
"... Regular approximations of logic programs have a variety of uses, including static analysis for debugging, program specialisation, and machine learning. An algorithm for computing a regular approximation of a normal program is given, and some applications are discussed. The analysis of a “magic set ” ..."
Abstract

Cited by 9 (5 self)
 Add to MetaCart
Regular approximations of logic programs have a variety of uses, including static analysis for debugging, program specialisation, and machine learning. An algorithm for computing a regular approximation of a normal program is given, and some applications are discussed. The analysis of a “magic set ” style of transformation of a program P can be used to derive more precise approximations than can be obtained from P itself. The approximation algorithm given here can also be applied to Prolog programs. 2 1
Analysis and Transformation of Proof Procedures
, 1994
"... Automated theorem proving has made great progress during the last few decades. Proofs of more and more difficult theorems are being found faster and faster. However, the exponential increase in the size of the search space remains for many theorem proving problems. Logic program analysis and transfo ..."
Abstract

Cited by 8 (2 self)
 Add to MetaCart
Automated theorem proving has made great progress during the last few decades. Proofs of more and more difficult theorems are being found faster and faster. However, the exponential increase in the size of the search space remains for many theorem proving problems. Logic program analysis and transformation techniques have also made progress during the last few years and automated theorem proving can benefit from these techniques if they can be made applicable to general theorem proving problems. In this thesis we investigate the applicability of logic program analysis and transformation techniques to automated theorem proving. Our aim is to speed up theorem provers by avoiding useless search. This is done by detecting and deleting parts of the theorem prover and theory under consideration that are not needed for proving a given formula. The analysis and transformation techniques developed for logic programs can be applied in automated theorem proving via a programming technique called ...
Type Analysis of Logic Programs in the Presence of Type Definitions
 In Proceedings of the 1995 ACM SIGPLAN Symposium on Partial Evaluation and SemanticsBased 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 8 (6 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 typefree 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 ...
Logic program specialisation with deletion of useless clauses
 In Proceedings of the 1993 International Symposium on Logic Programming
, 1993
"... In this paper we describe a method of program specialisation and give an extended example of its application to specialisation of a refutation proof procedure for rst order logic. In the specialisation method, a partial evaluation of the proof procedure with respect to a given theory is rst obtained ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
In this paper we describe a method of program specialisation and give an extended example of its application to specialisation of a refutation proof procedure for rst order logic. In the specialisation method, a partial evaluation of the proof procedure with respect to a given theory is rst obtained. Secondly an abstract interpretation of the partially evaluated program is computed, and this is used to detect and remove clauses that yield no solutions (useless clauses). A proof is given that such clauses can be deleted from a normal program while preserving the results of all nite computations. The model elimination proof procedure described in [20] is specialised with respect to given theories, and the negative ancestor check inference rule can be eliminated in cases where it is not relevant. Our results for the model elimination prover, obtained by generalpurpose transformations, are comparable to those obtained in [20] by a specialpurpose analysis. It is shown that specialisations of the proof procedure can be achieved that cannot be obtained by partial evaluation. The method is applicable to any normal program, and thus provides an extension of the power of partial evaluation.
Subsumptionoriented PushDown Automata
"... . This paper presents Subsumptionoriented PushDown 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 Subsumptionoriented PushDown 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 subcomputations. They provide computation sharing and operational completeness and solves some of the problems posed by the usual depthfirst, lefttoright 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 PushDown Automaton (PDA) is a wellknown machine that uses single stack operations for contextfree parsing. B.Lang proposed in [Lan74] a technique extending Dynamic P...
Tabled Logic Programs: Principles, Practice and Applications
, 1996
"... Compilation (e.g., see [35, 53])  From a given source (concrete) program, obtain an abstract program.  Concrete semantics of abstract program j abstract semantics of concrete program.  Evaluate abstract program using some complete evaluation strategy. 34 Applications: Program Analysis ..."
Abstract
 Add to MetaCart
Compilation (e.g., see [35, 53])  From a given source (concrete) program, obtain an abstract program.  Concrete semantics of abstract program j abstract semantics of concrete program.  Evaluate abstract program using some complete evaluation strategy. 34 Applications: Program Analysis Example: Groundness Analysis (from [25]) append([],Ys,Ys). append([XXs],Ys,[XZs]) : append(Xs,Ys,Zs). + gappend(g,Y,Y). gappend(X1,Ys,Z1) : iff(X1,X,Xs), iff(Z1,X,Zs), gappend(Xs,Ys,Zs). iff(g,g,g). iff(n,n,n). iff(n,n,g). iff(n,g,n). ffl Elegance of formulation ("specificationbased"). ffl Ease of implementation. ffl Applies to imperative [85], functional [31] and logic [25] program analysis. ffl Efficient enough for simple logic and functional program analysis [31] to be put in compilers. 35 Applications: Program Analysis Semantic equations can be expressed as metaprograms Example: While programs interp( S 1 ; S 2 ) ? interp(S 1), interp(S 2). interp( if E then...
J. LOGIC PROGRAMMING 1994:19, 20:1–679 1 POLYMORPHIC TYPE ANALYSIS IN LOGIC PROGRAMS BY ABSTRACT INTERPRETATION 1
"... 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 polymorp ..."
Abstract
 Add to MetaCart
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 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 polymorphic type analysis. Some experimental results with a prototype implementation of the polymorphic type analysis are also presented. 1.
Deriving Abstract Semantics for Forward Analysis of Normal Logic Programs ∗
, 1998
"... The problem of forward abstract interpretation of normal logic programs has not been formally addressed in the literature although negation as failure is dealt with through the builtin predicate! in the way it is implemented in Prolog. This paper proposes a solution to this problem by deriving two ..."
Abstract
 Add to MetaCart
The problem of forward abstract interpretation of normal logic programs has not been formally addressed in the literature although negation as failure is dealt with through the builtin predicate! in the way it is implemented in Prolog. This paper proposes a solution to this problem by deriving two generic fixedpoint abstract semantics F ♭ P and F ⋄ P for forward abstract interpretation of normal logic programs. F ♭ P is intended for inferring data descriptions for edges in the program graph where an edge denotes the possibility that the control of execution transfers from its source program point to its destination program point. F ⋄ P is derived from F ♭ P and is intended for inferring data descriptions for textual program points. 1