Results 1 -
8 of
8
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 compile-time optimisation. The algorithm shown here incorporates optimisations taken from deductive database fixpo ..."
Abstract
-
Cited by 96 (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 compile-time optimisation. The algorithm shown here incorporates optimisations taken from deductive database fixpoint algorithms and efficient bottom-up 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 query-answer 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 left-to-right to improve precision further. We give performance results for our procedure on a range of programs. 1
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 ...
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 ...
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 general-purpose transformations, are comparable to those obtained in [20] by a special-purpose 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.
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...
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([X---Xs],Ys,[X---Zs]) :- 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 ("specification-based"). 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...

