Deriving Analysers by Folding/Unfolding of Natural Semantics and a Case Study: Slicing
نویسنده
چکیده
We consider speciications of analysers expressed as compositions of two functions: a semantic function, which returns a natural semantics derivation tree, and a property deened by recurrence on derivation trees. A recursive deenition of a dynamic analyser can be obtained by fold/unfold program transformation combined with deforestation. We apply our framework to the derivation of a slicing analysis for a logic programming language. DDrivation d'analyseurs partir d'une ssmantique naturelle par pliage/ddpliage, application l'analyse d''lagage RRsumm : Nous considdrons la spciication d'un analyseur comme la composition de deux fonc-tions : une fonction ssmantique, qui rend un arbre de ddrivation de la ssmantique naturelle, et une propriitt dddnie par rrcurrence sur les arbres de ddrivation. Une dddnition rrcursive d'un analyseur dynamique peut tre obtenue par des transformations de programmes (pliage/ddpliage), combinne avec des techniques de ddforestation. Nous appliquons notre cadre ggnnrique la ddrivation d'une analyse d''lagage pour un langage de programmation logique. preuve, analyse d''lagage. Deriving analysers by folding/unfolding of natural semantics and a case study: slicing 3
منابع مشابه
Learning of Constraint Logic Programs by Combining Unfolding and Slicing Techniques
This paper discusses learning of Constraint Logic Programs using unfolding and slicing technique. The transformation rule for unfolding together with clause removal is a method for specialization of Logic Programs. Slicing is a program analysis technique originally developed for imperative languages. It facilitates the understanding of data flow and debugging. This paper formulates the semantic...
متن کاملSafe Folding/Unfolding with Conditional Narrowing
Functional logic languages with a complete operational semantics are based on narrowing, a generalization of term rewriting where unification replaces matching. In this paper, we study the semantic properties of a general transformation technique called unfolding in the context of functional logic languages. Unfolding a program is defined as the application of narrowing steps to the calls in th...
متن کاملUnfold/Fold Transformations For Definite Clause Programs
An unfold/fold program transformation system which extends the unfold/fold transformations of H. Tamaki and T. Sato is presented in this paper. The system consists of unfolding, simultaneous folding , and generalization + equality introduction rules. The simultaneous folding rule permits the folding of a set of folded clauses into a single clause, using a set of folding clauses, while the gener...
متن کاملAn Automatic Composition Algorithm
Functional logic languages with a complete operational semantics are based on narrowing, which combines the instantiation of variables with the reduction of expressions. In this paper, we investigate the relationship between partial evaluation and more general transformations based on folding/unfolding. First, we show that the transformations obtained by partial evaluators can be also achieved ...
متن کاملDynamic Dependence in Term rewriting Systems and its Application to Program Slicing
Program slicing is a useful technique for debugging, testing, and analyzing programs. A program slice consists of the parts of a program that (potentially) affect the values computed at some point of interest. With rare exceptions, program slices have hitherto been computed and defined in ad-hoc and language-specific ways. The principal contribution of this paper is to show that general and sem...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 1998